블로그 이미지
Every unexpected event is a path to learning for you. blueasa

카테고리

분류 전체보기 (2794)
Unity3D (852)
Programming (478)
Server (33)
Unreal (4)
Gamebryo (56)
Tip & Tech (185)
협업 (11)
3DS Max (3)
Game (12)
Utility (68)
Etc (98)
Link (32)
Portfolio (19)
Subject (90)
iOS,OSX (55)
Android (14)
Linux (5)
잉여 프로젝트 (2)
게임이야기 (3)
Memories (20)
Interest (38)
Thinking (38)
한글 (30)
PaperCraft (5)
Animation (408)
Wallpaper (2)
재테크 (18)
Exercise (3)
나만의 맛집 (3)
냥이 (10)
육아 (16)
Total
Today
Yesterday

http://rosettacode.org/wiki/Category:Programming_Tasks

예를 들어, c++에서 자주 쓰던 함수가 있는데, MaxScript에서는 어떻게 해야 될지 모르겠다.
그럴 때 유용한 사이트입니다.


출처 : 
http://lab.gamecodi.com/board/zboard.php?id=GAMECODILAB_Lecture&page=1&page_num=35&select_arrange=last_comment&desc=desc&sn=off&ss=on&sc=on&keyword=&no=253&category=

반응형
Posted by blueasa
, |

keybd_event (user32)

Programming/C# / 2012. 5. 21. 11:48

KEYEVENTF_KEYUP 상수 찾다가 발견..


도움 될 것 같아서 퍼옴..



Summary
This function is useful to simulate Key presses to the window with focus.

It will return a value of false, if there is an error simulating the key press.

C# Signature:

[DllImport("user32.dll")]
static extern void keybd_event(byte bVk, byte bScan, uint dwFlags,
   UIntPtr dwExtraInfo);

or

[DllImport("user32.dll")]
static extern void keybd_event(byte bVk, byte bScan, uint dwFlags,
   int dwExtraInfo);

VB Signature:

<DllImport("user32.dll", CallingConvention:=CallingConvention.StdCall, _
           CharSet:=CharSet.Unicode, EntryPoint:="keybd_event", _
           ExactSpelling:=True, SetLastError:=True)> _
Public Shared Function keybd_event(ByVal bVk As Byte, ByVal bScan As Byte, _
                              ByVal dwFlags As Int32, ByVal dwExtraInfo As Int32) As Boolean
End Function

User-Defined Types:

None

Notes:

None.

Tips & Tricks:

