[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 06/22 11:35 / Filesize : 228 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Win32API質問箱 Build52



1 名前:デフォルトの名無しさん [2007/04/18(水) 01:54:51 ]
スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんやお姉さんたちが答えてくれるかも。

過去スレ、関連リンクは>>2-5くらい。

■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。英語版(msdn.microsoft.com/library/)の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで

910 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 18:38:50 ]
WS_EX_LAYEREDはWS_CHILDは無理

911 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 18:42:29 ]
コントロールをサブクラス化して、WM_PAINTをがんばる

912 名前:909 mailto:sage [2007/05/08(火) 18:44:56 ]
>>910
ありがと。 WS_CHILD 相手はダメであったかー

913 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 19:15:51 ]
簡易切り替え有効状態のXPまたはvistaで、ユーザー名とパスワードがわかってる
別のユーザー(未ログオン状態)にAPIだけで切り替えって無理ですかね。

すでにログオンしてるならWinStationConnect()で切り替えられるってとこまでは何とか
なったんだけど、未ログオンのユーザーのログオンを自動化する方法が解らなくて・・・
というか方法無さげ?


914 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 19:41:26 ]
フックってあの赤くて毛むくじゃらで頭にプロペラがついたやつ?

915 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 19:47:38 ]
>>914


135
246R
   ↑これ

916 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 20:04:58 ]
WM_INITDIALOGの反対はWM_DESTROYとWM_CLOSEどっち

917 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 20:18:31 ]
どっちも違う

918 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 20:21:17 ]
多分 WM_CLOSE
呼び出されるタイミングで、まだ 子供window が生き残ってるから
WM_INITDIALOG は子供window が出来上がった後に来るしね



919 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 21:09:01 ]
子供window

920 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 21:18:52 ]
child window の直訳と考えれば別に間違ってるわけでもない

921 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 21:20:11 ]
出来た子供がオスかメスかはどう判断すればいいの?

922 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 21:23:12 ]
ちんこ見ればいい

923 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 21:24:41 ]
BOOL GetWindowSex( HWND hwnd, LPWINSEX lpWinSex );

書いてて虚しくなった

924 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 21:30:41 ]
Win3.1まではWINS構造体
32bit時代からはWINSEX構造体


925 名前:デフォルトの名無しさん [2007/05/08(火) 21:44:37 ]

       FOX★公認!!!

俺たちのクリックで日本を一位にしようぜ!!
“30年は日本に手は出せないな”という勝ち方をしたい
wwwww.2ch.net/test/read.cgi/news4vip/1178602852/

1. ポーランド  139,797,680
2. チリ     137,040,439
3. ★日本    86,475,213★
4. イスラエル  80,930,530
5. スロベニア  57,137,042
6. フィンランド  40,857,499

石を投げる戦争から人は進化・進歩を遂げ、剣や槍などの武器をもって戦うようになった
人間はさらに発展し兵器を使う戦争を始めた
そして今、指先一つを武器とした電脳戦争が勃発したのであった・・・
皇国を勝利へと導くには貴様らの参戦が不可欠である

・戦場
www.clickclickclick.com/default.asp
・まとめサイト
www33.atwiki.jp/clickvip/


926 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 21:59:59 ]
>>887
せめてProgram Filesの位置はSHGetFolderPathで取ろう

927 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 22:52:25 ]
実行ファイルのアイコンを設定するにはどうすればいいんですか?
ウィンドウの左上のアイコンは変えれたのですが・・・

928 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 22:54:53 ]
>>925
BitBlt() じゃなくて StretchBlt() 使えって。



929 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 23:06:07 ]
じゃあこれから子ウィンドウの事は子供windowって言おうぜwwwwwwwwwwwwwww

930 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 23:15:53 ]
>>929
んじゃ親ウインドウは、大人ウィンドウかww

931 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 23:27:21 ]
>>918
WM_DESTROYでも子ウィンドウが生きてることは保証されてるぞ
>>927
エクスプローラーでは一番若いIDのアイコンが表示される

932 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 23:31:15 ]
何かおばちゃん細胞みたいなノリだな。

933 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 23:33:25 ]
親ウィンドウが、ダイアログボックスとかを開いている状態で、
親ウィンドウにSendMessageはできるが、
PostMessageができない状態であるか
調べるやり方がありましたら教えてください。

