- 1 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 22:20:46 ]
- スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんやお姉さんたちが答えてくれるかも。 過去スレ、関連リンクは>>2-10くらい。 ■注意 ・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。 ・日本語版MSDN Online Libraryは不完全です。英語版(msdn2.microsoft.com/library/)の利用推奨。 ・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。 ・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで - Win32API質問箱 wiki wiki.livedoor.jp/program1/d/FrontPage Win32API質問箱 Build66 pc11.2ch.net/test/read.cgi/tech/1210775622/
- 360 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 22:42:44 ]
- WM_PAINT内
- 361 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 23:38:47 ]
- マインスイーパの(ニコニコマークの)ボタンのようなものを押そうとしているんですが、
HWND hwnd = FindWindow(NULL,TEXT("マインスイーパ")); POINT pos = {87,27}; int lparam = (pos.y<<16) + pos.x; PostMessage(hwnd,WM_LBUTTONDOWN,0,lparam); PostMessage(hwnd,WM_LBUTTONUP,0,lparam); で押したことにできません。 pos={100,100}とかで下の領域部分は押したことにできます。 調べた感じ、ボタンっぽい部分はハンドルも持ってなさそうなのですが、 どうすれば押せるのでしょうか?
- 362 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 23:40:11 ]
- >>361
F2を押したことにするんじゃだめなの?
- 363 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 23:43:35 ]
- >>362
マインスイーパをプログラムで操作したいというよりは、 ハンドルを持っていないボタンを押したいということなんです。
- 364 名前:362 mailto:sage [2008/06/17(火) 23:43:36 ]
- よく考えたらF2よりメニューのID調べてWM_COMMAND送ったほうが楽かも
- 365 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 23:46:23 ]
- >>363
SendInput
- 366 名前:デフォルトの名無しさん mailto:sage [2008/06/17(火) 23:54:28 ]
- >>365
やっぱりそれしかないんですかね? PostMessageでなんとかしたかったけど、SendInputでいってみます。 ありがとうございました。
- 367 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 00:31:14 ]
- 「チートのためのSendInput」
という本を書いたら売れますか?
- 368 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 02:50:24 ]
- チート専門ならWin32APIなんかよりAHKでも薦めるかな
- 369 名前:デフォルトの名無しさん [2008/06/18(水) 13:13:44 ]
- すみません、ちょっとお聞きしたいんですが、
CreateFileMappingAの戻り値のHANDLEから _open_osfhandle()と_fdopen()とで FILE*を取得することは出来るんでしょうか? どうもやってみても_open_osfhandle()が-1を返すんですが、 失敗する理由が自分のコーディングミスなのか仕様なのか分からないです。
- 370 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 14:27:41 ]
- そのハンドルは別のものだから使えないよ
- 371 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 17:25:33 ]
- >>360
遅レスすみません、漸く解りました。 ありがとうございます。 (WM_PAINT以外) hBmp = (HBITMAP)LoadImage(NULL, L"test.bmp", IMAGE_BITMAP, 640, 480, LR_LOADFROMFILE); HDC hDC = GetDC(hwnd); hMemDC = CreateCompatibleDC(hDC); SelectObject(hMemDC, hBmp); hBackDC = CreateCompatibleDC(hMemDC); hBackBmp = CreateCompatibleBitmap(hMemDC, 256, 192); hPrevBmp = SelectObject(hBackDC, hBackBmp); SetStretchBltMode(hBackDC, STRETCH_HALFTONE)) StretchBlt(hBackDC, 0, 0, 256, 192, hMemDC, 0, 0, 640, 480, SRCCOPY); ReleaseDC(hwnd, hDC); (WM_PAINT内) BeginPaint(hwnd, &ps); HBITMAP hTempBmp = (HBITMAP)SelectObject(hBackDC, hPrevBmp); SendDlgItemMessage(hwnd, IDC_BITMAP1, STM_SETIMAGE, (WPARAM)IMAGE_BITMAP, (LPARAM)hBackBmp); SelectObject(hBackDC, hTempBmp); EndPaint(hwnd, &ps);
- 372 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 17:27:16 ]
- >>371
そのソースじゃ何も解っていないようだな
- 373 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 17:28:40 ]
- WM_PAINTの度にSTM_SETIMAGEを送る必要はない気がするんだけど、自分の勘違いか?
- 374 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 17:40:35 ]
- てかStretchBlt自体が不要。SS_REALSIZECONTROLでいいじゃん。
それとも、XP未満にも対応する必要でもあるの?
- 375 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 20:02:36 ]
- 戦略からコードの細部にいたるまで間違いだらけだな、感動した。
またクライアント領域の人か?基礎からちゃんと勉強しないと話にならんぞ。
- 376 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 20:40:19 ]
- 今更Win32の基礎を勉強するなんて馬(ry
|

|