This function is useful to simulate Key presses (for input use the virtual keycodes from http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/WinUI/WindowsUserInterface/UserInput/VirtualKeyCodes.asp or windows CE universal core virtual key code compact charthttp://msdn2.microsoft.com/en-us/library/ms927178.aspx ).

Use FindWindow and SetForegroundWindow to direct input to the desired window.

Note
WaitForInputIdle (Warning this will only wait once! See Raymond Chen's Blog Post http://blogs.msdn.com/b/oldnewthing/archive/2010/03/25/9984720.aspx ), or a Sleep may be required to assure Window is ready for input:

  RUN('NOTEPAD.EXE')
  Sleep(2000,0)
  SetForegroundWindow (FindWindow('Untitled - Notepad'))

(see also VkKeyScan):

    void PressKey( byte keyCode )
    {
        const int KEYEVENTF_EXTENDEDKEY = 0x1;
        const int KEYEVENTF_KEYUP       = 0x2;
        keybd_event( keyCode, 0x45, KEYEVENTF_EXTENDEDKEY, 0 );
        keybd_event( keyCode, 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0 );
    }

Sample Code:

VB Sample:

This sample will generate a 'Scroll Lock' key press event when the user clicks 'Button1'.

  • Create a new Windows Application project;
  • Drop a button control in the recently created form;
  • Add the following code to the form class:

Imports System.Runtime.InteropServices

Public Class Form1

    <DllImport("user32.dll", CallingConvention:=CallingConvention.StdCall, _
           CharSet:=CharSet.Unicode, EntryPoint:="keybd_event", _
           ExactSpelling:=True, SetLastError:=True)> _
    Public Shared Sub keybd_event(ByVal bVk As Byte, ByVal bScan As Byte, _
                                  ByVal dwFlags As Integer, ByVal dwExtraInfo As Integer) As Boolean
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Const VK_SCROLL As Byte = &H91
        Const KEYEVENTF_KEYUP As Byte = &H2

        keybd_event(VK_SCROLL, 0, 0, 0)               ' Generates a KEY_DOWN
        keybd_event(VK_SCROLL, 0, KEYEVENTF_KEYUP, 0) ' Generates a KEY_UP

    End Sub

End Class

Please add some more!

Alternative Managed API: System.Windows.Forms.SendKeys

Documentation
keybd_event on MSDN

PROBLEM: How do i use combination of shift and tab keys at the same time ?

Answer:posted by dokks http://www.ravensmyst.com

define the shift key as a const

    public const byte VK_LSHIFT= 0xA0; // left shift key
    public const byte VK_TAB = 0x09;
    public const int KEYEVENTF_EXTENDEDKEY = 0x01;
    public const int KEYEVENTF_KEYUP = 0x02;

    //press the shift key
    keybd_event(VK_LSHIFT, 0x45, 0, 0);

    //press the tab key
    keybd_event(VK_TAB, 0x45, 0, 0);

    //release the tab key
    keybd_event(VK_TAB, 0x45, KEYEVENTF_KEYUP, 0);

    //release the shift key
    keybd_event(VK_LSHIFT, 0x45, KEYEVENTF_KEYUP, 0);

I'm using this to create automated UI testing for a custom Textbox control. After a lot of trial and error the following code worked well for me.

    public partial class Form2 : Form
    {
    [DllImport("user32.dll", SetLastError = true)]
    static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, UIntPtr dwExtraInfo);

    Keys[] numberKeys = new Keys[10] { Keys.D0, Keys.D1, Keys.D2, Keys.D3, Keys.D4, Keys.D5, Keys.D6, Keys.D7, Keys.D8, Keys.D9 };

    void PressKey(Keys key)
    {
        const int KEYEVENTF_EXTENDEDKEY = 0x1;
        const int KEYEVENTF_KEYUP = 0x2;
        // I had some Compile errors until I Casted the final 0 to UIntPtr like this...
        keybd_event((byte)key, 0x45, KEYEVENTF_EXTENDEDKEY, (UIntPtr)0);
        keybd_event((byte)key, 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, (UIntPtr)0);
    }

    void PressKeyArray(Keys[] keys)
    {
        foreach (Keys key in keys)
        {
        PressKey(key);
        }
    }

    private void Compare(object sender, string expected, string actual)
    {
        Button ClickedButton = (Button)sender;

        if (expected == actual)
        ClickedButton.Text = "Pass";
        else
        ClickedButton.Text = "Fail";
    }

    private void buttonNumericAccept_Click(object sender, EventArgs e)
    {
        string expected = "0123456789";

        NumericTextbox.AcceptNumeric = true;

        //
        // Send Appropriate Key Presses
        //
        NumericTextbox.Focus();
        PressKeyArray(numberKeys);
        Application.DoEvents();

        // Process Results        
        Compare(sender, expected, NumericTextbox.Text);        
    }
    }



출처 : http://www.pinvoke.net/default.aspx/user32.keybd_event

반응형
Posted by blueasa
, |

When you want to set a timer working with GUI, you always come across threading problem. In such scenario, .Net indeed makes programmers life easier. It only matters that you choose the right timer to use.


In Win Form, you need to use System.Windows.Forms.Timer.


In WPF, the one is System.Windows.Threading.DispatcherTimer.


Here is a simple sample code for DispatcherTimer.


{

DispatcherTimer timer = new DispatcherTimer();

timer.Interval = TimeSpan.FromMilliseconds(someInterval);

timer.Tick += new EventHandler(someEventHandler);

timer.Start();

}


{

private void someEventHandler(Object sender, EventArgs args)

{

some operations

//if you want this event handler executed for just once

// DispatcherTimer thisTimer = (DispatcherTimer)sender;

// thisTimer.Stop();

}


P.S.


For general purpose, you can use System.Threading.Timer.


For server-based purpose, System.Timers.Timer can be the right choice.



출처 : http://wangmo.wordpress.com/2007/09/07/dispatchertimer-in-wpf/

반응형
Posted by blueasa
, |

WPF가 C#이랑은 참조하는 게 약간 달라서 적어놔야겠다.


간단하게 리스트로 계속 추가해 나가야겠음.


- DllImport

using System.Runtime.InteropServices;


- ArrayList

using System.Collections;


- DispatcherTimer

using System.Windows.Threading;

반응형
Posted by blueasa
, |

게임 컨텐츠란..?

Etc / 2012. 5. 19. 18:01


GAME_INDUSTRY.ppt



게임에서 말하는 컨텐츠(Contents)라는 단어의 대략적인 의미는 이해하겠는데..


정확한 정의가 무엇인지 궁금해서 이리저리 검색하고 돌아다니다가 [GAME INDUSTRY] 자료를 하나 찾았다.

(링크 : cc.kangwon.ac.kr/~kimoon/ce/ce-052/p-07.ppt)


ppt 자료에 게임컨텐츠에 대한 정의가 있길래 옮겨 적고 링크 남겨봄..



1) 게임컨텐츠란?

     컴퓨터 프로그램을 이용하여 움직이는 영상이나 지정된 텍스트로 양방향 커뮤니케이션을 통해 미리 정해진 스토리의 게임을 사용자가 해결해 나가며, 그에 따른 오락적 감흥을 느끼게 하는 대중문화 상품을 의미한다.

반응형
Posted by blueasa
, |


윈도우에서 여러 파일 선택할 때 보통 Ctrl키와 Shift키를 콤보로 이용하지만 간혹 가다 손이 미끄러지는 등의 실수로 잘못 클릭해 처음부터 다시 파일을 선택해야 하는 경우가 있죠. 이런 경험이 종종 있으시다면 윈도우 7이나 비스타에서 폴더 옵션의 ‘보기’ 탭으로 가서 ‘확인란을 사용하여 항목 선택’에 체크해 보세요.


2011-04-08_192933 



그럼 이렇게 파일이나 폴더 위에 마우스를 올리면 체크박스가 나타나 편하게 파일을 선택할 수 있습니다. 물론 파일을 클릭해 체크박스를 체크하는 게 아니라 직접 체크박스를 클릭해 체크를 해야 Ctlrl/Shift 키 도움 없이 여러 파일을 선택할 수 있고요.. ^^;



2011-04-08_193956



출처 : http://www.webchobo.com/1504

반응형
Posted by blueasa
, |

어제부터 이상하게 구글이..


그것도 일부만 접속이 안돼서 바이러스인가? 악성코드인가? 하면서 종일 삽질했다.


접속되는 곳 : google.co.kr, 구글검색, 구글이미지, 구글뉴스, etc


접속안되는 곳 : google.com, 유튜브, 구글지도, etc


대략 확인한 건 이정도..


구글 안에서도 되는곳이 있고 안되는 곳이 있어서 감이 안잡혀서 열라게 검색을 하다가


힌트가 될만한 곳(http://blog.naver.com/karitasnav/100155561842) 발견..


DNS 문제로 구글을 접속 못하다가 DNS 고쳐서 접속 됐다는 사람 발견.. -_-!


한두달쯤 전 DNS 바꾼 기억이 있어서, 내 DNS와 옆자리 동생의 DNS를 비교했더니 


옆자리 동생은 이전 DNS를 사용하고 있고, 위에 내가 접속 못한다고 한 곳을 모두 접속하고 있었다.


그래서 DNS를 옆자리 동생과 같게 이전 DNS로 수정하고 리붓해서 테스트하니 잘된다.


삽질의 하루였지만 그래도 이유를 알아서 괜찮은 듯..




[요약]

OS : Win7 x64


1. 일부 사이트(google.com 이라던지..)를 접속 못할 경우 DNS도 의심 해보자.


2. DNS 수정 후엔 리붓하자.(리붓 안하고, '사용안함->사용' 했더니 적용이 안됨..)



반응형
Posted by blueasa
, |

다른 사람과 파일을 공유하는 방법에는 여러가지가 있습니다. 메신저로 파일을 보낼수도 있고, 웹사이트나 파일 공유 서비스에 업로드한 다음 URL을 상대방에게 보내 다운받도록 할 수도 있습니다.
하지만 어떤 방법을 사용하든지 번거로운 점이 있습니다. 메신저로 보낼경우 메신저 서비스 가입, 프로그램 설치, 대화 상대 추가등의 과정이 필요하기 때문에 불편합니다. 여러 사람과 공유할 경우 모두 다 메신저를 사용해야 하기 때문에 더 복잡해 지고 맙니다.

웹사이트나 파일 공유 서비스를 통해서 공유할 경우도 번거롭기는 마찬가지 입니다.
다운로드 하는 시간 이외에 업로드 하는 시간이 필요하기 때문입니다. 파일 용량이 크다면 업로드 하는데에만 상대한 양의 시간을 소모해야만 합니다.


파일 하나 공유하려고 이런 불편함을 꼭 감수해야만 할까 하는 생각이 들어 찾아봤습니다.
위와 같은 불편함을 해소 할 수 있는 파일 공유 방법을 찾을 수 있었는데, 그것은 바로 "Berryz WebShare"를 사용하는 것입니다.

Berryz WebShare는 웹브라우저를 통해 파일과 폴더에 바로 접근할 수 있게 해주는 작은 웹서버 입니다.
설치할 필요없이 개인PC에 압축을 풀고 드래그앤 드롭으로 폴더만 지정해 주면 언제 어디서나 웹브라우저로 바로 접근가능한 파일서버를 구성할 수 있습니다. 설정이 간편한 편이고 국내에서 개발된 프로그램이어서 그런지 한글로된 매뉴얼 웹페이지도 있습니다.

압축을 푼 프로그램 용량도 다 합해서 2.41MB 정도 밖에 안됩니다.




프로그램을 맨 처음 실행하면 위와 같은 화면을 볼 수 있습니다. 꺼짐 버튼을 눌러서 켜짐 상태로 바꾸면 파일공유 웹서버가 시작 됩니다. 환경설정 부분에서 서버 포트 번호, IP 필터링등의 설정을 할 수 있습니다. 공유 추가를 누르거나 직접 드래그앤 드롭해서 놓으면 바로 파일이나 폴더를 공유할 수 있습니다.




드래그앤 드롭으로 공유할 항목을 추가한 모습입니다. 파일이든 폴더든 간에 끌어다 놓기만 하면 바로 공유할 수 있습니다.




환경설정 버튼을 눌러서 들어올 수 있는 설정창의 모습입니다. 보통 인터넷 업체에서 80번 포트로 접속할 수 없도록 막아놓기 때문에 서버란에 있는 포트번호는 꼭 변경해 주셔야 합니다. 외부에서 다른 사람이 웹브라우저로 접속할때는 
"http://파일을 공유중인 컴퓨터의 IP:포트번호"와 같은 형태의 주소로 들어올 수 있게 됩니다.

IP 필터 부분에서 특정 IP의 접근을 제한할 수 있고, 접속제한 부분에서 다운로드 속도/업로드 속도를 제한할 수 있습니다.
계정 부분에선 특정 사용자에 대해 어느 정도의 권한을 허용할지 ID별로 지정할 수 있습니다 (예: 업로드 허용, 폴더 만들기 금지 등)




설정을 마치고 꺼짐 버튼을 눌러서 '켜짐' 상태로 만들면 모든 준비는 끝나게 됩니다. 이제 '주소' 부분에 있는 URL로 여러 사람과 자유롭게 파일을 공유할 수 있습니다.










웹브라우저를 통해 베리즈 웹쉐어 서버 URL에 접속한 모습입니다. (프로그램의 '주소'란에 있는 URL)
폴더나 파일을 따로 보내거나, 혹은 어딘가에 업로드 하느라고 기다릴 필요없이 수 많은 사람과 바로 공유 할 수 있습니다.






항목 속성을 통해 그냥 접속한 사람이나, 혹은 환경설정의 계정 부분에서 만든 ID를 통해 접속한 사람에 대해 권한을 지정할 수도 있습니다. 익명 사용자에 대해 업로드 권한을 체크해서 허용해 두면 누구나 바로 파일을 업로드 하거나 폴더를 만들 수 있게 됩니다.



Berryz WebShare의 특징은 아래와 같습니다:


  • 파일/폴더를 추가하면 바로 공유가 시작되고 웹으로 링크됨
  • 받는쪽은 별도의 프로그램 설치가 필요 없음
  • 모든 파일과 폴더에는 고유 주소가 부여되어 이메일로 보내거나 링크를 포스팅하기 쉬움
  • 공유한 데스크탑의 파일과 폴더는 웹과 링크가 되어있어, 데스크탑에서 변경하면 웹에 바로 반영됨
  • 어떤 종류의 파일이라도 공유 가능
  • 파일 사이즈 제한 없음
  • 폴더를 추가하면 하위 폴더까지 자동으로 포함
  • 권한 설정을 통해 특정 사용자에 대한 권한 지정, 보안 유지.

특히 베리즈 웹쉐어는 국산 프로그램이기 때문에 모든 메뉴와 설정이 한글로 되어 있어서 편하게 사용할 수 있습니다.
프로그램 사용 방법에 대한 간단한 설명은 공식 웹사이트의 따라하기 튜토리얼 문서에서 보실 수 있습니다.

참고: 공유기를 사용하실 경우엔 외부에서 접근할 수 있도록 베리즈 웹쉐어 서버 포트로 '포트 포워딩'을 설정해 주시고, 방화벽을 사용중인 경우엔 꼭 방화벽에서 해당 포트를 열어 주셔야 외부에서 접속할 수 있습니다.



* 컴퓨터의 파일을 바로 공유할 수 있게 해주는 저용량 파일서버, Berryz WebShare 공식 홈페이지:
http://berryz.upnl.org/main.php/


* Berryz WebShare 다운로드 페이지:
http://berryz.upnl.org/main.php/WebShare/Download/


* 저작권 관련 문제로 2011년 4월 현재, 공식 홈페이지에서는 더 이상 프로그램을 배포 하지 않고 있군요. 본문에 다운로드 링크를 추가로 첨부합니다.


반응형
Posted by blueasa
, |



집에와서 뜯어서 한 컷~




뜯어서 모두 펼쳐서 한 컷

반응형

'Interest' 카테고리의 다른 글

일본 다이하츠 코펜 경차사진  (3) 2012.06.05
Introducing the Leap  (0) 2012.05.22
디아블로3 한정판 도착~  (0) 2012.05.16
디아블로3 한정판 구매 성공!!  (0) 2012.05.15
아이폰4S(SKT) 사전예약 완료.  (0) 2011.11.04
Posted by blueasa
, |



우오~!!


집에가서 뜯어야지..

반응형
Posted by blueasa
, |