934 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 23:35:11 ]
EnableWindowでいいんじゃね?

935 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 23:36:01 ]
IsWindowEnabledだ。

936 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 23:37:01 ]
>>933
モーダルダイアログ開いててもPostMessage出来るぞ

937 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 23:55:09 ]
>>931
それで、アイコンが変わらなかったのか・・・
ありがとうございました!無事解決しました。

938 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 00:12:13 ]
>>937
更新タイミングの自由度は低いがアイコンハンドラを作ればエクスプローラ上での
実行形式ファイルのアイコンも変更可能だぞ。



939 名前:933 mailto:sage [2007/05/09(水) 00:14:08 ]
>>934-936
ありがとうございます。
IsWindowEnabledでいけそうです。

後、MessageBoxはモーダルダイアログですかね。
第一引数をHWND、NULLどちらの場合でも、
WM_PAINTがメッセージループには来てくれないみたいです。
InvalidateRectをしても直接コールバックの方に来てしまいます。

940 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 00:44:41 ]
>>939
MessageBoxでは内部でメッセージループが回ってるんだよ

941 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 00:45:10 ]
UpdateWindowしてないか

942 名前:933 mailto:sage [2007/05/09(水) 01:03:39 ]
>>940>>941
少し理解できました。
UpdateWindowはしていません。InvalidateRectはしています。
UpdateはSendMessage(WM_PAINT)、InvalはPostMessage(WM_PAINT)
だと思うので、意図したメッセージループに来てほしいのですが、
MessageBox独自のメッセージループに移行してしまうので、
処理が変わってしまう感じですかね。

943 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 01:23:14 ]
>>942
InvalidateRectは無効領域を追加するだけ。
無効領域があり、かつメッセージキューにメッセージが無くなったときに
システムはWM_PAINTを生成する。

944 名前:933 mailto:sage [2007/05/09(水) 01:44:32 ]
>>943
なるほど、ありがとうございます。

945 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 03:11:07 ]
>>47
linux自体Solarisや*BSDから見ればカスなんだが

946 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 03:23:02 ]
>>945
よう、カス

947 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 08:01:47 ]
僕バッカー!

948 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 14:14:25 ]
>>942
そこらへんのメッセージループでもなにか特定の処理を行いたい場合には、
ローカルフックを使うのが簡単。dllもいらないし。



949 名前:デフォルトの名無しさん [2007/05/09(水) 16:03:32 ]
アイコン入りのDLLからのアイコン画像を取得する方法を教えてください。
これ
ringonoki.net/s-shot/icon/khre.png
みたいに32x32x8のように色とサイズの情報を取得したいです。

950 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 16:50:08 ]
>>946-947
バッカス

951 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 17:03:51 ]
>>949
www.google.co.jp/search?q=DLL+EnumResourceNames

952 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 01:37:55 ]
>>
ありがとうございます。やってみます。

953 名前:デフォルトの名無しさん [2007/05/10(木) 04:15:56 ]
>>951
EnumResourceNamesの第1引数に指定するHMODULEはどうやって取得すればよいですか?
LoadLibraryでHMODULEを取得しようとしましたがshell32.dllではエラーになり、
APPWIZ.DLLではLoadLibraryは成功しましたがEnumResourceTypesがTRUEを返しました。

954 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 07:41:33 ]
ググレカス

955 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 07:57:30 ]
>>953
> LoadLibraryでHMODULEを取得しようとしましたがshell32.dllではエラーになり、

エラーとは何か?

> APPWIZ.DLLではLoadLibraryは成功しましたがEnumResourceTypesがTRUEを返しました。

TRUEを返すと何か問題が?



956 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 08:01:56 ]
CreateFile の hTemplateFile って使えないの?
↓のようにやってもtest.txtの属性が、test2.txtにはコピーされないみたい。

HANDLE hFrom = ::CreateFile("c:\\test.txt", GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL);
HANDLE hTo = ::CreateFile("c:\\test2.txt", GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, hFrom);
::CloseHandle(hFrom);
::CloseHandle(hTo);

>[in] Handle to a template file, with the GENERIC_READ access right. The template file supplies file
>attributes and extended attributes for the file being created. This parameter can be NULL.
最後の一文って一体。。。


957 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 08:15:28 ]
俺も使ったことないな、最後の引数

