- 1 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 23:33:42 ]
- スレ立てるまでもない、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質問箱 Build65 pc11.2ch.net/test/read.cgi/tech/1208847084/
- 75 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 00:07:13 ]
- ソース貼るな馬鹿
どこかにうpしろ
- 76 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 00:13:05 ]
- じゃあテンプレにソース貼るなって入れろよ
なんであかんのかkwsk
- 77 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 00:17:40 ]
- 知らないならレスしないでください
- 78 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 00:21:21 ]
- とりあえず変数の使い回しは止めようよ
バグが怖いから
- 79 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 00:23:31 ]
- 世の中にはソースコードを貼り付けられる、無料のWebアプリがたくさんあってだな。
dwFlagsにKEYEVENTF_SCANCODEを忘れている。
- 80 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 00:27:10 ]
- 貼るにしても最小コードにして貰いたいものだ
- 81 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 00:30:43 ]
- そうすると、そこだけ張られても分からねえってなる予感。
話逸らしてすまんが。
- 82 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 00:38:37 ]
- 回答以外のレスは不要です
- 83 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 00:57:35 ]
- >>74
puts("A"); ↑ なにこの顔、ふざけてるの!?
- 84 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 01:03:12 ]
- >>83
ちょwww
- 85 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 01:18:35 ]
- >>83
不覚にもワロスwwwwwwwwwwwwwwwww
- 86 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 02:44:45 ]
- while('A') { }
- 87 名前:74 mailto:sage [2008/05/17(土) 02:55:03 ]
- >>75
ごめん次から気をつける >>78 わかった、この場合は大丈夫と思って >>79 ありがとう >>80,81 悩んだ
- 88 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 03:16:08 ]
- 'A'
'c' 'o' '-' こういうのが顔文字に見えないようなフォント誰か教えてくれ
- 89 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 04:05:01 ]
- いっそのこと歌舞伎にしか見えないフォントとか
- 90 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 04:06:34 ]
- 馬鹿にしか見えない文字?
- 91 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 07:20:14 ]
- ボタンとかリストビューとかのコントロールで、
Set/GetWindowLongPtr を使って GWLP_USERDATA をいじってよいのでしょうか? MSDNには一応 「This data is intended for use by the application that created the window.」 と書いてあるのですが、WM_USERと同じで使っちゃいかんと言う人もいるみたいで……
- 92 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 07:36:55 ]
- 気になるならSetProp/GetPropを使えばいい
サブクラスならSetWindowSubclassが安全
- 93 名前:91 mailto:sage [2008/05/17(土) 11:43:21 ]
- >>92
ありがとうございます SetPropを使ってみます
- 94 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 16:56:51 ]
- SendInput使ってコマンド登録してもオンラインゲームでは発動しなかったorz
- 95 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 17:02:25 ]
- だまれ
- 96 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 17:15:26 ]
- だからSendInputなんて使わないでSendMessage使えよって話
- 97 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 17:23:47 ]
- >>96
ありがと 次それやってみる
- 98 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 17:36:28 ]
- 結局BOTかよ芯でこい
- 99 名前:94 mailto:sage [2008/05/17(土) 18:11:43 ]
- 別にいいんじゃね?「使う事」より「作る過程」の方が
楽しいと思えるならBOTでもなんでもいいと思うんだがな。(勉強という意味で) 実際俺がそうだったわけだしフック、APIフック、逆汗は そういった「目的」があったからこそ覚えたわけで。 まあ、全てが俺みたいな考え方してるわけじゃないし、 やる上でどう感じるかは人それぞれか。
- 100 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 18:14:49 ]
- 明確にBOTだと言い切ってしまうとローカルルールに触れるかもしれない。
ま、俺はどうでもいいがね。
- 101 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 18:16:15 ]
- >>99
アンカミス?
- 102 名前:96 mailto:sage [2008/05/17(土) 18:24:05 ]
- >>101
ミスってた 94× 96○
- 103 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 19:43:46 ]
- オンラインゲームではなぜ反応しないのか
どうやれあ反応するのか これに興味持ったからやってるだけだよ JoyToKey+PPJoyじゃないとうまく動作しないのも関係あるんかな
- 104 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 19:44:59 ]
- >どうやれあ ×
>どうやれば ○ ホットキーしてたかB認識しなかった
- 105 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 19:48:02 ]
- 俺なら例え知ってても教えないわ
- 106 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 19:54:20 ]
- たまに独り言言うウザイ奴沸くけどスレに貼りついてるんか?
当事者以外にも不快感与えるから独り言は書き込むなよ 精神年齢幼いの曝け出してるようなもんだぞ
- 107 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 19:58:01 ]
- うわ、あのキ●ガイが質問してたのか
- 108 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 20:09:05 ]
- >>86
それ今度から使うわw
- 109 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 21:30:23 ]
- >>106
それが独り言
- 110 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 22:34:32 ]
- >>106は独り言ではない
>>109が独り言
- 111 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 22:36:21 ]
- >>110
という独り言ですね。 わかります。
- 112 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 22:37:12 ]
- ここまで俺の独り言
- 113 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 22:45:46 ]
- 指定したウィンドウを不可視状態にする(最小化ではなく、タスクバーからも消える)関数って作れますか?
- 114 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 22:47:17 ]
- >>113
簡単に出来るよ。
- 115 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 22:48:16 ]
- とりあえずこれでも実行してストレス溜めろ
while('A'){ BlocInput(TRUE); Sleep(500); BlocInput(FALSE); Sleep(500); }
- 116 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 22:59:33 ]
- >>113
MSがだいぶ前にそれ作ってるよ
- 117 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 23:08:07 ]
- >>113
ShowWindow(hwnd, SW_HIDE); >>115 BlocInput(笑)
- 118 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 23:59:20 ]
- BlocInputは引数に笑も取れるのか
- 119 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 00:04:33 ]
- >>109-111
ワロスwwwwwwwwwwwwwwwwwwwwwwwww
- 120 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 00:10:44 ]
- お前らそんなしょうもない事してる暇あるなら
社会に貢献するようなソース書けよ
- 121 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 00:30:18 ]
- >>120
ExitWindowsEx(EWX_SHUTDOWN, 0); 実行すると自動でPCをシャットダウンしCO2削減に貢献 (SeShutdownPrivilegeの取得等は省略)
- 122 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 01:01:58 ]
- 指定されたフォルダ内のファイルが作成、削除、更新されたら
そのファイルの名称等を知りたい。 検索してみたところ、ReadDirectoryChangesW() や SHChangeNotifyRegisterあたりを使えば良さそうな感じ。 winXP+vb6.0でもいけるだろうか?
- 123 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 01:38:25 ]
- ためしてみればわかるだろうか?
- 124 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 01:58:06 ]
- ためしていただけないだろうか?
- 125 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 02:41:22 ]
- ( ゚ω゚ ) お断りします
- 126 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 04:24:08 ]
- >>120
TerminateThread( pc11.2ch.net/test/read.cgi/tech/1210775622/ );
- 127 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 04:40:24 ]
- >>126
コンパイルエラー: 引数が足りません
- 128 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 11:34:43 ]
- おまいら好きだwwwwwwwwwwwwwwwww
- 129 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 13:50:13 ]
- VIP臭いんだけど
- 130 名前:デフォルトの名無しさん [2008/05/18(日) 13:53:22 ]
- お前がな
- 131 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 14:50:29 ]
- ふうん
- 132 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 17:24:37 ]
- AbornThread( "pc11.2ch.net", "tech", "1210775622.dat" );
- 133 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 18:57:10 ]
- タスクバーとスタートメニューのプロパティってどうやれば開ける?
コンパネからショートカット引っ張り出して.lnkアクセスするしかない?
- 134 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 19:05:51 ]
- すみませんDCOMについて質問させてください。
リモートPCのCOMを呼び出す簡単なコードを作成したんですが、 思ったように動いてくれませんでした。 CoCreateInstanceEx()にリモートPCのIPを渡してやるんですが この関数から戻ってくるのに時間がかかって失敗します。 ためしにローカルのIPを渡してやると成功するんですが。 以下にソースを記載します。 どこかおかしなところがないか教えていただけないでしょうか。 ::CoInitialize(NULL); COSERVERINFO serverInfo = { 0, "192.168.1.2", NULL, 0 }; MULTI_QI qi = { &__uuidof(ITest), NULL, S_OK }; HRESULT hr = CoCreateInstanceEx( __uuidof(Test), NULL, CLSCTX_REMOTE_SERVER, &serverInfo, 1, &qi); ITestPtr p; p.Attach(reinterpret_cast<ITest*>(qi.pItf)); p->func(); p = NULL; ::CoUninitialize();
- 135 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 19:13:00 ]
- >>133
Shell32.Shell.TrayProperties
- 136 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 19:34:42 ]
- >>134
サーバ側の用意ができていないんじゃね? 時間がかかって失敗といえば、たいてい接続のタイムアウトだし。 サーバ側のDCOM関連の設定を見直しだな。
- 137 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 19:38:46 ]
- それじゃ使い方わからんと思うけど
- 138 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 19:49:24 ]
- DCOM関連の設定というのがあるんですか。
そのあたりの詳しいやり方が説明されてるサイトとか知りませんか?
- 139 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 20:12:11 ]
- dcomcnfg
- 140 名前:デフォルトの名無しさん [2008/05/18(日) 20:59:40 ]
- Vistaで追加されたBeginBufferedPaint等のAPIって何のために使うんでしょうか?
MSDNで探してもリファレンスは見つかるけど これを使う目的やメリットがわからなくて・・・・
- 141 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 21:03:32 ]
- >>133
START shell:::{0DF44EAA-FF21-4412-828E-260A8728E7F1}
- 142 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 22:32:40 ]
- >>140
多分GDIがソフトウェアレンダラになったから、これまでみたいにGDIだけで同じ事をすると XPより重くなるので専用のAPIを用意して誤魔化したのだと予想
- 143 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 22:50:05 ]
- >>140
自動ダブルバッファリングみたいな感じ? Vistaだとパフォーマンス上げるのに必須だから、楽に使えるAPIを用意した、ってところかな。 一通り目を通してみたが、Animation系は結構使えそうだ。
- 144 名前:140 mailto:sage [2008/05/18(日) 23:56:23 ]
- >>142,143
一応使ってみた感じだと画像がちらつかないのでダブルバッファリング用のAPIだと思うのだけど、 今までのようなメモリDCを使わずに、専用のAPIを用意した、という認識でいいのかどうかちょっと不安。 メモリDC使うのと大して手間はかからないような気がしないでもない。 Alpha値セット用のBufferedPaintSetAlphaとかも用意されてるみたいだけど。 こういう時に使うと便利!っていう説明が欲しいなぁ。
- 145 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 00:01:15 ]
- >>143>>144
従来の方法(CreateCompatibleBitmapで作ったDDBに描画してからBitBltする)だと XP以前のDDBは大抵VRAM上に確保されてVGAの恩恵を得られたが、Vistaではそうは行かなくなったので その辺を解決する専用APIを用意したのじゃないかと
- 146 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 13:35:23 ]
- >>145
なるほどね。 Animation系のも使ってみた。 アニメーションの前後のDCを一度のAPI呼び出しで取得できるんだ。 実際に描画してみたら軽いフェードアウト効果?みたいなぼわっとした残像も描画された。 VistaっぽいちゃぁVistaっぽいな。
- 147 名前:デフォルトの名無しさん [2008/05/19(月) 23:22:49 ]
- SetWindowsHookEx して注入したDLL内でCOMコンポーネントを使いたいのですが、
CoInitialize / CoUninitialize しても大丈夫なのでしょうか? 注入先のプロセス内ですでに呼ばれていたらまずそうな気がします。
- 148 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 23:31:09 ]
- それらの関数は、上手くネストするように同じ回数だけ呼べば問題ない。
全く問題ないわけではないけど。
- 149 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 23:36:03 ]
- ListViewで選択したリストが青くなってわかりやすくなるけどそのウィンドウがフォーカスを失うとき(Tab押下、windowsボタン押下など)灰色になるのですが、
これがフォーカスを失っても青のままにしたいのですがどのようにすればよいのでしょうか? 普通のWM_NOTIFYではフォーカスを失ったときブレークポイントにかからなくて、 WM_ACTIVATEではNMHDR構造体がなくてカスタムドローできません。 いい方法があったらご教授願います。
- 150 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 23:58:14 ]
- 別スレッドのキャレットを変更したいと思い
GetGUIThreadInfo(GetWindowThreadProcessId(NULL, &fwid), >info); HideCaret(gtinfo.hwndCaret); CreateCaret(gtinfo.hwndCaret, NULL, widht, height); ShowCaret(gtinfo.hwndCaret); とやってみましたが上手くいきません、 hwndCaretまでは取れいるようだし、 自プロセスであれば変更されます。 何が間違えているのか教えてください。 やはり、いくつかあるキャレット変更ソフトのように DLLをフックさせなければ無利なのでしょうか?
- 151 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 00:28:13 ]
- 全然知らんから適当だが、
別スレッドのUIを操作するのは無理だと思う
- 152 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 00:32:57 ]
- >>149
LVS_SHOWSELALWAYSスタイル付ければいいような気がする
- 153 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 01:22:59 ]
- >>148
試したところ上手くいきました。ありがとうございます。 検証コード #include <windows.h> #include <msxml2.h> #include <stdio.h> #pragma comment(lib, "ole32") #pragma comment(lib, "msxml2") void examine() { static int counter = 0; IXMLDOMDocument* pv = NULL; HRESULT hr = CoCreateInstance(CLSID_DOMDocument2, NULL, CLSCTX_INPROC_SERVER, IID_IXMLDOMDocument, (void**)&pv); printf("%d : hr=%08lx\r\n", ++counter, hr); if (SUCCEEDED(hr) && pv) { pv->Release(); } } void main () { examine(); CoInitialize(NULL); examine(); CoInitialize(NULL); examine(); CoInitialize(NULL); examine(); CoUninitialize(); examine(); CoUninitialize(); examine(); CoUninitialize(); examine(); }
- 154 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 04:48:05 ]
- >>153
DllMainでCoInitializeを呼ばないように注意して書いた方がいいぞ
- 155 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 20:02:02 ]
- >>152
それはすでにやっていて、フォーカスが外れても灰色にはなるのですが その灰色になる時に青いままにしたいのですが無理でしょうか?
- 156 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 20:08:52 ]
- できないことも無いけど、フォーカスが無いことをユーザーはどうやって知るの?
- 157 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 20:17:54 ]
- 教えてから訊いてやれよw
- 158 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 21:32:45 ]
- >>151
そうなんですかね、 あきらめてフックしなきゃダメか。
- 159 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 22:40:29 ]
- >153
それはアパートメントはどーなるんだ? MTAとか混じってたら死亡でないのか?
- 160 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 22:48:05 ]
- 海外ドメイン規制で書き込めねー
>>51 やってみたんですがダメでした。成功したらまた来ます。
- 161 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 23:02:34 ]
- >>159
エラーになってRPC_E_CHANGED_MODEが返ってくる。 msdn.microsoft.com/en-us/library/ms695279(VS.85).aspx
- 162 名前:デフォルトの名無しさん [2008/05/21(水) 09:34:44 ]
- BMPの描画でダブルバッファリングを行いたいのですが、
〔背景BMP+新BMP〕HDC hdcBmp = 背景BMP HDC hdcBmp3 = CreateCompatibleDC(hdcBmp); HBITMAP hBMP3 = CreateCompatibleBitmap(hdcBmp,300,300); SelectObject(hdcBmp3,hBMP3); BitBlt(hdcBmp3背景BMPの上に新BMPを描画); case WM_PAINT: BitBlt(GetDC(hWnd),hdcBmp3を描画); 背景BMPに新BMPをくっつけたものを描画したいのですが 背景BMPが黒で塗り潰されてしまいます。 ┏━━━━━━━━━┓ ┃背景BMP ┃ ┃┏━━━━━━━┓┃ ┃┃新BMP ┃
- 163 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 09:46:00 ]
- それでどうしたいんだ?
- 164 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 09:48:55 ]
- 背景BMPが黒になるのを防ぎたいです。
- 165 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 09:53:39 ]
- >>162,164
その疑似コードだけ見ると、hdcBmp3に背景BMPを描画していないように 思えるが。
- 166 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 09:58:47 ]
- >>165
BltBlt(hdcBMP3,背景BMP); BltBlt(hdcBMP3,新BMP); これで大丈夫でしょうか?
- 167 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 10:50:26 ]
- >>162
CreateCompatibleBitmapにメモリDCを指定しては駄目。 あと >case WM_PAINT: >BitBlt(GetDC(hWnd),hdcBmp3を描画); これは駄目だろ
- 168 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 10:57:03 ]
- >>167
CreateCompatibleBitmapには何を指定すればよいのでしょうか?
- 169 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 12:25:51 ]
- GetDC()あるいはCreateDC("DISPLAY")の結果あたりを渡すのが吉
- 170 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 12:30:01 ]
- 描画用バッファは面倒だから全部DIBSectionでいいよもう
- 171 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 12:39:18 ]
- >>162
突込みどころ満載のソースだな まぁ頑張れw
- 172 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 12:43:18 ]
- >>162
背景と前景を自前で合成して描画すればおk
- 173 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 12:50:05 ]
- GDIはあと何年くらい使われるんだろう
- 174 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 13:05:19 ]
- 俺はwin32APIで作れなくなったら、ウィンドウズソフト開発から身を引く。引退。
MFCとかプログラミングじゃねーよ。あれ
- 175 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 13:44:17 ]
- >>171
突っ込んで下さい。
|

|