Win32APIについての質問はこちらへどうぞ。
■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。
英語版( http://msdn.microsoft.com/en-us/library/ )の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで
■過去スレ
Win32API質問箱 Build122
http://echo.2ch.net/test/read.cgi/tech/1451988219/
Win32API質問箱 Build123©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
2016/10/08(土) 12:33:02.29ID:0jaJMPXG
313デフォルトの名無しさん
2016/12/23(金) 16:45:40.87ID:Kb3OsEli >>311
WDKサンプルのこのあたりが参考になるのかな
NDIS 6.0 Filter Driver
Windows Filtering Platform Packet Modification Sample
WDKサンプルのこのあたりが参考になるのかな
NDIS 6.0 Filter Driver
Windows Filtering Platform Packet Modification Sample
314デフォルトの名無しさん
2016/12/24(土) 07:41:05.18ID:AXa0yhpU >>313
ありがとうございます。参考にさせて頂きます。
ありがとうございます。参考にさせて頂きます。
315デフォルトの名無しさん
2016/12/24(土) 20:58:07.38ID:3KzFEnUI >>314
きっとおまえがやりたいことはchrome拡張でonbeforerequestいじれば解決する・・・
きっとおまえがやりたいことはchrome拡張でonbeforerequestいじれば解決する・・・
316デフォルトの名無しさん
2016/12/25(日) 22:10:16.80ID:n7UGfNqJ iniファイルから文字列を読み込むGetPrivateProfileString()なんですが、
セミコロン以下のコメント文まで読み込んでしまいます。
コメント文は読み込まないようにできないでしょうか?
それとも自分でコメント文を削除するしかないでしょうか?
セミコロン以下のコメント文まで読み込んでしまいます。
コメント文は読み込まないようにできないでしょうか?
それとも自分でコメント文を削除するしかないでしょうか?
317デフォルトの名無しさん
2016/12/26(月) 00:55:07.08ID:cwwyPIk6 同一行にコメントはwindows的にアウト
319デフォルトの名無しさん
2016/12/26(月) 08:40:18.91ID:I+2Q+LPS コメントを勘違いしてるんじゃね?
320デフォルトの名無しさん
2016/12/26(月) 21:20:51.81ID:SUV7MStA セミコロン付けたらコメントになるって言うけどよー
あれ実際は特別扱いなんかしてなくて、例えば
;abc=def
にしたら「;abc」って名前になるから「abc」に一致しなくなるだけじゃないかと疑ってる
あれ実際は特別扱いなんかしてなくて、例えば
;abc=def
にしたら「;abc」って名前になるから「abc」に一致しなくなるだけじゃないかと疑ってる
321デフォルトの名無しさん
2016/12/26(月) 21:34:05.02ID:sfc5Nc1U じゃあ「;abc」で試してみればよくね?
322デフォルトの名無しさん
2016/12/26(月) 22:12:12.96ID:ffv778mh セミコロンは行頭にある時だけを特別扱いしているみたいだ
323316
2016/12/29(木) 11:37:53.16ID:E1SACFDz 使ってるエディタが.iniの同一行コメントもコメント色に変換してくれるので、誤解してしまいました。
気を付けます。
気を付けます。
324デフォルトの名無しさん
2016/12/30(金) 13:34:08.58ID:qor2kyvR winsockの関数フックしたいんですけどインポートアドレステーブル上の
ws2_32.dllの関数だけ取得できません。どうしたら?
ttp://up2.cache.kouploader.jp/koups19399.txt
このコードは
自身のロードしたDLLの関数名を列挙するだけのシンプルなものですが、
やはりwinsockの関数名だけ取得できないです。
ImageDirectoryEntryToData()の第3引数を
IMAGE_DIRECTORY_ENTRY_IATや
IMAGE_DIRECTORY_ENTRY_DELAY_IMPORTに変えても取得できませんでした(そもそも関数がnull返してくる
ws2_32.dllの関数だけ取得できません。どうしたら?
ttp://up2.cache.kouploader.jp/koups19399.txt
このコードは
自身のロードしたDLLの関数名を列挙するだけのシンプルなものですが、
やはりwinsockの関数名だけ取得できないです。
ImageDirectoryEntryToData()の第3引数を
IMAGE_DIRECTORY_ENTRY_IATや
IMAGE_DIRECTORY_ENTRY_DELAY_IMPORTに変えても取得できませんでした(そもそも関数がnull返してくる
325デフォルトの名無しさん
2016/12/30(金) 13:46:15.25ID:ymKNG2iV WSAStartupは成功してんの?
326デフォルトの名無しさん
2016/12/30(金) 13:47:50.05ID:LToUj4mC 名無しだからcontinueですっ飛ばしてんだろ
327片山博文MZ ◆T6xkBnTXz7B0
2016/12/30(金) 14:07:12.37ID:nsN9rWIv GetLastError()を調べてみよ。
328324
2016/12/30(金) 14:41:23.26ID:qor2kyvR >>325
成功しているようです
>>326
関数名が名無しということですか?
>>327
どのタイミングでですか?
if(IMAGE_SNAP_BY_ORDINAL(pThunkData->u1.Ordinal))
winsockの関数だけこのif文が真になります。
ttp://i.imgur.com/jWNmlgm.png
デバッガでIAT覗くと、正しい関数名ではないが、2つの関数らしきもの?が表示されていて
これがWSAStartup()/WSACleanup()に対応するものだと思われます
他のDLLでは関数名が正しく表示されます。
これが、関数名が名無しということならどう対処するのかご教示頂きたいです。
海外のフォーラムの似たような質問では
ImageDirectoryEntryToData()の第3引数を
IMAGE_DIRECTORY_ENTRY_DELAY_IMPORTに変えて成功したと書かれていたんですけどね、成功しませんでした。
成功しているようです
>>326
関数名が名無しということですか?
>>327
どのタイミングでですか?
if(IMAGE_SNAP_BY_ORDINAL(pThunkData->u1.Ordinal))
winsockの関数だけこのif文が真になります。
ttp://i.imgur.com/jWNmlgm.png
デバッガでIAT覗くと、正しい関数名ではないが、2つの関数らしきもの?が表示されていて
これがWSAStartup()/WSACleanup()に対応するものだと思われます
他のDLLでは関数名が正しく表示されます。
これが、関数名が名無しということならどう対処するのかご教示頂きたいです。
海外のフォーラムの似たような質問では
ImageDirectoryEntryToData()の第3引数を
IMAGE_DIRECTORY_ENTRY_DELAY_IMPORTに変えて成功したと書かれていたんですけどね、成功しませんでした。
329デフォルトの名無しさん
2016/12/30(金) 15:38:47.57ID:LToUj4mC >>328
関数名は名前あるけど、インポートが名無し
関数名は名前あるけど、インポートが名無し
330デフォルトの名無しさん
2016/12/30(金) 15:39:26.81ID:Q3tvxZdg マクロというオチ
331デフォルトの名無しさん
2016/12/30(金) 15:40:45.50ID:LToUj4mC 対処は名前比較じゃなくてアドレス比較
332デフォルトの名無しさん
2016/12/30(金) 19:08:50.21ID:qor2kyvR >>331
ヒントありがとうございました。解決しました
PIMAGE_THUNK_DATA pThunkData = (PIMAGE_THUNK_DATA)((PBYTE)hmodCaller + pImportDesc->OriginalFirstThunk);
PIMAGE_THUNK_DATA pRealThunk = (PIMAGE_THUNK_DATA)((PBYTE)hmodCaller + pImportDesc->FirstThunk);
while(pThunkData->u1.Function){
FARPROC pfnImportedFunc = (FARPROC)(pRealThunk->u1.Function);
・・・
上記のIAT上の関数アドレスと、
LoadLibrary()&GetProcAddress()で取得したwinsock関数のアドレス
を比較し一致したものを書き換えたら成功しました。
ttp://blog.techlab-xe.net/wp-content/uploads/2014/05/pe-format-import-func-list.png
これそもそも
文字列比較より
アドレス比較を用いる方法のほうが正確なやりかたですよね?
ヒントありがとうございました。解決しました
PIMAGE_THUNK_DATA pThunkData = (PIMAGE_THUNK_DATA)((PBYTE)hmodCaller + pImportDesc->OriginalFirstThunk);
PIMAGE_THUNK_DATA pRealThunk = (PIMAGE_THUNK_DATA)((PBYTE)hmodCaller + pImportDesc->FirstThunk);
while(pThunkData->u1.Function){
FARPROC pfnImportedFunc = (FARPROC)(pRealThunk->u1.Function);
・・・
上記のIAT上の関数アドレスと、
LoadLibrary()&GetProcAddress()で取得したwinsock関数のアドレス
を比較し一致したものを書き換えたら成功しました。
ttp://blog.techlab-xe.net/wp-content/uploads/2014/05/pe-format-import-func-list.png
これそもそも
文字列比較より
アドレス比較を用いる方法のほうが正確なやりかたですよね?
333デフォルトの名無しさん
2017/01/21(土) 17:55:42.90ID:0py1wTB0 CreateProcess関数の質問です。この関数で開いた外部プロセスを、操作しようとしたらハンドルされていない例外エラー発生したことある人いますか?
エラーメッセの
オブジェクト参照がオブジェクトインスタンスに設定されていませんの意味もいまいちわからずです。悩んでいます。
どなたかヒントをくれたら幸いですm(__)m
エラーメッセの
オブジェクト参照がオブジェクトインスタンスに設定されていませんの意味もいまいちわからずです。悩んでいます。
どなたかヒントをくれたら幸いですm(__)m
334デフォルトの名無しさん
2017/01/21(土) 18:11:33.93ID:3w6w5xSi たぶんCreateProcessの問題じゃなくてソースコードの問題
基本的なとこをどっか間違えてると思う
基本的なとこをどっか間違えてると思う
335デフォルトの名無しさん
2017/01/21(土) 19:16:05.15ID:RjpRPNfA 前後のソース載せてみて
336デフォルトの名無しさん
2017/01/21(土) 20:46:43.34ID:1cIKmUbZ >>333
まずは使ってるプログラム言語から書こうか
まずは使ってるプログラム言語から書こうか
337デフォルトの名無しさん
2017/01/21(土) 23:19:24.15ID:0py1wTB0 >>335
>>336
HWND hwnd;
STARTUPINFO si;
BOOL boRet = 0;
DWORD dwRet = 0;
ZeroMemory(&si, sizeof(si));
ZeroMemory(&piMplab, sizeof(piMplab));
si.cb=sizeof(si);
GetStartupInfo(&si);
boRet = CreateProcess(_T(""C:\Program Files (x86)\Microchip\PICkit 3 v3\"Pickit3.exe"),NULL,NULL,NULL,FALSE,NORMAL_PRIORITY_CLASS,NULL,NULL,&si,&piMplab);
CloseHandle(piMplab.hThread);
CloseHandle(piMplab.hProcess);
すみませんこんな感じですm(__)m↑
>>336
HWND hwnd;
STARTUPINFO si;
BOOL boRet = 0;
DWORD dwRet = 0;
ZeroMemory(&si, sizeof(si));
ZeroMemory(&piMplab, sizeof(piMplab));
si.cb=sizeof(si);
GetStartupInfo(&si);
boRet = CreateProcess(_T(""C:\Program Files (x86)\Microchip\PICkit 3 v3\"Pickit3.exe"),NULL,NULL,NULL,FALSE,NORMAL_PRIORITY_CLASS,NULL,NULL,&si,&piMplab);
CloseHandle(piMplab.hThread);
CloseHandle(piMplab.hProcess);
すみませんこんな感じですm(__)m↑
338デフォルトの名無しさん
2017/01/21(土) 23:24:44.47ID:3w6w5xSi >>337
それ以外の部分、もしくは書くために変えた部分に問題があると思う
それ以外の部分、もしくは書くために変えた部分に問題があると思う
339デフォルトの名無しさん
2017/01/21(土) 23:31:13.18ID:/qDbjX4N アクセス権か
340デフォルトの名無しさん
2017/01/21(土) 23:55:07.37ID:1cIKmUbZ >>337
まずは CreatepProcess の戻り値とエラーなら GetLastError の値を確認しようか
まずは CreatepProcess の戻り値とエラーなら GetLastError の値を確認しようか
341デフォルトの名無しさん
2017/01/22(日) 06:55:36.39ID:JOxquhah _Tの中は本当にそれでいいのか
342デフォルトの名無しさん
2017/01/22(日) 06:58:42.28ID:w4vCkWXB \はここに貼り付けたから崩れたのか
元のソースが1個なのか
元のソースが1個なのか
343デフォルトの名無しさん
2017/01/22(日) 11:15:36.01ID:nyEfU5To344デフォルトの名無しさん
2017/01/23(月) 08:44:04.99ID:As9ZYPu9 そもそもどっちのプロセスがエラーを出してるかすら把握できてなさそう
子プロセス呼び出しはなんとなくコピペで扱うには荷が重い
子プロセス呼び出しはなんとなくコピペで扱うには荷が重い
345デフォルトの名無しさん
2017/01/25(水) 06:02:27.98ID:s4b0iZxC プロセスを起動して、ユーザーの入力に応答しているか確認するにはどうしたらいいでしょうか。
Process::Responding プロパティ以外の方法でお願いします。
うちの開発環境にはないので。
プロセスのウインドウを取得して、メッセージを送るくらいしか思いつかないのですが、ウィンドウがない可能性もあるし
もっとスマートな方法があればいいなと。
Process::Responding プロパティ以外の方法でお願いします。
うちの開発環境にはないので。
プロセスのウインドウを取得して、メッセージを送るくらいしか思いつかないのですが、ウィンドウがない可能性もあるし
もっとスマートな方法があればいいなと。
346デフォルトの名無しさん
2017/01/25(水) 07:20:09.51ID:fntd/u0o347デフォルトの名無しさん
2017/01/25(水) 09:04:47.86ID:paQpH1yu ネットワークプログラミングで言う所のキープアライブ的なのを実装じゃあかんの?
348デフォルトの名無しさん
2017/01/25(水) 10:50:26.10ID:SLV8VPLP349デフォルトの名無しさん
2017/01/25(水) 10:51:21.94ID:SLV8VPLP >ウィンドウがない可能性
プロセスId見て稼働率調べるかな
プロセスId見て稼働率調べるかな
350デフォルトの名無しさん
2017/01/25(水) 10:51:49.68ID:SLV8VPLP ああ無限ループで稼働率100%だとだめなのか
351デフォルトの名無しさん
2017/01/25(水) 12:52:29.97ID:uJriqNlz WaitForInputIdle
352デフォルトの名無しさん
2017/02/02(木) 12:01:31.08ID:386srHJg TrayNotifyWndにアプリアイコンを追加と削除をしたいのですが、どうすればよいでしょうか?
Shell_NotifyIconの登録みたいなやつです。
Shell_NotifyIconの登録と削除右派知っています。
Shell_NotifyIconの登録みたいなやつです。
Shell_NotifyIconの登録と削除右派知っています。
353デフォルトの名無しさん
2017/02/02(木) 12:17:03.67ID:Nq0thOwX Shell_NotifyIconでないならこれのことかな
https://msdn.microsoft.com/en-us/library/windows/desktop/cc144099(v=vs.85).aspx
https://msdn.microsoft.com/en-us/library/windows/desktop/cc144099(v=vs.85).aspx
354デフォルトの名無しさん
2017/02/02(木) 13:37:19.22ID:386srHJg >>353
情報ありがとうございます。やりたい内容と、ちょっと違います。
windows8.1/10とかだと、タスクバーが上か下にあるとき、タスクトレイの右側か左側にTrayNotifyWndに
[IME]、[タッチパネル向けのキーボード]、[通知]などが表示されていますよね?
それらの場所に、自作のアプリアイコンを作りたいのです。
スパイでみると、
通知 ハンドル 001016E キャプション 通知センター クラス TrayButton
キーボード ハンドル 0010172 キャプション タッチキーボード クラス TIPBand
IME ハンドル 0010156 キャプション 無し クラス Button
となっています。
親ハンドルからたどってクラスを見るとTrayNotifyWndとなっています。
知りたいのは、SHAppBarMessageを使ったタスクバーみたいなウインドウではありません。
情報ありがとうございます。やりたい内容と、ちょっと違います。
windows8.1/10とかだと、タスクバーが上か下にあるとき、タスクトレイの右側か左側にTrayNotifyWndに
[IME]、[タッチパネル向けのキーボード]、[通知]などが表示されていますよね?
それらの場所に、自作のアプリアイコンを作りたいのです。
スパイでみると、
通知 ハンドル 001016E キャプション 通知センター クラス TrayButton
キーボード ハンドル 0010172 キャプション タッチキーボード クラス TIPBand
IME ハンドル 0010156 キャプション 無し クラス Button
となっています。
親ハンドルからたどってクラスを見るとTrayNotifyWndとなっています。
知りたいのは、SHAppBarMessageを使ったタスクバーみたいなウインドウではありません。
355デフォルトの名無しさん
2017/02/02(木) 13:49:49.54ID:386srHJg googleの画像検索で googleimeとかってやると下のような画面がでますよね?
https://www.google.co.jp/search?q=googleime&biw=1280&bih=607&source=lnms&tbm=isch&sa=X&sqi=2&ved=0ahUKEwiZzey0zfDRAhUJbrwKHQ4dBuAQ_AUICCgD#imgrc=j130VRRhjR7jdM:
TrayNotifyWndでにて、設定メニュをいじっているような画面のようなプログラムを作りたいのです。
https://www.google.co.jp/search?q=googleime&biw=1280&bih=607&source=lnms&tbm=isch&sa=X&sqi=2&ved=0ahUKEwiZzey0zfDRAhUJbrwKHQ4dBuAQ_AUICCgD#imgrc=j130VRRhjR7jdM:
TrayNotifyWndでにて、設定メニュをいじっているような画面のようなプログラムを作りたいのです。
356デフォルトの名無しさん
2017/02/02(木) 13:52:18.95ID:89UtyOev Shell_NotifyIconで登録して、クリックされたらメニュー表示すればそれになる
357デフォルトの名無しさん
2017/02/02(木) 14:17:43.87ID:386srHJg >>356
一般的な、Shell_NotifyIconでタスクトレイの登録ではないです。
タスクトレイの横に登録する手続きが知りたいのです。
mozcのソースコードをgrepしたところShell_NotifyIconは使われていないようです。
comクラスとかでTrayNotifyWndに追加するような機能があるのかなぁ。。
一般的な、Shell_NotifyIconでタスクトレイの登録ではないです。
タスクトレイの横に登録する手続きが知りたいのです。
mozcのソースコードをgrepしたところShell_NotifyIconは使われていないようです。
comクラスとかでTrayNotifyWndに追加するような機能があるのかなぁ。。
358デフォルトの名無しさん
2017/02/02(木) 14:36:09.97ID:89UtyOev すまん。通知領域はその右側か盲目だった
直接CreateWindowでぶらさげちゃうとかできないかな
直接CreateWindowでぶらさげちゃうとかできないかな
359デフォルトの名無しさん
2017/02/02(木) 15:53:49.61ID:8dKrrq5G IMEツールバーみたいにタスクトレイにドッキングしたいってこと?
360デフォルトの名無しさん
2017/02/02(木) 16:11:08.48ID:386srHJg >>359
機能はIMEではないですが、そんなかんじです。
機能はIMEではないですが、そんなかんじです。
361デフォルトの名無しさん
2017/02/02(木) 18:11:54.04ID:gbCpBU15 TrayNotifyWndを親にしてCreateToolbarExで作ればいいんじゃないのかな
362デフォルトの名無しさん
2017/02/02(木) 19:12:40.06ID:qO0hDPsp363デフォルトの名無しさん
2017/02/02(木) 20:07:51.95ID:Eu4e1EaI >>362
多分ソースは言語バーのcomクラス呼び出しだけで、実際の実装はWindows側
多分ソースは言語バーのcomクラス呼び出しだけで、実際の実装はWindows側
364デフォルトの名無しさん
2017/02/02(木) 23:04:33.49ID:386srHJg >>363
ざっくり調べたところ、おっしゃる通り言語バーのcom呼び出してるだけっぽかったです。
>>361
HWND hTaskBar = ::FindWindow(L"Shell_TrayWnd", NULL);
HWND hTrayNotify = ::FindWindowEx(hTaskBar, NULL, L"TrayNotifyWnd", NULL);
hButton = CreateWindowEx(0,L"button",L"@",WS_CHILD | WS_VISIBLE,0,0,48,24,hTrayNotify,0,hInst,0);
一瞬ボタンが表示されて消えましたw
登録のさせ方がたぶん違いますよね。
TBBUTTON tbButton = { 0 , 0 , TBSTATE_ENABLED , TBSTYLE_BUTTON , 0 , 0 , 0 };
SendMessage(hTrayNotify, TB_ADDBUTTONS, 1, (LPARAM)&tbButton);
なにも起こらず。。orz
ざっくり調べたところ、おっしゃる通り言語バーのcom呼び出してるだけっぽかったです。
>>361
HWND hTaskBar = ::FindWindow(L"Shell_TrayWnd", NULL);
HWND hTrayNotify = ::FindWindowEx(hTaskBar, NULL, L"TrayNotifyWnd", NULL);
hButton = CreateWindowEx(0,L"button",L"@",WS_CHILD | WS_VISIBLE,0,0,48,24,hTrayNotify,0,hInst,0);
一瞬ボタンが表示されて消えましたw
登録のさせ方がたぶん違いますよね。
TBBUTTON tbButton = { 0 , 0 , TBSTATE_ENABLED , TBSTYLE_BUTTON , 0 , 0 , 0 };
SendMessage(hTrayNotify, TB_ADDBUTTONS, 1, (LPARAM)&tbButton);
なにも起こらず。。orz
365デフォルトの名無しさん
2017/02/02(木) 23:11:43.26ID:386srHJg HWND hTaskBar = ::FindWindow(L"Shell_TrayWnd", NULL);
HWND hTrayNotify = ::FindWindowEx(hTaskBar, NULL, L"TrayNotifyWnd", NULL);
だと、タスクトレイの内部に描画されてました。
やりたいことと違う;;
HWND hTrayNotify = ::FindWindowEx(hTaskBar, NULL, L"TrayNotifyWnd", NULL);
だと、タスクトレイの内部に描画されてました。
やりたいことと違う;;
366デフォルトの名無しさん
2017/02/03(金) 01:27:36.38ID:3xPmzf3n >>364
親側をsubclassしてボタン用のエリア常に用意してないからじゃない?
親側をsubclassしてボタン用のエリア常に用意してないからじゃない?
367デフォルトの名無しさん
2017/02/03(金) 09:17:19.56ID:pF10NEzN >>364
TrayNotifyWndが、もしツールバーのクラスを内部で保持してたら登録できるかなーと思いついての実験でした。。
ウインドクラスTrayNotifyWndにそんな機能はなかった。うまくいかないものですね。
TrayNotifyWndが、もしツールバーのクラスを内部で保持してたら登録できるかなーと思いついての実験でした。。
ウインドクラスTrayNotifyWndにそんな機能はなかった。うまくいかないものですね。
368デフォルトの名無しさん
2017/02/03(金) 09:34:28.94ID:pF10NEzN HWND hTaskBar = ::FindWindow(L"Shell_TrayWnd", NULL);
HWND hTrayNotify = ::FindWindowEx(hTaskBar, NULL, L"TrayNotifyWnd", NULL);
HWND hToolbarWindow32 = FindWindowEx(hTrayNotify, NULL, L"ToolbarWindow32", NULL);
printf("handle %p %p %p ", hTaskBar, hTrayNotify, hToolbarWindow32);
SendMessage(hToolbarWindow32, TB_ADDBUTTONS, 1, (LPARAM)&tbButton);
実験してだめだったコード。。こんな感じでした。ウインドハンドルは普通に取得は成功していたみたいなんですけどね〜
HWND hTrayNotify = ::FindWindowEx(hTaskBar, NULL, L"TrayNotifyWnd", NULL);
HWND hToolbarWindow32 = FindWindowEx(hTrayNotify, NULL, L"ToolbarWindow32", NULL);
printf("handle %p %p %p ", hTaskBar, hTrayNotify, hToolbarWindow32);
SendMessage(hToolbarWindow32, TB_ADDBUTTONS, 1, (LPARAM)&tbButton);
実験してだめだったコード。。こんな感じでした。ウインドハンドルは普通に取得は成功していたみたいなんですけどね〜
369デフォルトの名無しさん
2017/02/03(金) 11:42:55.01ID:mwiWK7Ca 指定したソフトが生きてるかフリーズしてるかを判断できるAPI教えてくださいよ
370デフォルトの名無しさん
2017/02/03(金) 12:11:25.19ID:oHw8NUL1 メッセージ投げて帰ってくるかどうか
371デフォルトの名無しさん
2017/02/03(金) 13:01:49.10ID:3xPmzf3n372デフォルトの名無しさん
2017/02/03(金) 14:07:18.26ID:pF10NEzN >>371
その画像だと、ウインドウが、タスクトレイの位置にありませんか?
タスクトレイの内部にアプリアイコンを作るのであれば、Shell_NotifyIconで登録すればいいだけです。
やりたいのは、その画像でいうと、時計の右横の通知領域の右にウインド領域を追加したいのです。
その画像だと、ウインドウが、タスクトレイの位置にありませんか?
タスクトレイの内部にアプリアイコンを作るのであれば、Shell_NotifyIconで登録すればいいだけです。
やりたいのは、その画像でいうと、時計の右横の通知領域の右にウインド領域を追加したいのです。
373デフォルトの名無しさん
2017/02/03(金) 14:11:00.00ID:mwiWK7Ca >>370
それだと帰ってこなかったら出した側も固まりませんか?
それだと帰ってこなかったら出した側も固まりませんか?
374デフォルトの名無しさん
2017/02/03(金) 14:13:38.31ID:oHw8NUL1 >>373
別スレッドからメッセージ投げて、メインでスレッド監視して待機時間オーバーしたかどうかで判定するとか
別スレッドからメッセージ投げて、メインでスレッド監視して待機時間オーバーしたかどうかで判定するとか
375デフォルトの名無しさん
2017/02/03(金) 14:20:41.69ID:mwiWK7Ca376デフォルトの名無しさん
2017/02/03(金) 14:22:20.52ID:3xPmzf3n >>372
タスクトレイの左側にある隠れたアイコンを表示するための ^ ボタンの上に作ったボタンが表示されてる
ウインドウ表示位置だけの問題で期待してる通りだと思うよ
http://i.imgur.com/dyVnefi.png
>>373
無限ループで処理してるかもしれないから、生き死にの定義による
タスクトレイの左側にある隠れたアイコンを表示するための ^ ボタンの上に作ったボタンが表示されてる
ウインドウ表示位置だけの問題で期待してる通りだと思うよ
http://i.imgur.com/dyVnefi.png
>>373
無限ループで処理してるかもしれないから、生き死にの定義による
377デフォルトの名無しさん
2017/02/03(金) 14:39:36.19ID:Q4UhsfCm >>375
IsHungAppWindow
IsHungAppWindow
378デフォルトの名無しさん
2017/02/03(金) 15:40:26.62ID:mwiWK7Ca379デフォルトの名無しさん
2017/02/03(金) 17:34:15.41ID:Q4UhsfCm >>378
PostMessageは相手の処理を待たないから当然。
GetWindowRectも相手のプロセスが情報を返すわけじゃないから当然。
その方法を試すならSendMessage。
>while(1)だとウィンドウの移動もできたので
コンパイラの最適化によって(無意味な)無限ループが消されているかも。
PostMessageは相手の処理を待たないから当然。
GetWindowRectも相手のプロセスが情報を返すわけじゃないから当然。
その方法を試すならSendMessage。
>while(1)だとウィンドウの移動もできたので
コンパイラの最適化によって(無意味な)無限ループが消されているかも。
380デフォルトの名無しさん
2017/02/03(金) 18:01:24.26ID:Q4UhsfCm381デフォルトの名無しさん
2017/02/03(金) 18:07:05.86ID:mwiWK7Ca >>379
失礼、PostMessageじゃなくてSendMessageでした。
while(1)はウィンドウは動かせますがフォーム自体は固まった状態でした(マウスカーソルがくるくるになります)
IsHungAppWindowで指定間隔で数回みて連続でTRUEなら落ちてると判断できそうな感じでした
しかしwhile(1)ではなく実際にどこかのDLL関数内で落ちてる場合とかにFindWindowでハンドルは取れるのでしょうか?
失礼、PostMessageじゃなくてSendMessageでした。
while(1)はウィンドウは動かせますがフォーム自体は固まった状態でした(マウスカーソルがくるくるになります)
IsHungAppWindowで指定間隔で数回みて連続でTRUEなら落ちてると判断できそうな感じでした
しかしwhile(1)ではなく実際にどこかのDLL関数内で落ちてる場合とかにFindWindowでハンドルは取れるのでしょうか?
382デフォルトの名無しさん
2017/02/03(金) 18:08:21.50ID:mwiWK7Ca383デフォルトの名無しさん
2017/02/04(土) 13:09:50.99ID:koQjiQcQ メッセージ投げといてタイムアウトしたらあとは知らないって
まるで鍵垢へのフォロリクか2ちゃんの独り言のようだ
まるで鍵垢へのフォロリクか2ちゃんの独り言のようだ
384デフォルトの名無しさん
2017/02/04(土) 13:21:18.26ID:cCtqcbdk ピンポーン 宅配便でーす お留守ですかー ピンポーン ピンポーン
385デフォルトの名無しさん
2017/02/04(土) 15:21:09.56ID:e9aNESBj 帰りに台車を放り投げて荷物を蹴とばすんですね判ります
386デフォルトの名無しさん
2017/02/05(日) 11:14:06.81ID:bZw/U4Ow 使い道が想像できない
387デフォルトの名無しさん
2017/02/05(日) 19:54:32.92ID:ajRW1B46 GetWindowRectで得た値から計算して
MoveWindowに使うとズレるんですがこれは仕様なんですか?
例えばGetWindowRectで
left=100 right=200
top=100 bottom=200
だったとして、これだと幅と高さが
101になるので
MoveWindow(hwnd,100,100,101,101,TRUE)
としたら幅と高さが1ドットずつ膨らんでしまいます
MoveWindowに使うとズレるんですがこれは仕様なんですか?
例えばGetWindowRectで
left=100 right=200
top=100 bottom=200
だったとして、これだと幅と高さが
101になるので
MoveWindow(hwnd,100,100,101,101,TRUE)
としたら幅と高さが1ドットずつ膨らんでしまいます
388デフォルトの名無しさん
2017/02/05(日) 19:59:38.66ID:lBwes1rb WindowsAPIのRect系は右と下の1ドットは含まれないはずだったが
389デフォルトの名無しさん
2017/02/05(日) 20:00:15.60ID:Kv3SwlRy ピクセルの左上の隙間の位置を返す仕様(Javaと同じ)
なので単純に差を出して指定しないと膨らむ
なので単純に差を出して指定しないと膨らむ
390デフォルトの名無しさん
2017/02/05(日) 20:02:41.46ID:wagcFIA6 >>387
画面DPI100%以外になってない?vista以降はそれ原因で従来のAPIの扱いが面倒になってる
画面DPI100%以外になってない?vista以降はそれ原因で従来のAPIの扱いが面倒になってる
391デフォルトの名無しさん
2017/02/05(日) 20:05:12.27ID:ajRW1B46 MSDNを見ると
GetClientRectはleftとtopが常に0で
rightとbottomには幅と高さが入ってくると書かれていて
事実その通りになっていますが
GetWindowRectのほうは
ウインドウの左上座標と右下座標と表記されてるので
right-left+1 が幅になるはずです
なのでこの仕様はおかしいと思います
GetClientRectはleftとtopが常に0で
rightとbottomには幅と高さが入ってくると書かれていて
事実その通りになっていますが
GetWindowRectのほうは
ウインドウの左上座標と右下座標と表記されてるので
right-left+1 が幅になるはずです
なのでこの仕様はおかしいと思います
392デフォルトの名無しさん
2017/02/05(日) 20:08:48.13ID:DkYFBwwC393デフォルトの名無しさん
2017/02/05(日) 20:19:29.52ID:ajRW1B46 オセロでなく碁盤で数えろってことですね
納得しました
納得しました
394デフォルトの名無しさん
2017/02/06(月) 11:44:22.96ID:atuXlQHb >>392この辺ちゃんと理解してないと1ドット足りないみたいな事態になるんだよな
VBerとか1オリジンでUboundとか慣れてるとドはまりしそう
VBerとか1オリジンでUboundとか慣れてるとドはまりしそう
395デフォルトの名無しさん
2017/02/06(月) 15:30:39.87ID:sNAkUIYE >>391
GetClientRectの話だけど
left=top=0だとして
right=bottom=1だったら
幅と高さは1で
ウィンドウは(0,0)-(0,0)で1ピクセルのウィンドウだから
やっぱり幅と高さは1だし矛盾しない
GetClientRectの話だけど
left=top=0だとして
right=bottom=1だったら
幅と高さは1で
ウィンドウは(0,0)-(0,0)で1ピクセルのウィンドウだから
やっぱり幅と高さは1だし矛盾しない
396デフォルトの名無しさん
2017/02/06(月) 16:17:17.14ID:atuXlQHb 画像の部分クリップとかやりだすとちょっと混乱したりする教訓か
ドトネトなんかではx y width heightなプロパティを別に持っている
ドトネトなんかではx y width heightなプロパティを別に持っている
397デフォルトの名無しさん
2017/02/06(月) 17:51:48.08ID:2YUAIh/k SetWindowPosとMoveWindowとで
ウィンドウを動かした時に何か違いはあるんでしょうか?
SetWindowPosでウィンドウは動かせるのに
MoveWindowは何のために用意されてるんですか?
ウィンドウを動かした時に何か違いはあるんでしょうか?
SetWindowPosでウィンドウは動かせるのに
MoveWindowは何のために用意されてるんですか?
398片山博文MZ ◆T6xkBnTXz7B0
2017/02/06(月) 18:06:24.84ID:myCEQNc2 >>397
SetWindowPosの方がフラグ指定や挿入位置指定など、できることが多い。
SetWindowPosの方がフラグ指定や挿入位置指定など、できることが多い。
399デフォルトの名無しさん
2017/02/07(火) 08:29:41.33ID:g0+JjgLn >>398
ではMoveWindowは何のために存在しているの
ではMoveWindowは何のために存在しているの
400デフォルトの名無しさん
2017/02/07(火) 09:23:30.46ID:mtDQmVBr フラグとか触らないでただ動かす時のため
401デフォルトの名無しさん
2017/02/07(火) 11:23:40.44ID:IHNU1ydF 昔のことは知らないけど SetWindowPos が後から追加されたんじゃないの
402デフォルトの名無しさん
2017/02/07(火) 11:40:48.78ID:+LdvU0fQ 理由も昔のことも知らないけど 今はMoveWindowの内部でSetWindowPosが呼ばれてたと思う
403デフォルトの名無しさん
2017/02/07(火) 15:19:54.85ID:LuCsRke8 後方互換性のため
404デフォルトの名無しさん
2017/02/07(火) 22:51:17.46ID:m2J0GXa0 DeferWindowPos
405デフォルトの名無しさん
2017/02/17(金) 18:42:29.90ID:xKxGFEhy 実行ファイルの埋め込みマニフェストの実体をいじらずに
内容を修正した上で起動したり、任意の外部マニフェストファイルを読めるように
操作できませんか?
具体的には、マニフェストのcompatibilityの項目なんですが。。。
内容を修正した上で起動したり、任意の外部マニフェストファイルを読めるように
操作できませんか?
具体的には、マニフェストのcompatibilityの項目なんですが。。。
406デフォルトの名無しさん
2017/02/17(金) 19:08:12.47ID:yGnzX63H OSのバージョンにより異なる
ttps://msdn.microsoft.com/ja-jp/library/ms235342%28VS.80%29.aspx
ttp://www.taosoftware.co.jp/blog/2008/02/windows_1.html
ttp://nekojiru.blog.so-net.ne.jp/2007-09-03
ttps://msdn.microsoft.com/ja-jp/library/ms235342%28VS.80%29.aspx
ttp://www.taosoftware.co.jp/blog/2008/02/windows_1.html
ttp://nekojiru.blog.so-net.ne.jp/2007-09-03
407デフォルトの名無しさん
2017/02/17(金) 19:35:32.23ID:xKxGFEhy Windows7以降は埋め込み優先で、
実行ファイルのマニフェスト自身を書き換える方法、レジストリでOS自体の設定をいじる方法、
ActivateActCtx()でcommctl.dllは変更できるっぽい?
ってのはわかったんですが、個別に実行ファイルをいじらずに操作する方法があるかな、と思った次第です。
実行ファイルのマニフェスト自身を書き換える方法、レジストリでOS自体の設定をいじる方法、
ActivateActCtx()でcommctl.dllは変更できるっぽい?
ってのはわかったんですが、個別に実行ファイルをいじらずに操作する方法があるかな、と思った次第です。
408デフォルトの名無しさん
2017/02/17(金) 19:51:35.09ID:Z3/lG4/1 ショートカット作って、そのプロパティにアクセスして、互換性編集して、そのショートカットで起動させるとか?
409デフォルトの名無しさん
2017/03/01(水) 19:41:47.62ID:GhHUeiw5 windows8.1/10 マルチモニター環境で、ウインドウの位置がタッチパネルデバイスを
有するモニターであるかを調べたい場合どうすればよいですか?
HMONITOR hMonitor = MonitorFromWindow(hWnd,MONITOR_DEFAULTTONEAREST);
これで、モニターのハンドルは調べられるのですが、
このモニターがタッチパネルを有するモニターを調べる場合どうすればいいかわかりません。
有するモニターであるかを調べたい場合どうすればよいですか?
HMONITOR hMonitor = MonitorFromWindow(hWnd,MONITOR_DEFAULTTONEAREST);
これで、モニターのハンドルは調べられるのですが、
このモニターがタッチパネルを有するモニターを調べる場合どうすればいいかわかりません。
410デフォルトの名無しさん
2017/03/01(水) 19:53:26.09ID:IeB4TnBd Win32_PointingDeviceあたりだろうな
411デフォルトの名無しさん
2017/03/02(木) 16:15:18.67ID:35Ccu8m+ Win32 Pointhig Device軽く調べたんですが、それっぽいのないですね;;
412デフォルトの名無しさん
2017/03/02(木) 16:33:06.48ID:j0RdOmJS それでタッチかどうかわかるでしょ
あとはWin32_VideoController、Win32_DesktopMonitor、GetMonitorInfoあたりと情報突き合わせたら
その座標がタッチ対応かわかる
あとはWin32_VideoController、Win32_DesktopMonitor、GetMonitorInfoあたりと情報突き合わせたら
その座標がタッチ対応かわかる
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【インバウンド】中国からの“渡航自粛”…ツアー1000人分の直前キャンセル「キャンセル料は免除してくれ」 ことしいっぱいキャンセルに [1ゲットロボ★]
- 「国民の憤りを引き起こした」中国側“高市首相発言の撤回改めて要求” [どどん★]
- 【芸能】日中関係悪化でエンタメ業界に大ダメージ… JO1の中国でのイベント中止、邦画は公開延期、STARTOアイドルへの影響も [冬月記者★]
- XやChatGPTで広範囲の通信障害 投稿や閲覧できず [蚤の市★]
- 【サッカー】日本代表、ボリビアに3発快勝 森保監督通算100試合目を飾る…鎌田、町野、中村がゴール [久太郎★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★3 [ぐれ★]
- 自民党議員「高市は先人が築き上げた日中関係を壊した。外務省が謝罪に言ってるが自分で責任を取れ」 [834922174]
- 米シンクタンク「アメリカは台湾問題で"あいまい戦略"を取っている。高市早苗はこの方針から逸脱している」 [603416639]
- 【高市早苗】バス会社、中国からのキャンセルで12月で2000万円~3000万円の損失へ [115996789]
- かしこいワンコっていうVtuberの子知ってる?
- カレーライスぐちゃぐちゃに混ぜる奴🤣
- 岡田克也「軽々しく存立危機事態とか言うべきじゃない」高市早苗「台湾で武力攻撃が発生したらどう考えても日本の存立危機事態」 [931948549]