958 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 15:26:38 ]
Explorerの右上の旗のロゴを隠したいのですが、
SetWindowPosやShowWindowで隠そうとしても、枠が残ってしまいます。
専用の関数みたいなものがあるのでしょうか?



959 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 15:39:27 ]
>>958
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Toolbar\Explore/ShellBrowser
ITBarLayoutのアドレス0x10のバイトの下位3bit目をオフ

960 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 15:41:35 ]
下位3bit目じゃなくて下位4bit目だった。ようするに0x08

961 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 15:54:00 ]
>>960
できました、ありがとうございます。

962 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 21:42:34 ]
質問です

HTMLのFORMタグでSUBMITすると何も指定していなければ
FORMのACTIONで指定したURL等に
?---=---&___=___と付とついて送信されますよね?

その時日本語が値のときにエンコードされているように見えるのですが、
これはAPIとして提供されている機能でしょうか?

そうであればAPI名を教えてくれませんか?

963 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 21:43:13 ]
そんなWin32APIはありません。

964 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 21:50:59 ]
METHOD=GET の話か
まあURLエンコードでググれ

965 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 22:02:44 ]
IMultiLanguageインターフェイスのConvertStringメソッドとかあるけど、
ここじゃスレ違いかもね

966 名前:デフォルトの名無しさん mailto:age [2007/05/10(木) 22:21:50 ]
BitBltについて質問です。
転送元と転送先が同じDCの場合でも、この関数はちゃんと動く保障はありますか?

967 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 22:39:33 ]
>>966

厳密にはない。
GetDeviceCaps関数のRASTERCAPSで確認。

968 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 23:41:11 ]
WINDOWPLACEMENTのshowCmdあたりをいぢってて質問。
最大化してたウィンドウが最小化したあと、元の状態に戻すにはどうすればよいですか?
SW_RESTOREだと最大化状態が解除されてしまうので。



969 名前:デフォルトの名無しさん [2007/05/11(金) 00:50:22 ]
Windows Picture and Fax ViewerをCreateProcessで実行したいのですが、
notepad,mspaintのような起動方法は可能でしょうか?


970 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 01:20:37 ]
関連付けのレジストリを見れば分る

971 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 01:21:04 ]
時々エディットコントロールのボーダーが見えなくなったり、
エディットコントロールが見えなくなって下のBMP画像が出てきたりするバグで
困っています。これらはWM_PAINTで再描画された時に直るのですが、
むしろ、WM_PAINTで大きなBMP画像が毎回毎回再描画されているせいで
エディットコントロールの表示がおかしくなるのではないかと思ってます。

BMP画像は壁紙としてウィンドウと同じサイズのものを使用しているのですが、
WM_PAINTでことある毎に再描画せずにずっと表示させるようなことは可能なのでしょうか?

972 名前:デフォルトの名無しさん [2007/05/11(金) 05:35:42 ]
システムを終了するときの終了オプションダイアログ(コンピューターの電源を切る)のような
完全なシステムモーダルなダイアログボックス、或いはウィンドウってどうやって作ればいいんでしょう?

ダイアログボックスにシステムモーダル属性を付けてもだめでしたorz
タイマーでフォーカスを取り返し続けるっていうのは無しで、なにかいい方法ありますか?

973 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 06:20:01 ]
HWndにNULLを入れて

974 名前:デフォルトの名無しさん [2007/05/11(金) 06:32:30 ]
>>973
無理ですたorz

975 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 07:24:03 ]
グローバルフックしたら?


976 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 07:28:52 ]
システムモーダルつけてアド民では?

977 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 08:06:40 ]
システム乗っ取るようなものじゃないかそれ?
そんなお手軽に実現できていいのかなあ

978 名前:972 [2007/05/11(金) 08:14:53 ]
どうしても乗っ取りたいんです。



979 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 08:47:58 ]
濃そうだから海外のシステム八苦系のコミュで聞いたら?答えが出ると思うよ

980 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 09:10:22 ]
タイーホ!

981 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 09:27:54 ]
GINA?

982 名前:デフォルトの名無しさん [2007/05/11(金) 10:21:17 ]
>>978は騙りだから無視して
フリーのソフトで部屋にいない間、キャプチャーしてるんだけど(LiveCapture2ってソフトです)
デスクトップロックが効かないんですよね
それで、もし誰か侵入者がロックの掛かってないPCに触ったら(マウスが移動したら)
システムモーダルのダイアログを表示してパスワードを要求する、って感じでプログラムを作ってるわけです

