1 名前:デフォルトの名無しさん [2007/05/11(金) 20:27:08 ] スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。 やさしいお兄さんやお姉さんたちが答えてくれるかも。 過去スレ、関連リンクは>>2-5 くらい。 ■注意 ・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。 ・日本語版MSDN Online Libraryは不完全です。英語版(msdn.microsoft.com/library/ )の利用推奨。 ・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。 ・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで
231 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 19:15:59 ] dll側から自身を終了させる(exeは終了させない)にはどうしたらいいですか? dll側で自身をFreeLibraryしてもexeは普通終了されないのでしょうか?
232 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 19:21:36 ] 根本的に考え方を間違ってないか?
233 名前:231 mailto:sage [2007/05/22(火) 19:22:48 ] そうだと思います。 ご指摘お願いします。
234 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 19:25:23 ] >>210 ぐえっ、やっぱりそれかよ…orz 確かに説明わるい。早い話がExcelみたいな画面を作りたいわけだ。 で、もう一度よくよくExcelの動きを見ると…そーかぁ…クライアント領域みたいな物をスクロール させてる訳では無いかも。枠の線って変化しないで中の数字(文字列)だけが移動しているだけかも(?) #でも横のスクロールは線も移動してるよなぁ^^; 貼り付けたコントロールも移動させてる感じだね。 了解。やってみるよ。
235 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 19:49:37 ] >>231 良くわからん FreeLibraryを使った関数使うのはexe側だろ だったらexe側でFreeLibraryしたらいいんじゃないの?
236 名前:231 mailto:sage [2007/05/22(火) 19:55:55 ] exeは既存の物でdllが自作です。 exeでもFreeLibraryしてますが、それより早く不要になった時点でdllを解放したいのです。
237 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 19:58:58 ] >>236 どうやってLoadLibrary&GetProcAddressするの?
238 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 20:00:21 ] exe側でFreeLibraryしてるなら、勝手にDLL側終了しちゃダメじゃん。 えらいことになりそうな気がする。
239 名前:231 mailto:sage [2007/05/22(火) 20:07:18 ] >>237 特定の関数をエクスポートしていればそのdllをプラグインとして認識するタイプです。 >>238 そうですか。exeの実行時に使用してexeが終了するまで使わないので、 ちょっとでもメモリ消費量なり抑えられればと思ったのですが・・・。
240 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 20:19:10 ] >>239 おまいはDLLのなんたるかを理解していないな
241 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 20:25:12 ] もう使わないことが分かってるなら、exeのほうからFreeLibraryすりゃいいじゃないか。
242 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 20:37:27 ] >>241 dll側のソースだけでどのようにexeのほうからFreeLibraryするか分からないんですが・・・、 すみませんが教えて頂けませんか?
243 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 20:46:21 ] >>242 プラグインとして不要と exe 側のコードを書いた人が判断したタイミングで FreeLibrary を呼ぶ DLL側のコードを書く人は自前で Load/Free を管理できねー
244 名前:231 mailto:sage [2007/05/22(火) 20:57:47 ] 分かりました。ありがとうございました。
245 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 21:41:31 ] >>195 > MSGINAのスタブ 「ようこそ」画面を提供してるのはshgina.dll
246 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 21:42:41 ] Thread動かすタイプのDLLなら、 FreeLibraryAndExitThread という話になるんだよねたしか。
247 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 21:49:56 ] そして、 FreeLibrary(); ExitThread(); すればいいのに、何でこんな関数あるのって話になるんだよねたしか。
248 名前:デフォルトの名無しさん [2007/05/22(火) 21:54:05 ] FreeLibrary(); ExitThread(); すればいいのに、何でこんな関数あるの?
249 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 21:54:34 ] FreeLibraryを先に呼ぶと、ExitThread呼ぶコードがアンロードされて死亡だし、 ExitThreadを先に呼ぶと、FreeLibraryするチャンスがないからだよ、 ってたしか the Old New Things あたりに載ってたんだよねきっと。
250 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 22:03:45 ] なるほど。
251 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 23:11:53 ] 子プロセスを特定してヌッ殺す方法を教えてください 明示的に作成したプロセスなら簡単なんだけど、コンソールアプリ起動した時の conime.exeみたいに勝手にくっ付いてる子プロセスを特定する方法が分からない
252 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 23:33:52 ] exe, dll, ico, iclなどから インデックス、サイズ(small/largeだけでなく24とか128も)を 指定してHICONを取得したいと思っています。 IExtractIcon::Extractで希望のアイコンは取得できるのですが 数が多いと動作が遅くて困ってます。 何か他に良い方法ってあるのでしょうか? ご存知の方いたらお願いします。
253 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 23:39:52 ] >>252 エスパーが予想。 IExtractIcon::Extractとは関係ないところで速度低下
254 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 23:47:17 ] >251 自分をJobObjectに所属させれば。
255 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 05:41:22 ] >>252 >>253 が原因でなければ、エクスプローラみたく非同期で処理。
256 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 09:52:32 ] SystemParametersInfoに SPI_SETICONSを渡した場合、 MSDNによれば >システムアイコンを再ロードします。 って事らしいんですけど、 ここで言う「システムアイコン」って何なんですかね? 呼出は成功してるんですけど、今ひとつ実効性というか、 要するにこいつは何をやってくれるんだろうってのが、 はっきり解らないんですけど。 どなたかご存じないですか?
257 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 09:54:55 ] >>234 こんなもん、ちょっとでもコード書いてみりゃ要領がわかるよ
258 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 11:08:31 ] >>256 システムアイコンはメッセージボックスに表示されるアイコン。 ?や!や×みたいなの
259 名前:256 mailto:sage [2007/05/23(水) 13:44:46 ] >>258 ありがとうございます! あれですかー… どうりで、実行してもぱっと見何も起こらないわけですね。
260 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 14:42:03 ] Win2kの環境で アクティブデスクトップの背景を自分のウィンドウのクライアントに描画したいのですが SHELLDLL_DefView SysListView32 Internet Explorer_Server DeskMover GetDesktopWindow() あたりにWM_PAINTやWM_PRINTをいろいろオプション変えて送っても描画されません。 どうしたらアクティブデスクトップの背景を描画させる事ができますか?
261 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 14:58:29 ] PrintWindow API辺りならなんとかなるんじゃないかな?
262 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 16:46:27 ] マウスカーソルの下のツールバーボタンのコマンドIDかインデックスを取得したいのですがどうすればできますか?
263 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 17:01:44 ] >>262 ttp://msdn2.microsoft.com/en-us/library/bb496907.aspx この中に答えがあるよ
264 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 22:12:09 ] >>261 PrintWindowはXPにはない。 それがアリならVistaとAero有効なPCを買ってこいと回答しておこう
265 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 22:18:21 ] >>264 PrintWindowはちゃんとXPにあるから。
266 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 22:21:43 ] >>265 ごめん「XP以降にしかない」と書こうとして間違えた。
267 名前:252 mailto:sage [2007/05/23(水) 23:40:35 ] >>253 Extract自体ではなくて前後の COM関係のあーだ、こーだが遅いみたいでした。 >>255 非同期処理ですか、 非同期って全然分からなかったので 試しにマルチスレッドでやってみたんですが IExtractIcon::Extractが支配的で速度は変わりませんでした。 (自分のプログラムじゃなくてオープンソースを改造してたので)。 上記のマルチスレッドも間違ってると思うので これを気に勉強したいと思います。 ありがとうございました。
268 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 23:51:57 ] >>267 >>>253 >Extract自体ではなくて前後の >COM関係のあーだ、こーだが遅いみたいでした。 よくある話だ、元気出せ。
269 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 23:52:48 ] 元気出ました。
270 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 00:30:21 ] 俺元気!
271 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 00:32:28 ] サーバークライアント型のチャットプログラミングをやっています。 クライアント側で接続/切断ボタンを超クリックしまくると、時々表示が変になります。 エラーは何も出ないのですが、最前面に出ているのにアクティブじゃなくなって、ウィンドウの一部が消え 背景にあるウィンドウが少しだけ見えるような状態です。これはログウィンドウに大量の文字がある時に起きるっぽいです。 ログウィンドウの最大サイズを3000バイトに制限したら割と正常に動作し、30000バイトにすると上記の不具合が起きます。 ボタンを連打出来ないような仕様にしてもいいのですが、出来ればあまりしたくありません。 どのようにすればいいでしょうか? ちなみに接続ボタンを押すと接続/受信用スレッドが立ち上がり、切断ボタンを押すとスレッドが終了します。
272 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 00:39:06 ] >>271 ログウィンドウはエディットコントロールのおかん ママー
273 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 00:51:54 ] >>272 つまり・・・どういう事ですか?
274 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 00:53:03 ] それは、こっちが聞きたい
275 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 00:54:25 ] つまりだね
276 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 01:16:12 ] >>271 debug
277 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 01:19:56 ] 質問させて頂きます。 GetOpenFileNameでファイル選択ダイアログを表示し、ファイルを取得しているのですが 何故か、別のモジュール側の処理を少し追加したらダイアログが表示されなくなりました。 原因が全く分かりません…。GetOpenFileNameを利用する上で何か注意しないといけない事があるのでしょうか? コンパイラはBCCとVCの両方で試しましたが、ダメでした。
278 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 01:22:23 ] 追加した処理が原因です
279 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 01:33:20 ] >>277 debug
280 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 01:35:10 ] その処理を消してみて元に戻るかどうかは試したの?
281 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 01:48:33 ] ,.イ´| ̄`ヽr<´ ̄  ̄`ヾ´ ̄ `ヽx''´ ̄「`丶、 / _|ノ ├〈,.-― ;. _ ,ゞ--'、:\___lヽ ,':∨::\ /´ ̄  ̄`ヽ ヽ/´ `ヽ、-.、 \::::::::::', |、_;/ / /´ ,. 、 、 \. \ \―| ’、 / / ,. / / ,ハ ',. ヽヽヽヽ \ヾ/ \_/:/:/:./ , / .,' / // | l | , l: | ', ',. ! l :',!| |/:/::/:/:/:! l | { /|:! l l } !ノ|::,!l | :| |::|:::::::|ノ |:/l/:/:::,|::|:{イ⌒lヾゝ ノノイ⌒lヽ|:::!::}:;!::l::::::/ |::/|/l::/l';:{ヾlー''! lー''!/リノノ/::/:l::/ || |:/リ、|::l;ゞ ̄´´ ,. ` ̄" ハ:lリノノノ' リ |' __,⊥!、 " " r===、 " " /ノノ || '/´\:: : \ ヽーノ /`ーァ-、 ヾ、 _ / li : . ',.`ヽ、 _ ,.イ´ /.ノ::l| ヽ \____ . /'/ |l ヽ `Y´ / './ . :l| |、 / / \l |l, \\_!_/ ‐ ´ 、!| | |\ ̄ | /; ´ ` ‐ , ヽヾ ! \| | / ヽ::/ `ヽ | | ,' ` ', ! 他のスレに貼り付けると . | |::: ヾ ヾ .:| .| おっぱいがポロリする | '、:::.:.. . ― . .:.:::,' ! 不思議なギガバイ子コピペ。 ',. \_:::.: : :_二二二:_: : : : .:.:.:.:::/ ,' ':、 ト、 ̄ ´.:.:.::::::::::.:.:.:.` ―┬ '′ / \ |l ヽ l| / . `/,' ヽ \ ',/ ∧ヽ \ \:.:.:.. ∧
282 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 01:51:56 ] レスありがとうございます。 >>280 さん はい、戻ります。 追加した処理の内容ですが、実行パスを取得した後に、設定ファイルのパスを作るだけの処理です^^; メッセージボックスを出す等すると何故か表示されたりします
283 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 01:58:11 ] >>282 エラーコード調べたり、デバッガ使ったり やる事は色々あるだろ
284 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 02:49:11 ] 正直、これだけの情報で答えられるのはエスパーだけだと思う。 せめて追加したコードだけでも出すとか・・
285 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 02:52:53 ] メッセージボックスを出すとうまくいく、というのがなんか引っかかるな。 OPENFILENAME構造体をちゃんと初期化してるか?
286 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 03:38:11 ] レス有難うございます。 追加したコードを記載します。 void GetIniPath( char *p_dis, int size ) { int point; GetModuleFileName( NULL,p_dis,size); // EXE名のスタートポイントを取得 point = GetFilenamePoint( p_dis ); if( point > 0 ) { p_dis[point] = '\0'; } wsprintf( p_dis, TEXT("%s%s"),p_dis,INI_PATH); return; } GetFilenamePointでは、for文と2バイト文字、半角カナに注意した比較のみで、APIは全く使用していません 上記のコードで、iniファイルのパスを取得し、ロード処理の前で使用しています。 ロード処理に前にメッセージボックス等、処理を止めるような事をするとたまにダイアログが表示されます。 >>285 さん 別のモジュールでもファイル選択ダイアログを呼んでいましたので そのコードをそのまま持ってきて使っています。 明るくなったらもっと詳しく調べてみます。
287 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 03:51:12 ] wsprintf( p_dis, TEXT("%s%s"),p_dis,INI_PATH); これって同じ領域指定しても良かったっけ?
288 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 04:02:31 ] だめだめです
289 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 06:58:22 ] だからコンパイルエラーとか挙動不審なのはAPIと関係ないっつーの
290 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 08:16:54 ] 1.GetModuleFileName 2.結果をバッファにコピー 3.PathRemoveFileSpecでモジュール名を取り除く 4.lstrcatで"\"と設定ファイル名を追加する (ちなみに3は自作のGetFilenamePointでええんとちゃう?) だめなのか?
291 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 08:19:36 ] std::string strPath TCHAR szAppPath[MAX_PATH]; ::GetModuleFileName(NULL, szAppPath, MAX_PATH); strPath = szAppPath; strPath = strPath.substr(0, (strPath.rfind('\\')+1)); strPath += "[ファイル名]" 超簡単
292 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 12:55:21 ] std::stringのrfindとかってMBCS対応できてるんだっけ?
293 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 13:01:23 ] >>290 3でshlwapi使うなら4はPathAddBackslashとStringCchCatだろ
294 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 15:00:20 ] 名前解決を行うプログラムを作りたいのですが、 DnsQuery()はPIP_ARRAYを使っており、DNSサーバにIPv4のものしか指定できません。 DNSサーバにIPv6アドレスを指定できるDnsQuery()または同等なものはないでしょうか? よろしくおねがいいたしますm(_ _)m
295 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 18:39:44 ] getaddrinfo じゃ駄目なの?
296 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 18:46:03 ] hConnect = CreateWindow( TEXT("BUTTON") , TEXT("起動") , WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON , 308 , 10 , 52 , 52 , hwnd , (HMENU)3 , ((LPCREATESTRUCT)(lp))->hInstance , NULL ); こんな感じでCreateWindow()をしているのですが、9番目の引数で指定した数値が 実際にWM_COMMANDに送られて来ず、意図しない数値が送られて来ます。 今は、WM_COMMANDの直後にLOWORD(wp)の値を調べて、その値を拾うことで 対応しているのですが、どうにかして正常な状態に戻したいです。 何故このような事が起こるのでしょうか?原因がわかりません。
297 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 18:48:44 ] LOWORD(wp) の値が 3 じゃないの?
298 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 18:53:02 ] LOWORD(wp)をMessageBoxで表示させたところ6とか見当違いの数字が入ってます。
299 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 18:54:44 ] 追記ですが、そのボタンの9番目の引数を(HMENU)30とかに変えると、 LOWORD(wp)に30が送られてきます。これで正常に動作はさせれるのですが、 結局のところ根本の解決になってないのであまり納得が出来ません。
300 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 18:57:37 ] Dialog でかつ WM_INITDIALOG のタイミングで >>296 をやろうとしてる? LOWORD(wp)==6 って IDYES 相当なんだが、、、 ちゃんとコントロール作れてないとか break し忘れているとか そっち方面な気配がする
301 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 18:57:59 ] #define IDABORT 3 とかぶってるからじゃないの?
302 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 19:10:27 ] Dialogは全く使用していないのですが・・・ あと申し訳ないのですが、3とか6とかいうのは適当でした。ごめんなさい。 数値が被ってるとの原因ででる不具合ならば、正しい数値を書くべきでした。 本当にエラーの出る数値は9〜14で、実際に送られてくるのは50、54、58、62、66です。 これらは for(i=0; i<5; i++){ CreateWindow(,,,,,,,,,(HMENU)9+i,,,,); } で作成しています。また、変数を使わずに直接数値を指定して作成したボタンもあるのですが、 それも違う数値が送られてきます。その数値は正常に動作する別の数値に変えたので覚えていません。
303 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 19:16:21 ] >>302 (HMENU)9 + i じゃだめさーね (HMENU)(9 + i) でないとあかん
304 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 19:17:05 ] WM_COMMAND の解説ちゃんと読め
305 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 19:20:03 ] >>303 頭悪い間違えですね。ごめんなさい。 首吊ってきます。死ぬ前に、直接数値指定してるのに違う数値が来る時のやつ 調べてきます。
306 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 20:22:00 ] >>292 たぶん対応していないし、第一TCHARを使うんだったら、 std::stringではなく、std::basic_string<TCHAR>を使うべき。
307 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 20:57:44 ] なんかエディットコントロールに文字が増えれば増えるほど、 動作が重くなってくるのですが、これは仕様って事でいいのでしょうか? 特に、winsockの関数周りが遅くなってるような気がします。
308 名前:294 mailto:sage [2007/05/24(木) 21:10:12 ] >>295 レスありがとうございます。 getaddrinfoは名前解決をOSに任せる物だと思っております。 (IPv6アドレスを持った)DNSサーバを指定して名前解決を行いたいです。
309 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 21:29:44 ] >>307 とりあえず、EM_GETHANDLE, EM_SETHANDLEを使って、 標準のハンドルを差し替えたら? GlobalAlloc(GPTR, メモリサイズ)で当てはめはめて なお、標準のハンドルは解放するの んで、通信側かエディット側か判断してみれば? パパー
310 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 21:44:14 ] msdn2.microsoft.com/en-us/library/ms682035.aspx DnsQueryが使えない理由を詳しく
311 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 21:52:28 ] よく読めよ。 IPv6レコードではなく、IPv6アドレスしか持たないDNSサーバを扱う話だろ。
312 名前:294 mailto:sage [2007/05/24(木) 21:55:11 ] >>310 「IPv6のレコードを取得する」はできます。 「IPv6のアドレスを持ったDNSサーバに接続する」ができません。 (PIP4_ARRAY) DNS_STATUS WINAPI DnsQuery_A(PCSTR,WORD,DWORD,PIP4_ARRAY,PDNS_RECORD*,PVOID*); DNS_STATUS WINAPI DnsQuery_W(PCWSTR,WORD,DWORD,PIP4_ARRAY,PDNS_RECORD*,PVOID*); DNS_STATUS WINAPI DnsQuery_UTF8(PCSTR,WORD,DWORD,PIP4_ARRAY,PDNS_RECORD*,PVOID*);
313 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 22:06:42 ] IPv6でのDNSクエリの発行自体xpSP2でサポートされたばかりだしなあ。
314 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 22:08:37 ] msdn2.microsoft.com/en-us/library/ms682016.aspx やっぱりよくわからないな DNS_STATUS WINAPI DnsQuery( PCSTR lpstrName, WORD wType, DWORD fOptions, PVOID pExtra, PDNS_RECORD* ppQueryResultsSet, PVOID* pReserved );
315 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 22:18:42 ] >>312 そのシグニチャはどこから持ってきたん?
316 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 22:23:51 ] Windows CE?
317 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 22:30:11 ] XPってv6トランスポートで本当に名前解決できるの? www.ipv6style.jp/jp/action/20050905/index.shtml ここ読むとできない、みたいなはなしがあるけどさ
318 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 22:30:59 ] >>312 WinDNS.h見てみたけど無理そうだな。アキラメロ
319 名前:294 mailto:sage [2007/05/24(木) 22:31:25 ] WinDNS.h よりです DNS_STATUS WINAPI DnsQuery_A( IN PCSTR pszName, IN WORD wType, IN DWORD Options, IN PIP4_ARRAY aipServers OPTIONAL, IN OUT PDNS_RECORD * ppQueryResults OPTIONAL, IN OUT PVOID * pReserved OPTIONAL ); DnsQuery_UTF8, DnsQuery_WもPCSTR pszName,PCWSTR pszName以外同じ #ifdef UNICODE #define DnsQuery DnsQuery_W #else #define DnsQuery DnsQuery_A #endif
320 名前:294 mailto:sage [2007/05/24(木) 22:33:14 ] >>317 Vistaならできるはずです。 XPでできないならAPIでも提供されていないでしょうかね? >>318 自分でDNSプロトコル話すしかないですかねorz
321 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 22:42:31 ] >>320 >自分でDNSプロトコル話すしかないですかねorz そういう事じゃマイカ?Windowsのリゾルバは糞って有名な話で dnsapi.dll使う前提なら無理。
322 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 00:45:58 ] >>294 の参照しているのは、2005付属のもので、 最新のWindowsSDKでは宣言が多少変更されたっぽいな。 で、aipServersの所は予約パラメータ扱いに変更されている。 対応するつもりが、面倒で放置したって感じか。
323 名前:名無し@沢村 [2007/05/25(金) 05:34:10 ] 256色の画面をクリップボードにコピーして、コピーや貼り付けがしたいのですが、 どのようにすればいいかわかりません。 誰か詳しく教えてくれませんか?
324 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 08:13:10 ] >>323 クリップボード側の話は ChangeClipboardChain関数, CloseClipboard関数, CountClipboardFormats関数, EmptyClipboard関数, EnumClipboardFormats関数, GetClipboardData関数, GetClipboardFormatName関数, GetClipboardOwner関数, GetClipboardViewer関数, GetOpenClipboardWindow関数, GetPriorityClipboardFormat関数, IsClipboardFormatAvailable関数, OpenClipboard関数, RegisterClipboardFormat関数, SetClipboardData関数, SetClipboardViewer関数, などの関数で操作する。 あとそれに合わせてWM_COPYなどがある。 ミソはSetClipboardData関数ですかな?
325 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 10:03:00 ] 256色だとパレットも持ってこないとな
326 名前:294 mailto:sage [2007/05/25(金) 11:32:09 ] 皆様レスありがとうございます 特に>>317 の記事大変参考になりました。 DLLをわざわざ開発するくらいですからAPIでは無理ですね。 BIND(dig,host,nslookup,...)のソースなどを参考に時間があるときにでも作成したいと思います。
327 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 16:15:08 ] 読み込み違反ってどんな時に起きるんでしょうか? LoadLibraryでDLLを呼び出してDLL内の関数を実行すると、 「アドレス 00000000 でアドレス 00000000 に対する読み込み違反がおきました。」 となります。そのDLL関数は4つの引数をサポートしていて他の3つの引数では成功します。
328 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 16:19:40 ] まさにぬるぽ
329 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 17:24:14 ] >>327 デバッグしろよ 「作ったソフトがまともに動きませんどうしてでしょうか?」 みたいな質問が多いけど情報は少ないし、しかもスレ違い
330 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 17:43:54 ] とりあえず、APIと関係なさそうなのは間違いない感じだなw あれじゃね? 渡さなきゃいかん値をNULLで渡してるとか。 渡してるつもりになってる変数が0でしたとか。
331 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 17:48:23 ] >>327 > そのDLL関数は4つの引数をサポートしていて他の3つの引数では成功します。 どういう意味? 引数の数が一つで、4種類の値しかとらないってこと? それとも、DLLが複数の関数をエクスポートしていて、 引数が3つのやつは成功するけど、4つのは失敗するってこと?