레이블이 C#인 게시물을 표시합니다. 모든 게시물 표시
레이블이 C#인 게시물을 표시합니다. 모든 게시물 표시

2010년 10월 28일 목요일

윈7폰에서 SQLLite쓰기

모바일에서 자주 사용했었던 SQLLite가 윈7폰에는 빠져 있지요
안드로이드는 내부 DB가 있는데 윈7폰은 빠져서 여기에 불만인 사람들이 많습니다.
MS에서는 자사의 클라우드 서비스를 사용하라고 이야기 합니다만 개발자들이 꼭 시키는대로 따르지는 않죠.

그래서 SQLLite 소스를 C#으로 완전 포팅하여 IsolatedStorage를 사용할수 있게 한게 나왔습니다. (혹 뒷북인가요?;;)
프로젝트에 DLL을 추가하고 약간 잡다한 설정하나 해주면 끝납니다. 단 주의할것은

1) 에뮬레이터 재부팅 하면 DB가 날아갑니다. 에뮬에서는 IsolatedStorage를 리부팅 할때마다 날려버리는듯..
2) IsolatedStorage가 일반 파일 IO보다 매우 느리기 때문에 성능을 기대하긴 어렵습니다.

간단한 DB 트랜잭션이 꼭 필요하다면 사용할만 합니다. 다운로드는 아래에...

WP7 Sqlite

2010년 10월 12일 화요일

어제출시된 따끈한 윈7폰 테스트 (삼성,LG)

출시된 폰들 비됴입니다.

보신분은 패스

 

안보신 분은 함 대충 느껴보세요

손이랑 크기를 비교해보시면 대략 감이 오실것 같습니다.

 

급하신 분들위한 종합버전 ->

 

 

 

 

 

 

 

 

 


 

 

1) 슬쩍 버벅? 대는 옴니아 7폰...

 

 

2) 옵티머스 7

 

3) 포커스 .. 요건 좀 성실히 테스트 해줬네요

 

2010년 9월 10일 금요일

오토마우스 오토키보드 소스

푸 요청으로 올립니다.

옛날에 짠 소스인데... 아래 SendInput  이라는 API 로 마우스/키보드 흉내를 낼수 있습니다.

오토 마우스/ 키보드가 가능하다는 것이지요...

굳이 복잡한 후킹기술 안써도 아래 소스로 충분합니다.

 

 

[code csharp] using System; using System.Runtime.InteropServices; namespace AutoKeyMouseExample { internal class Win32APIs { [DllImport("user32.dll", SetLastError = true)] public static extern uint SendInput(uint nInputs, ref INPUT pInputs, int cbSize); [DllImport("user32.dll")] public static extern IntPtr GetMessageExtraInfo(); [StructLayout(LayoutKind.Sequential)] public struct MOUSEINPUT { public int dx; public int dy; public uint mouseData; public uint dwFlags; public uint time; public IntPtr dwExtraInfo; } [StructLayout(LayoutKind.Sequential)] public struct KEYBDINPUT { public ushort wVk; public ushort wScan; public uint dwFlags; public uint time; public IntPtr dwExtraInfo; } [StructLayout(LayoutKind.Sequential)] public struct HARDWAREINPUT { public uint uMsg; public ushort wParamL; public ushort wParamH; } [StructLayout(LayoutKind.Explicit)] public struct INPUT { [FieldOffset(0)] public int type; [FieldOffset(4)] //* public MOUSEINPUT mi; [FieldOffset(4)] //* public KEYBDINPUT ki; [FieldOffset(4)] //* public HARDWAREINPUT hi; } /***************************** * EVENT CONSTANTS * *****************************/ public const int INPUT_MOUSE = 0; public const int INPUT_KEYBOARD = 1; public const int INPUT_HARDWARE = 2; public const uint KEYEVENTF_EXTENDEDKEY = 0x0001; public const uint KEYEVENTF_KEYUP = 0x0002; public const uint KEYEVENTF_UNICODE = 0x0004; public const uint KEYEVENTF_SCANCODE = 0x0008; public const uint XBUTTON1 = 0x0001; public const uint XBUTTON2 = 0x0002; public const uint MOUSEEVENTF_MOVE = 0x0001; public const uint MOUSEEVENTF_LEFTDOWN = 0x0002; public const uint MOUSEEVENTF_LEFTUP = 0x0004; public const uint MOUSEEVENTF_RIGHTDOWN = 0x0008; public const uint MOUSEEVENTF_RIGHTUP = 0x0010; public const uint MOUSEEVENTF_MIDDLEDOWN = 0x0020; public const uint MOUSEEVENTF_MIDDLEUP = 0x0040; public const uint MOUSEEVENTF_XDOWN = 0x0080; public const uint MOUSEEVENTF_XUP = 0x0100; public const uint MOUSEEVENTF_WHEEL = 0x0800; public const uint MOUSEEVENTF_VIRTUALDESK = 0x4000; public const uint MOUSEEVENTF_ABSOLUTE = 0x8000; /***************************** * VIRTUAL KEYS * *****************************/ public enum VK : ushort { /* * Virtual Keys, Standard Set */ VK_LBUTTON = 0x01, VK_RBUTTON = 0x02, VK_CANCEL = 0x03, VK_MBUTTON = 0x04, /* NOT contiguous with L & RBUTTON */ VK_XBUTTON1 = 0x05, /* NOT contiguous with L & RBUTTON */ VK_XBUTTON2 = 0x06, /* NOT contiguous with L & RBUTTON */ /* * 0x07 : unassigned */ VK_BACK = 0x08, VK_TAB = 0x09, /* * 0x0A - 0x0B : reserved */ VK_CLEAR = 0x0C, VK_RETURN = 0x0D, VK_SHIFT = 0x10, VK_CONTROL = 0x11, VK_MENU = 0x12, VK_PAUSE = 0x13, VK_CAPITAL = 0x14, VK_KANA = 0x15, VK_HANGEUL = 0x15, /* old name - should be here for compatibility */ VK_HANGUL = 0x15, VK_JUNJA = 0x17, VK_FINAL = 0x18, VK_HANJA = 0x19, VK_KANJI = 0x19, VK_ESCAPE = 0x1B, VK_CONVERT = 0x1C, VK_NONCONVERT = 0x1D, VK_ACCEPT = 0x1E, VK_MODECHANGE = 0x1F, VK_SPACE = 0x20, VK_PRIOR = 0x21, VK_NEXT = 0x22, VK_END = 0x23, VK_HOME = 0x24, VK_LEFT = 0x25, VK_UP = 0x26, VK_RIGHT = 0x27, VK_DOWN = 0x28, VK_SELECT = 0x29, VK_PRINT = 0x2A, VK_EXECUTE = 0x2B, VK_SNAPSHOT = 0x2C, VK_INSERT = 0x2D, VK_DELETE = 0x2E, VK_HELP = 0x2F, /* * VK_0 - VK_9 are the same as ASCII '0' - '9' (0x30 - 0x39) * 0x40 : unassigned * VK_A - VK_Z are the same as ASCII 'A' - 'Z' (0x41 - 0x5A) */ VK_LWIN = 0x5B, VK_RWIN = 0x5C, VK_APPS = 0x5D, /* * 0x5E : reserved */ VK_SLEEP = 0x5F, VK_NUMPAD0 = 0x60, VK_NUMPAD1 = 0x61, VK_NUMPAD2 = 0x62, VK_NUMPAD3 = 0x63, VK_NUMPAD4 = 0x64, VK_NUMPAD5 = 0x65, VK_NUMPAD6 = 0x66, VK_NUMPAD7 = 0x67, VK_NUMPAD8 = 0x68, VK_NUMPAD9 = 0x69, VK_MULTIPLY = 0x6A, VK_ADD = 0x6B, VK_SEPARATOR = 0x6C, VK_SUBTRACT = 0x6D, VK_DECIMAL = 0x6E, VK_DIVIDE = 0x6F, VK_F1 = 0x70, VK_F2 = 0x71, VK_F3 = 0x72, VK_F4 = 0x73, VK_F5 = 0x74, VK_F6 = 0x75, VK_F7 = 0x76, VK_F8 = 0x77, VK_F9 = 0x78, VK_F10 = 0x79, VK_F11 = 0x7A, VK_F12 = 0x7B, VK_F13 = 0x7C, VK_F14 = 0x7D, VK_F15 = 0x7E, VK_F16 = 0x7F, VK_F17 = 0x80, VK_F18 = 0x81, VK_F19 = 0x82, VK_F20 = 0x83, VK_F21 = 0x84, VK_F22 = 0x85, VK_F23 = 0x86, VK_F24 = 0x87, /* * 0x88 - 0x8F : unassigned */ VK_NUMLOCK = 0x90, VK_SCROLL = 0x91, /* * VK_L* & VK_R* - left and right Alt, Ctrl and Shift virtual keys. * Used only as parameters to GetAsyncKeyState() and GetKeyState(). * No other API or message will distinguish left and right keys in this way. */ VK_LSHIFT = 0xA0, VK_RSHIFT = 0xA1, VK_LCONTROL = 0xA2, VK_RCONTROL = 0xA3, VK_LMENU = 0xA4, VK_RMENU = 0xA5, VK_BROWSER_BACK = 0xA6, VK_BROWSER_FORWARD = 0xA7, VK_BROWSER_REFRESH = 0xA8, VK_BROWSER_STOP = 0xA9, VK_BROWSER_SEARCH = 0xAA, VK_BROWSER_FAVORITES = 0xAB, VK_BROWSER_HOME = 0xAC, VK_VOLUME_MUTE = 0xAD, VK_VOLUME_DOWN = 0xAE, VK_VOLUME_UP = 0xAF, VK_MEDIA_NEXT_TRACK = 0xB0, VK_MEDIA_PREV_TRACK = 0xB1, VK_MEDIA_STOP = 0xB2, VK_MEDIA_PLAY_PAUSE = 0xB3, VK_LAUNCH_MAIL = 0xB4, VK_LAUNCH_MEDIA_SELECT = 0xB5, VK_LAUNCH_APP1 = 0xB6, VK_LAUNCH_APP2 = 0xB7, /* * 0xB8 - 0xB9 : reserved */ VK_OEM_1 = 0xBA, // ';:' for US VK_OEM_PLUS = 0xBB, // '+' any country VK_OEM_COMMA = 0xBC, // ',' any country VK_OEM_MINUS = 0xBD, // '-' any country VK_OEM_PERIOD = 0xBE, // '.' any country VK_OEM_2 = 0xBF, // '/?' for US VK_OEM_3 = 0xC0, // '`~' for US /* * 0xC1 - 0xD7 : reserved */ /* * 0xD8 - 0xDA : unassigned */ VK_OEM_4 = 0xDB, // '[{' for US VK_OEM_5 = 0xDC, // '\|' for US VK_OEM_6 = 0xDD, // ']}' for US VK_OEM_7 = 0xDE, // ''"' for US VK_OEM_8 = 0xDF /* * 0xE0 : reserved */ } } } [/code]

2010년 5월 20일 목요일

HTC의 Windows 7 Phone ROM 유출?

HTC에서 유출된 Phone ROM에 windows 7 Phone OS로 보이는 데이터가 담겨 있었답니다. 이걸로 봐서 올 하반기엔 HTC에서 Mondrian 등의 차기 단말로 Windows 7 Phone이 등장할 확률이 높아졌군요. 다른 제조사의 행보가 주목됩니다. (LG에서 해외를 대상으로 Windows 7 Phone을 샘플로 선보였다고 하는데... 자세한건 두고봐야겠죠?)

 

http://www.engadget.com/2010/05/17/htc-mondrian-with-1-3ghz-snapdragon-detailed-in-leaked-windows-p/

 

 

Blend & Windows 7 Phone 동영상 한점.

 

Microsoft Blend로 App을 만드는 방법에 대한 90초 짜리 동영상입니다.

간단해보이는군요... 시간나는대로 바로 해서 포스팅 해보겠습니다.

개인적으로 이제부터 화면전환이용이 가능하다는게 좋군요.

 

Get Microsoft Silverlight

2010년 5월 10일 월요일

Windows 7 Phone Design 관련 동영상 2점


Windows 7 Phone의 디자인에 관한 동영상이 2개 있어요
흥미있는 분들 보시라고 링크~


Get Microsoft Silverlight

아래는 위 동영상의 독어 버전? 인데 좀더 7 Phone의 디자인 테마에 대해서 이야기하고 있는듯....


Get Microsoft Silverlight


2010년 4월 19일 월요일

Photo Slider

지난 시간에 이어서 이번엔 Win7 phone SDK로
PhotoSlider app을 만들어 보았습니다.

WPF 와는 좀 차이가 나서 삽질이 많았습니다. ;;


대충 삼성 옴니아에 들어있는 1 Finger Zoom을 구현해 보았습니다.
손가락 한개로 줌인/아웃을 할수 있습니다. 원래는 아이팟처럼 두개의 손가락으로 테스트 하고 싶었지만
관련 제스처를 이용할수 있는 방법을 아직 발견못했습니다. ...

(있다고 해도 에뮬레이터 개발환경에서는 test하기 힘들겠군요, 아시는분은 알려주시면 감사하겠습니다.)



다른 이미지로 이동기능들을 구현해 봤습니다.


정말 Silverlight 를 통해서 기존 윈도우폰 개발과는 차별화된 간편함을 제공하는군요;;
좀더 많고 다이나믹한 아이디어를 앱으로 개발할수 있게 되어 기대됩니다.
다만, 실버라이트가 WPF에 익숙한 저로서는 아직 좀 헷갈리는군요....

추가로, 제 욕심입니다만...
이번 앱을 통해서 기존처럼 예제만 제공하는것이 아닌 요구사항-설계-구현이
어떻게 같이 진행되는지 이야기 하고자 합니다.
곧 프로세스/예제와 함께 발전하는 Application을 기대해 주세요~


2010년 4월 2일 금요일

Windows Phone 7 - Hello PHOO~


SDK 깔면 같이 깔리는 VS 2010 Expression 버전으로 맛보기 개발이 가능합니다.


공개된 윈7 폰 SDK로 간단한 어플을 만들어 봤습니다.
이름은 Hello PHOO~ 입니다.

Portrait

Landscape


주소창에 주소를 입력하면 그 주소로 쓩~
웹페이지를 보여줍니다.
그냥 누르면 이 블로그를 보여주구요~ ㅋㅋ

XAML. WPF에 익숙한 저로서는
정말 개발이 편해진걸 몸으로 체험할수 있었습니다.
VS 2010도 처음 써봤는데, WPF로 만들었다고 보기 어려울 정도로
사용성이나 성능이 좋구요 ^^

이것말고 다른 프로젝트도 있던데...
기대됩니다.

참고로 아래는 기본 QWERTY 키보드..
시연때 본 키보드는 약간 디자인이 달랐던것 같았는데...흠


2010년 3월 31일 수요일

Windows 7 Phone

 

불곰은 .NET 개발자입니다.

JAVA 개발자가 JAVA로 먹고살듯이

.NET으로 먹고살아 왔고 현재도 그렇습니다.

앞으로도 .NET 으로 먹고살수 있을지는 장담하기 어렵지만

MS가 완전히 망하지 않는 이상, 취미로라도 계속 .NET을 할 것입니다.

 

불곰은 PC Client Application이 전문입니다.

주로 PC나 이에 상응하는 중/고사양 PC에서 돌아가는 어플들을 만들어 왔죠.

하지만 항상 모바일에대한 관심이 있었고 AppStore 가 나왔을때엔

진짜 심각하게 맥을 살까 고민도 했습니다.

비싼돈들여 iPod Touch를 산것도 Apps 때문이었습니다.

 

윈도우 개발자이니까

윈도 모바일 개발을 하면 어떨까 생각도 했습니다만,

역시 윈도 모바일은 하나도 예쁘지 않더군요...

 

"예뻐야 되, 무조건 예뻐야 되" 라는 금자씨의 명언처럼

예쁘지 못한 WM은 저에게 실망 그 자체였고

자연스레 강력한 표현력을 지닌 플래쉬나 WPF등으로 갈아타고 있었습니다.

 

그런데 결국 실버라이트가 일을 냈군요.

 

 

 

 

 

이전부터 실버라이트 모바일이라고 하여 플래쉬 모바일을 맞수로 하여 Feature Phone에서도

미려한 UX를 보여주겠다고 그래서 언제쯤 써볼수 있을까 고대하고 있었습니만...

출시가 늦어 사실상 포기하고 있었습니다.

(쓸수 있었다면... 삼성전자 가전제품의 UX가 실버라이트 모바일이 되었을지도 모릅니다.)

 

그런데 이번 MWC 2010에 발표된 Windows 7 Phone은 실버라이트 모바일이 보여줄수 있는 한계를

훌쩍 뛰어넘어 일반 클라이언트 어플수준의 UX까지 보여주는군요...

"예쁜 디자인"을 신경써온 개발자로서는 멋져보일수 밖에 없습니다. ㅜㅜ

(실버라이트 개발팀 분들 에게: 엉엉 날 가져요 ㅜㅜ 부탁이삼)

 

 제 디자이너 친구 oblidust씨는 이러한 7 phone의 UX적 변화에 대해서

기존의 iPhone 식 고정관념을 깬 새로운 Innovation 이다 라면서 꽤 높은 점수를 주더군요.

 

그에비해, 저와 가까이 있는 삼성의 Bada Phone - Wave는 iPhone 판박이구요...

저희도 Innovation을 한번 했으면 좋겠습니다.

종종 초 일류기업이라면서, 선도하지 않고 따라가는것만 좋아하는것 같아서 안타까워요~

 

삼성 Wave 화면, 실제로 저렇습니다. Wave의 터치위즈 UI가 옴니아 2의 그것보단 빠른것 같아요.

 

일각에서는 과연  MS가 Phone으로 성공할 것인가? 하는 의문을 많이 품고 있습니다만

(사실 MS는 이전에도 몇번 폰을 내놨지만 별로 반응이 좋지 않았답니다.)

제 생각엔, 삼성이 독자 플랫폼 Bada로 iPhone 시장에 도전장을 내밀고 있는것과

마찬가지라 생각합니다. 두고봐야죠.

 

어쨌든 개인적으로는 이러한 WM의 새로운 변화를 저는 새로운 기회로 보고 싶습니다.

그리고 좀더 즐겁게 모바일 개발을 할수 있었음 합니다.

(얼마전에 푸와 WM으로 오랜만에 개발을 했었는데... 힘들어 고생 많이 했습니다. ㅜㅜ)

저도 그러한 즐거운 윈도우 모바일 개발에 뛰어들고자 준비중입니다...

그리고 그러한 발자취를 계속 방문해주신 분들과 공유할 생각입니다...

 

저희 블로그를 지켜봐 주세요~~~!