多分もっといい方法があるんだろうけど、結構面白いからこれでやってみようかなぁと
どんなもんでしょうか

983 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 10:27:22 ]
誰か次スレ立てて

984 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 10:27:57 ]
>>981
NT,2000,XPなら正解。GinaのShellShutdownDialogあたりちゃうか。

>>982
やってみれば?OSのリストア何回かすることになると思うけどw。


985 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 10:29:17 ]
>>982
っ スクリーンセーバー

986 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 13:09:53 ]
982のやりたいことはスクリーンセーバーそのものだよなw

987 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 14:00:42 ]
>>971
>WM_PAINTでことある毎に再描画せずにずっと表示させるようなことは可能なのでしょうか?
それは無理。

WS_CLIPSIBLINGS とか WS_CLIPCHILDREN とかそのあたりをちゃんと理解して
適切に描画されるようにコードを直せば良い。

988 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 14:22:29 ]
>>982
俺も >>985-986 に同意。
コアをスクリーンセーバーで作れば、OSのダイアログが利用できる。
スクリーンセーバーが稼働中に録画するような構造にすれば、
まさに君の望む挙動になるんでない?

問題はスクリーンセーバ稼働中にLiveCapture2というソフトが
ちゃんと裏で動いてくれるかどうかだけど。
そこがダメなら、そこを自作する方向に行くとか。w
仮に裏で動いてくれるなら、何も作る必要がないという事にならないか?




989 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 17:15:45 ]
CreateDesktop してみればどうかな。
スクリーンセーバーも別デスクトップで動作していたと思う。

990 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 18:00:37 ]
CreateDesktopしてもNT系ならCtrl+Alt+Delで解除されるよ。
パスワードかけるならスクリーンセーバーでOSに丸投げするか、GINAしかない。

991 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 18:03:14 ]
しかしGINAはVistaでは廃止されてしまった。
Vistaで同じことやるにはMSとShell Credential Providerの開発契約しないとだめぽ

992 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 18:10:48 ]
まじかよ・・・

993 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 18:15:22 ]
開発契約なんぞ必要なのか?サンプルも公開されてるのに?
ドキュメントもご丁寧に日本語化されてるけど。
ttp://msdn.microsoft.com/msdnmag/issues/07/01/CredentialProviders/default.aspx?loc=jp

994 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 18:17:05 ]
もういっちょ。
ttp://www.microsoft.com/downloads/details.aspx?familyid=B1B3CBD1-2D3A-4FAC-982F-289F4F4B9300&displaylang=en


995 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 18:36:18 ]
>>972
最大化したウィンドウ(タイトルバー無し、最上位)にデスクトップ画面を
描画して、そのウィンドウを親ウィンドウとしてダイアログを出せばいいんじゃね?

XPで終了ダイアログを出すと背景がだんだん白黒になっていくから
そういう仕組みでやってると思うけど。

996 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 19:51:15 ]
>>993-994
Vistaβの頃のSDKには「詳細は問い合わせて契約してくれ」みたいな英文はあった気がした。
正規版になって普通に一般公開されたのかね。

997 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 20:21:34 ]
デルファイでできたアプリケーションのダイアログウィンドウのハンドルについて質問です。

spy++では、親がTfrmMainというクラス名と判明しました

そこでGetWindowLongで親ハンドルを取得すると、親はTApplicationというクラス名でした。ここでもう整合性がないです

TApplicationの名前をもつハンドルを取得して、そのハンドルからダイアログハンドルを検索するためにFindWindowsExをしたのですが、Nullが返ってきました

いったいどんな親子関係なんでしょうか?
レスおながいします(´・ω・`)


998 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 20:31:28 ]
見えない親ウインドウがある。



999 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 20:32:22 BE:124224588-2BP(222)]
>>995
ホットキー止めないと。Alt+Tabとかで普通に抜けられる。

1000 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 20:32:46 ]
次スレ
Win32API質問箱 Build53

 ttp://pc11.2ch.net/test/read.cgi/tech/1178882828/

1001 名前:1001 [Over 1000 Thread]
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<228KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef