Win32API質問箱 Build87
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2010/03/28(日) 10:23:58やさしいお兄さんやお姉さんたちが答えてくれるかも。
「知らないならレスしないで下さい。ウザイだけです。 」なんて言わないでねっ!
過去スレ、関連リンクは>>2-10くらい。
■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。英語版( http://msdn.microsoft.com/en-us/library/ )の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで
- Win32API質問箱 wiki
http://wiki.livedoor.jp/program1/d/FrontPage
Win32API質問箱 Build86
http://pc12.2ch.net/test/read.cgi/tech/1265350980/
0041デフォルトの名無しさん
2010/04/02(金) 10:03:300042デフォルトの名無しさん
2010/04/02(金) 10:35:51mscoreee.dll:_CorDllMain,_CorExeMain系関数をインポートしていればマネージドコードを含む
さらにその他のdllもインポートしている場合マネージド/アンマネージド混在の可能性が高い
何もインポートしていないならマネージド/アンマネージドに無関係なデータ/リソースモジュールの可能性が高い
それ以外の場合はアンマネージドモジュールの可能性が高い
COM参照など間接的な物はほぼ判定不能
0043デフォルトの名無しさん
2010/04/02(金) 11:23:59ちょっとがんばってみます。
マネージドコードで判断するときは
リフレクション使ってファイル読んだときに
アンマネージドであれば例外を出してくれる陽南でかんたんにわかるようなんですけどね。
0044デフォルトの名無しさん
2010/04/02(金) 17:57:26しらんけど
0045デフォルトの名無しさん
2010/04/02(金) 19:15:52共有セクションってどこまで適用されるの?ウィンドウステーション?
0046デフォルトの名無しさん
2010/04/03(土) 07:01:160047デフォルトの名無しさん
2010/04/04(日) 23:46:00とあるクラスを作成後、動作確認中、作成した自作クラスのコンストラクタ内の処理の途中で
ブレイクポイントを仕掛けたのですが、どうもブレイクしてくれません。
※正確には、コンストラクタと、publicメンバ関数の2箇所にブレイクポイントをしかけました。
しかしコンストラクタのブレイクポイントは無視され、publicメンバの方だけで止まります。
これは仕様なんでしょうか。ご存知の方いらっしゃいましたらよろしくお願いいたします。
0048デフォルトの名無しさん
2010/04/04(日) 23:46:53殺されたいのかお前は
スレタイ100回声に出して読め
0049デフォルトの名無しさん
2010/04/05(月) 00:10:28ゴメン。しかも自分の勘違いだった
0050デフォルトの名無しさん
2010/04/05(月) 00:21:320051デフォルトの名無しさん
2010/04/05(月) 03:49:34ってありませんか?
0052デフォルトの名無しさん
2010/04/05(月) 06:21:070053デフォルトの名無しさん
2010/04/05(月) 13:00:200054デフォルトの名無しさん
2010/04/05(月) 13:14:04WIA_DPC_FOCUS_DISTANCE/WIA_DPC_FOCAL_LENGTH
0055デフォルトの名無しさん
2010/04/05(月) 14:30:070056デフォルトの名無しさん
2010/04/05(月) 15:05:380057デフォルトの名無しさん
2010/04/05(月) 15:09:280058デフォルトの名無しさん
2010/04/05(月) 15:20:510059デフォルトの名無しさん
2010/04/05(月) 15:27:24http://www.geekpage.jp/programming/iphlpapi/
0060デフォルトの名無しさん
2010/04/05(月) 15:28:220061デフォルトの名無しさん
2010/04/05(月) 15:36:40>>48
0062デフォルトの名無しさん
2010/04/05(月) 15:53:29でてきましたよどじ
>>59
ありがとうございますありがとうございます。
あなたは神です。こんな糞まみれのスレで初めてみた神です。
0063デフォルトの名無しさん
2010/04/05(月) 15:53:590064デフォルトの名無しさん
2010/04/05(月) 15:55:040065デフォルトの名無しさん
2010/04/05(月) 16:00:050066デフォルトの名無しさん
2010/04/05(月) 16:17:46これ Win32API じゃないだろ
0067デフォルトの名無しさん
2010/04/05(月) 16:59:17いや参考になった。
へるぱAPIで取得できました。
しかし、しかし。
Presistent Routesだけ欲しい場合に判断に困ってます。
dwForwardProto辺りで何とか識別できそうかなっておもってたんですがダメっぽいですぅ
0068デフォルトの名無しさん
2010/04/05(月) 17:16:270069デフォルトの名無しさん
2010/04/05(月) 17:25:29まあ接続されてないんだからActive Routesに表示されないのは当然なんだが・・・
これPersistent Routesを取得する方法をさっさと教えてください。
0070デフォルトの名無しさん
2010/04/05(月) 19:20:14引数やDnDでファイル名を取得するとき、
ローカルのファイルだと C:\file.ext
ネットワーク上のファイルだと \\PCNAME\share\file.ext
で受け取りますよね。
UNCが説明されているあるサイトで \\PCNAME\C:\file.ext
のような表記を見かけたのですが、
(http://e-words.jp/w/UNC.html)
このように取得する方法ってありますか?
0071デフォルトの名無しさん
2010/04/05(月) 20:22:01管理共有でもなきゃ、その記述が間違い。
0072デフォルトの名無しさん
2010/04/05(月) 20:22:280073デフォルトの名無しさん
2010/04/05(月) 20:23:250074デフォルトの名無しさん
2010/04/05(月) 20:28:43偶々Cドライブを「C$」という名前で共有した結果なだけだろうに。
0075デフォルトの名無しさん
2010/04/05(月) 20:29:46そのプロセスハンドル取得してReadProcessMemory使ってもうまく表示してくれません
GetLastErrorみたらERROR_ACCESS_DENIEDって出たけどOpenProcessToken等の操作で変わるものでも無いので
どうすれば表示されるのか分からないので教えてください
0076デフォルトの名無しさん
2010/04/05(月) 20:35:520077デフォルトの名無しさん
2010/04/05(月) 20:37:280078デフォルトの名無しさん
2010/04/05(月) 20:41:560079デフォルトの名無しさん
2010/04/05(月) 20:44:24・指定アドレスの有効性の問題
・指定アドレスのアクセス権の問題
どれかしかない
0080デフォルトの名無しさん
2010/04/05(月) 20:46:230081デフォルトの名無しさん
2010/04/06(火) 11:28:50Active Routesに対してならできるがそれじゃ意味がないぽ><
0082デフォルトの名無しさん
2010/04/06(火) 23:32:120083デフォルトの名無しさん
2010/04/07(水) 04:30:11どっちでも同じAPIを呼んで同じ情報が取得できるはず。
0084デフォルトの名無しさん
2010/04/07(水) 16:36:08コンパイラはicl 11.0、OSはWindows XP 64bitです。
0085デフォルトの名無しさん
2010/04/07(水) 19:09:190086デフォルトの名無しさん
2010/04/07(水) 19:29:55ディスプレイの調整は、そのインターフェースがあるなんて聞いた事無い
0087デフォルトの名無しさん
2010/04/07(水) 19:42:220088デフォルトの名無しさん
2010/04/07(水) 20:21:20Vista以降ならある。
0089デフォルトの名無しさん
2010/04/08(木) 08:30:150090デフォルトの名無しさん
2010/04/08(木) 12:05:40PC起動時の初回と2回目以降に実行し他場合、処理速度が100倍ぐらい違うのですが、どうしてでしょうか?
0091デフォルトの名無しさん
2010/04/08(木) 12:11:310092デフォルトの名無しさん
2010/04/08(木) 12:52:23そのモーダルダイアログのボタンを押したときモードレスダイアログを出したいのですが、
メッセージループが表面上にないので、IsDialogMessage() 関数を追加する方法が分かりません。
どうようにすればいいでしょうか?
0093デフォルトの名無しさん
2010/04/08(木) 13:47:10009492
2010/04/08(木) 15:51:22INT_PTR CALLBACK SubProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) {
switch (msg) {
case WM_CLOSE:
DestroyWindow(hWnd);
return TRUE;
}
return FALSE;
}
INT_PTR CALLBACK MainProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) {
switch (msg) {
case WM_INITDIALOG:
CreateDialog((HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE), "SubDLG", hWnd, SubProc);
return TRUE;
case WM_CLOSE:
EndDialog(hWnd, TRUE);
return TRUE;
}
return FALSE;
}
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hprev, LPSTR cmd, int show) {
DialogBox(hInst, "MyDLG1", NULL, MainProc);
return EXIT_SUCCESS;
}
>メッセージループを追加する
どこに追加すればいいでしょう…
0095デフォルトの名無しさん
2010/04/08(木) 15:55:17それで問題があるならスレッドを起動する
009692
2010/04/08(木) 17:15:01ダイアログプロシージャ内に入ったときはDispatchMessageが呼ばれているし、
スレッド立てたらメインスレッドのメッセージは読めないと思うんですが。。。
0097デフォルトの名無しさん
2010/04/08(木) 17:51:17> WinMainでDialogBoxを呼び出してモーダルダイアログを出します。
これを止めて
モードレスダイアログ MainProc側 生成 → メッセージループ (EndDialog() 呼び出しの確認だけ ちょこっと工夫)
メッセージループ内
MainProc側
何らかのトリガーで SubProc側生成
0098デフォルトの名無しさん
2010/04/08(木) 20:20:06自分も相手もWindows(XP以降)です
正しくはコンピューター名じゃなくてUNC名ですが
0099デフォルトの名無しさん
2010/04/08(木) 20:21:33どこでもいい
君のプログラムにとって必要な場所に追加する
>ダイアログプロシージャ内に入ったときはDispatchMessageが呼ばれているし、
DispatchMessageから呼ばれたプロシジャの中でDispatchMessageを呼んではいけないという規則は無い
自分でイベントループを回すとはそういうこと
>スレッド立てたらメインスレッドのメッセージは読めないと思うんですが。。。
読める
010092
2010/04/08(木) 20:28:31WinMainのモーダルダイアログを、モードレスにし、自分でメッセージループを回すことで、
サブ側もタブストップ効くようになりました。
ありがとうございました。
0101デフォルトの名無しさん
2010/04/08(木) 20:35:060102デフォルトの名無しさん
2010/04/08(木) 21:14:40で、そのメッセージって何?って聞かれたなら、それは各種イベントって感じ
0103デフォルトの名無しさん
2010/04/08(木) 22:17:25IPアドレス→MACアドレス→マシン名
ARPとNetBIOS(NBT)とか?
0104デフォルトの名無しさん
2010/04/08(木) 22:17:56イベントで思いつくのはイベントハンドラだな。
0105デフォルトの名無しさん
2010/04/08(木) 22:40:330106デフォルトの名無しさん
2010/04/08(木) 23:20:09解決したときはどうやって解決したか書いておくと
後の人のためになるよ。
0107デフォルトの名無しさん
2010/04/08(木) 23:27:100108デフォルトの名無しさん
2010/04/09(金) 04:45:12│●│
└─┤
_ ∩
( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘ おっぱい!おっぱい!
0109デフォルトの名無しさん
2010/04/09(金) 05:08:12そこに表示する文字もSetBkModeで透過させることができたんですが
CreateFontで作成した文字列だと文字の周りにデフォルトの背景色が出てしまって
透過できないんですがどうすればいいですか
0110デフォルトの名無しさん
2010/04/09(金) 07:35:470111デフォルトの名無しさん
2010/04/09(金) 08:28:520112デフォルトの名無しさん
2010/04/09(金) 09:29:030113デフォルトの名無しさん
2010/04/09(金) 09:44:120114デフォルトの名無しさん
2010/04/09(金) 10:14:130115デフォルトの名無しさん
2010/04/09(金) 10:24:54何度も書かれている
お前の目が節穴だっただけ
大抵の人はフィルタを通して物(この場合スレの書き込み)を見てしまう
大事なことが書かれていてもそれに気付くためには
本人がそれを受け入れるための準備が必要なんだ
0116デフォルトの名無しさん
2010/04/09(金) 10:54:45まさか全部人に聞かないと書けない=コピペしか出来ない奴なのか
0117デフォルトの名無しさん
2010/04/09(金) 12:10:03そのときに、ポートを5000を使って送信する時に
srcポートとdstポートが同じになってしまいます。
これをsrcは自動?割り振りでdstが指定したポート番号になる方法を教えてください。
オープンはこんな感じで行っています。
struct sockaddr_in sa;
SocketHandle = ::socket( AF_INET, SOCK_DGRAM, 0 );
sa.sin_family = AF_INET;
sa.sin_addr.s_addr = INADDR_ANY;
sa.sin_port = ::htons( iPort );
::bind( SocketHandle, (struct sockaddr *)&sa, sizeof( sa ) );
0118デフォルトの名無しさん
2010/04/09(金) 13:55:33http://detail.chiebukuro.yahoo.co.jp/qa/question_detail.php?qid=1239071767
UnhookWindowsHookExがいくらやっても失敗します。
http://ir9.jp/prog/ayu/datlog/tech_win32api/1069339866/1069339866_02.html
の411のかたも同じ状況だったようですが解決されなかったようですね。
メインプロセスからSetWindowsHookExを呼んで、同プロセス内でUnhookWindowsHookExを解除するところで失敗します。
エラーコードを吐かせてみたところやはりフックハンドルが無効というものでした。
しかし、フックハンドルの値もint型にキャストして吐かせてみたところ、
Set〜から最後までずっと同じ値をとっていました。
フックは正常に作動しているので解除できないと気持ち悪いです。
しかし失敗のメッセージが表示されたあとは、フックが解除されているんです。
さらにキーフックが起こっていない状態でUnhookすると成功するんです。
なんなんでしょうか。。。。
0119デフォルトの名無しさん
2010/04/09(金) 14:04:46マルチ乙
返事がこなさそうって失礼にも程がある
0120デフォルトの名無しさん
2010/04/09(金) 14:08:300121デフォルトの名無しさん
2010/04/09(金) 14:39:570122118
2010/04/09(金) 14:57:11私の質問履歴にないのは全部そのまま消えていくからですorz
なんでしょうかね。めんどくさいのかわからないのか。
マルチなんぞに返答をくれる方お願いします。
キーイベントが発生したときのみエラーが起きているので、フックプロシージャかなんかに問題でもありますかね?
キーイベントの有無による違いはそれくらいだと思うんですが。
0123デフォルトの名無しさん
2010/04/09(金) 15:52:19開発環境は?
hHookはどこでどう宣言してる?
0124デフォルトの名無しさん
2010/04/09(金) 16:01:200125デフォルトの名無しさん
2010/04/09(金) 16:21:320126デフォルトの名無しさん
2010/04/09(金) 16:25:230127デフォルトの名無しさん
2010/04/09(金) 16:38:540128デフォルトの名無しさん
2010/04/09(金) 17:31:090129デフォルトの名無しさん
2010/04/09(金) 17:51:332ちゃんの画一的なコメント 乙
0130デフォルトの名無しさん
2010/04/09(金) 18:01:47case DLL_PROCESS_ATACH:
if (!GetModuleHandle("USER32.DLL") return FALSE;
0131デフォルトの名無しさん
2010/04/09(金) 18:07:58WM_KEYHOOKのプロシージャでResetHookを呼んでいるんだろうけど
SendMessageしたらいかんだろ。
0132デフォルトの名無しさん
2010/04/09(金) 19:05:151) bindのsin_portを0にする
2) bindやめてconnect呼ぶ。(後続するsendtoはsendに変える)
1,2の好きな方を選んだら?
0133デフォルトの名無しさん
2010/04/09(金) 20:08:04何をやってるか示さないと答えようがないわけだが
まぁ>>131の可能性が高そうだけど
0134デフォルトの名無しさん
2010/04/09(金) 23:24:48GetDriveTypeではリムーバブルって返って来るだけで、フロッピーではないかも知れませんし、
SetupDiEnumDeviceInfoとSetupDiGetDeviceRegistryPropertyでQueryDosDeviceで得た文字列と同じものを探して関連付けようと試みましたがヒットしないです...。
QueryDosDeviceでは"\Device\Floppy0"が返って来ましたが、SetupDiGetDeviceRegistryPropertyではフロッピー系は"\Device\FloppyPDO0"が見つかっただけでした
0135デフォルトの名無しさん
2010/04/09(金) 23:41:090136118
2010/04/09(金) 23:58:31ん?ドライブレター変えたらどうすんの???
責任取れるの?
0137デフォルトの名無しさん
2010/04/10(土) 02:26:34なんだてめぇ
0138134
2010/04/10(土) 03:20:140139デフォルトの名無しさん
2010/04/10(土) 08:58:460140デフォルトの名無しさん
2010/04/10(土) 14:15:55\DosDevices\〜からパス取り出して
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enumからそのパスを開いて
ClassGUIDとかで区別できると思うけど
>>135
ねぇPC98版Windowsって知ってる?
0141デフォルトの名無しさん
2010/04/10(土) 14:17:58■ このスレッドは過去ログ倉庫に格納されています