Win32API質問箱 Build ..
283:デフォルトの名無しさん
09/03/09 21:46:53
スタックうんぬんというより、クラスのインスタンス生成の概念がわかってないんじゃない?
284:281
09/03/09 22:02:47
>>282
レスありがとうございます。
おっしゃるとおりでした。
main()を抜ける時にBitmapのデストラクタが実行されてすでに開放された領域を読もうとしていたようです。
>>282
レスありがとうございます。
クラスのインスタンス生成の概念がわかってないっぽいです。
自分のやり方だと確保する領域が固定だと
Gdiplus::Bitmap bitmap1(TEXT("C:\\WINDOWS\\winnt.bmp"));
という風にスタックに確保するのですが、
他の人は
Gdiplus::Bitmap*pBitmap1=new Gdiplus::Bitmap(TEXT("C:\\WINDOWS\\winnt.bmp"));
という風に確保する領域が固定でもnewで確保しているようです。
なぜそうするかは理解できません。
285:デフォルトの名無しさん
09/03/09 22:07:53
newを使いたくないなら無理やり↓みたいにスコープ作ればよいのでは。
{
Gdiplus::Bitmap bitmap1(TEXT("C:\\WINDOWS\\winnt.bmp"));
printf("%d\n",bitmap1.GetWidth());
}
286:281
09/03/09 22:22:46
>>285
レスありがとうございます。
デストラクタのタイミングを制御する必要がある時意外でも、
たとえば、デストラクタのタイミングを制御する必要がなく、いっけんnewを使う必要が無いような時も
自分のやり方だと
Gdiplus::Graphics graphics1(hdc1);
という風にスタックに確保する場面で
他の人は
Gdiplus::Graphics*pGraphics1=new Gdiplus::Graphics(hdc1);
という風にnewで確保しているようです。
この理由がわかりません。
287:デフォルトの名無しさん
09/03/09 22:53:01
>>286
クラスのインスタンスでも、基本的には変数と同じ使用方法でいいと思うけどね。
#関数内でのみの使用、永続的な使用等で切り分け
わざとnewで確保するのは、明示的にdeleteを呼ぶことでそこでデストラクタが
実行されることを示したいからじゃない?
ま、別にこだわる必要はなし。
下手にnewばかりしてメモリリークさせるなら>>281の方が合理的なのは確か。
288:デフォルトの名無しさん
09/03/09 22:59:10
コンストラクタでGdiplusStartup呼んで、デストラクタでGdiplusShutdown呼ぶクラス一個つくって
mainの頭に置こうぜ
289:デフォルトの名無しさん
09/03/09 23:02:40
>>286
サイズがデカいクラスをスタックにとりたくない場合はnewする場合はある。
Gdiplusがそこまでデカいかは知らんが。
290:デフォルトの名無しさん
09/03/09 23:04:02
> Gdiplusがそこまでデカいかは知らんが。
実装依存
291:デフォルトの名無しさん
09/03/09 23:09:29
Gdiplusの実装とか
292:デフォルトの名無しさん
09/03/09 23:14:07
>>281のエラーの出るコードをコンパイル実行するとメモリリーク発生だな
何でだろ?
293:デフォルトの名無しさん
09/03/09 23:15:15
>>289
言われてみれば、他作クラスはサイズが分からんから
念のためにヒープの方がいいかもな
294:デフォルトの名無しさん
09/03/09 23:19:49
readprocessmemory関数を使いたくてVB2005ExpressEditionでプログラムを組んでみたのですが、
エラーが出て動きません。なぜでしょうか??いろいろググってみたけどわかりませんでした。
やりたいことは単にプロセスのメモリを読みたいだけなんですが・・・
「AccessViolationExceptionはハンドルされませんでした。
保護されているメモリに読み取りまたは書込み操作を行おうとしました。他のメモリ
が壊れていることが考えられます。」
Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hWnd As Long, ByRef lpdwProcessId As Long) As Long
Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpszClassName As String, ByVal lpszWindowName As String) As Long
Dim hProc As Long
Dim PID As Long
Dim threadid As Long
hProc = FindWindow("Notepad", vbNullString)
threadid = GetWindowThreadProcessId(hProc, PID) ←ここの処理でエラーになる
295:デフォルトの名無しさん
09/03/09 23:23:00
>>292
すでに>>285が答えてるだろ
bitmap1が関数の終わりで解放処理を行おうとするが
その時にはGdiplusShutdownでgdiplusの環境が破棄されてるから正常に終了できない
だからローカル変数のスコープを{}で狭い範囲に閉じ込めなければならない
296:デフォルトの名無しさん
09/03/09 23:25:43
>>294
大幅に間違ってる。とりあえず、リファレンスを見直せ。
297:デフォルトの名無しさん
09/03/09 23:26:33
HWND な変数に hProc なんて名前を付けるのはやめれ・・・
298:デフォルトの名無しさん
09/03/09 23:41:32
>>295
すまん、>>282がそのものずばりのこといってるんだな、俺、ダメポ
デストラクタが呼ばれる前にShutdownすれば、当然、メモリリーク出るわな
Gdiplus::GdiplusShutdown(gdiToken); でShutdownさているのに
プログラム終了時にGdiplus::Bitmap bitmap1のデストラクタ呼ぶんだからな
299:281
09/03/09 23:48:25
>>287
>>わざとnewで確保するのは、明示的にdeleteを呼ぶことでそこでデストラクタが
>>実行されることを示したいからじゃない?
僕もそう思います。
>>288
それもいい方法だと思います。
>>289
newを使う理由が1つわかりました。ありがとうございます。
>>290
とりあえずスタックが壊れるほど大きくはなさそうです。
>>292,298
僕も282さんに聞くまで気付きませんでした。
>>293
慎重にやるならそれもいい方法ですね。
>>295
追加説明ありがとうございます。
300:デフォルトの名無しさん
09/03/10 00:01:49
>>293
他作クラスであってもスタック上に確保できるならサイズは調べられるだろ。
そうでないとそもそもコンパイル不能だ。
まあ、将来的に変更される可能性はあるが。
ちなみに手元の環境だとsizeof(Bitmap)は16で画像の実態は内部で保有してるポインタの先にある。
301:デフォルトの名無しさん
09/03/10 00:10:50
他人が作ったライブラリの初期化と後始末を同じ関数内でやるのは細心の注意がいるね
302:デフォルトの名無しさん
09/03/10 00:11:28
>>300
更に言われてみれば、まともなメーカーが提供してるクラスだと
確かに馬鹿でかいクラスのオブジェクトをスタックに積む、なんて
アホなクラスなんぞ無いはずだよな。。。
>コンパイル不能
StackOverflowってコンパイル時に分かるものだったっけ?
303:デフォルトの名無しさん
09/03/10 00:16:13
スタックにばかでかい配列取ろうとしたときは怒られるな
304:デフォルトの名無しさん
09/03/10 00:26:58
>>303
thx
警告レベルが低いせいかあまり見た記憶が無いな
今度試してみよう
305:デフォルトの名無しさん
09/03/10 10:06:06
>>280
>>276
306:デフォルトの名無しさん
09/03/10 10:14:17
ここは荒らしていいスレじゃなかったっけ
307:デフォルトの名無しさん
09/03/10 13:11:43
OSではなくソフトウェアから、パフォーマンス オプションの「パフォーマンスを優先する」に設定することは可能でしょうか?そのようなAPIをご存知の方いますでしょうか?
308:デフォルトの名無しさん
09/03/10 13:25:29
OSもソフトウエア
309:デフォルトの名無しさん
09/03/10 13:30:44
>>307
そういうAPIがあるかどうかは知らんが、力技でいくなら、レジストリ書き換えて WM_SETTINGCHANGE を発行すれば?
310:デフォルトの名無しさん
09/03/10 13:30:46
>>308
知らないならレスするなクズ
311:デフォルトの名無しさん
09/03/10 13:32:23
G(S)etPriorityClass
312:デフォルトの名無しさん
09/03/10 13:45:49
HKLM\SYSTEM\CurrentControlSet\Control\PriorityControl\Win32PrioritySeparation
をレジストリAPIで適切な値に書き換えて再起動。
313:307
09/03/10 13:54:40
ありがとうございます。レジストリ強制書き換えなら可能なのですね。APIでG(S)etPriorityClassでもできるのでしょうか?
314:デフォルトの名無しさん
09/03/10 13:59:41
システムの動作に関わるレジストリを勝手に書き換えるソフトか
ウィルス並だな
315:デフォルトの名無しさん
09/03/10 14:03:32
>>314
お前みたいなクズはウィルスよりたちが悪いぜ。
316:デフォルトの名無しさん
09/03/10 14:17:00
>>315
知らないならレスするなクズ
317:デフォルトの名無しさん
09/03/10 22:48:00
WSHはCOMですか?
318:デフォルトの名無しさん
09/03/10 22:49:54
>>317
はい。API ではないのでスレ違いだと思われます。
319:デフォルトの名無しさん
09/03/10 23:17:54
ActiveScriptはぎりぎりこのスレの範疇にできるだろうけど、
WSHは外れていると思う。
320:デフォルトの名無しさん
09/03/11 02:09:42
ウィンドウのクライアント領域をドラッグしてウィンドウの位置を移動させたいんですが、ちょっとうまくいかないので質問。
WM_MOUSEMOVEでマウスボタンが押されていたらドラッグとみなし、SetWindowPosで前回位置との差分分移動としています。
しかし、これだとマウスが動くと同時にウィンドウがガタガタと元の位置辺りとマウス位置あたりに行ったり来たり
を繰り返してしまって、とても汚いです。どういう風にやるとタイトルバーをドラッグした時のように綺麗に動くのでしょうか?
ちなみにマウスの座標はクライアントでもスクリーンでもダメでした。
321:デフォルトの名無しさん
09/03/11 02:20:15
WM_NCHITTESTでHTCAPTION返せ
322:デフォルトの名無しさん
09/03/11 06:28:31
>>320
いい加減に書くとそうなる
(移動した時にWM_MOUSEMOVEが発生するので、WM_MOUSEMOVE→移動→WM_MOUSEMOVE→・・・を繰り返してしまう)
323:デフォルトの名無しさん
09/03/11 07:45:14
WM_LBUTTONDOWNでフラグ立てて、WM_LBUTTONUPで落とすような
処理が必要じゃないの?
324:デフォルトの名無しさん
09/03/11 09:00:29
知らない人はレスしなくていいです。
325:デフォルトの名無しさん
09/03/11 09:25:56
前回位置との差分じゃなくてWM_LBUTTONDOWNが来た時のカーソル座標と現在のカーソル座標との差分を使うんだよ。
ていうかこんなのググればサンプルがすぐ見つかるんだから深夜に糞スレで質問するぐらいなら自分で探しなよ。
326:デフォルトの名無しさん
09/03/11 10:04:15
つーか>>321で一発なのにな
327:デフォルトの名無しさん
09/03/11 10:24:15
>>325
そんなアホな処理しなくても>>321でおk
328:デフォルトの名無しさん
09/03/11 10:50:14
むしろ>>321でいいのにな
329:デフォルトの名無しさん
09/03/11 10:51:07
むしろ>>321でいいのにな
330:デフォルトの名無しさん
09/03/11 12:02:18
>>321でいいとかマジで言ってるならアホすぎ
331:デフォルトの名無しさん
09/03/11 12:27:19
case WM_LBUTTONDOWN:
::PostMessage( hWnd, WM_NCLBUTTONDOWN, HTCAPTION,i lParam);
break;
332:デフォルトの名無しさん
09/03/11 12:42:23
タイトルバー以外の部分をドラッグしてウィンドウを移動させる
URLリンク(hp.vector.co.jp)
333:デフォルトの名無しさん
09/03/11 14:08:28
>>331
コンパイルエラーだろバカ
334:デフォルトの名無しさん
09/03/11 14:28:31
#define i
335:デフォルトの名無しさん
09/03/11 14:33:24
333 はおそらく実際にコンパイルしてみたに違いないw
336:デフォルトの名無しさん
09/03/11 14:36:08
そんなもんコンパイルしなくても見ればわかるだろ JK
337:デフォルトの名無しさん
09/03/11 14:41:37
つーかこんな所に貼られたコードを安易にコンパイルして実行する奴なんて居るのか?
得体の知れないファイルを平気でクリックして実行するレベルだろ
338:デフォルトの名無しさん
09/03/11 14:44:38
>>337
このスレに貼られたコードの意味が分からない奴なんて居るのか?
339:デフォルトの名無しさん
09/03/11 14:47:51
>>338
居るよ
>>337とか
340:デフォルトの名無しさん
09/03/11 15:02:01
むしろこのスレに貼られたコードの意味が分かる奴なんて居るのか?
341:デフォルトの名無しさん
09/03/11 15:04:27
>>340
いるよ
>>339とか
342:339
09/03/11 15:07:17
いや俺は.netしか使ったことないから分かってないよw
343:デフォルトの名無しさん
09/03/11 15:07:39
NCHITTESTだと、どのボタンが押されたかとか、自作ライブラリとの親和性が低いとかあるので
>>325の方法で大方解決しました。ありがとうございました。
ところでGDI+の半透明描画や画像の回転機能を自分で作りたいんですが、あのライブラリは
ハードの機能を使ったりしているんでしょうか?自分でちまちまピクセルごとの計算をしたら
とてもゲームに使えるようなスピードにならない気もするんですが・・・
344:デフォルトの名無しさん
09/03/11 15:28:34
やってみたのか
345:デフォルトの名無しさん
09/03/11 15:31:31
やってみたのだ
346:デフォルトの名無しさん
09/03/11 15:39:54
これでいいのだ
347:デフォルトの名無しさん
09/03/11 16:11:23
まだやってないです
やるとしたら、描画命令来るたびにロックするとかかな
348:デフォルトの名無しさん
09/03/11 17:22:55
>>343
GDI+はソフトウェア描画だよ。
349:デフォルトの名無しさん
09/03/11 17:34:05
>>330
何がアホなのか言ってみな
350:デフォルトの名無しさん
09/03/11 18:17:52
>>348
ソフトウェア処理だけど一応MMX/SSEなどは使ってるみたい
まあゲームで使える速度じゃないのは言うまでも無いけど
351:デフォルトの名無しさん
09/03/11 19:34:55
____
/ \ /\ キリッ
. / (ー) (ー)\
/ ⌒(__人__)⌒ \ < 何がアホなのか言ってみな
| |r┬-| |
\ `ー'´ /
ノ \
/´ ヽ
| l \
ヽ -一''''''"~~``'ー--、 -一'''''''ー-、.
ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒))
____
/_ノ ヽ、_\
ミ ミ ミ o゚((●)) ((●))゚o ミ ミ ミ
/⌒)⌒)⌒. ::::::⌒(__人__)⌒:::\ /⌒)⌒)⌒)
| / / / |r┬-| | (⌒)/ / / // だっておwwwwwww
| :::::::::::(⌒) | | | / ゝ :::::::::::/
| ノ | | | \ / ) /
ヽ / `ー'´ ヽ / / バ
| | l||l 从人 l||l l||l 从人 l||l バ ン
ヽ -一''''''"~~``'ー--、 -一'''''''ー-、 ン
ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒))
352:デフォルトの名無しさん
09/03/11 19:37:31
ほらな
答えられない
353:デフォルトの名無しさん
09/03/11 20:04:05
>>348ぐぐ そうですか
バリバリフレームレート出まくってるゲームで描画が5割以上GDI+みたいなゲームってありますか?
GDI+入れて組むのめんどくてどんなもんなのかよくわからんのです。知ってる人いたらラッキーなんで教えてくださいよ先輩
354:デフォルトの名無しさん
09/03/11 20:09:51
>>353
妄想レスだがフレームレート上げたいゲームならDirectXを普通に使うんじゃない?
355:デフォルトの名無しさん
09/03/11 20:34:18
[環境]非MFCでWin32API(VC2005でC++)です。
[質問]画面に入りきらないテキストを描画して、スクロールしたら、
上の方の文章を消して、下の方の文章を表示するプログラムが組めません。
[どこまでできたの?]
DrawText作ってテキストを表示。
スクロールするだけのWindow。
スクロールした値は取れるので、それをDrawTextに反映させたいのですが、
どうやればいいでしょうか?
356:デフォルトの名無しさん
09/03/11 20:35:58
素直にエディットコントロール使うんじゃだめなのか…
357:デフォルトの名無しさん
09/03/11 20:48:00
>>356 レスサンクス。
もっと、初期の段階だったらそれも考えれるのですが、、、ここの部分組んだらプログラム完成するんです、、、。
DrawTextの第4引数のRECT構造体の値があるんですが、
これって、マイナスの値入れるのは危険ですか?
RECT rc;
GetClientRect( hWnd, &rc );
rc.top -= 100;
358:デフォルトの名無しさん
09/03/11 20:48:54
GDI+の用途って画像ファイルの入出力とアンチエイリアスつきのベクタ描画ぐらいじゃね
359:デフォルトの名無しさん
09/03/11 21:01:11
>>357
問題はない。
360:357
09/03/11 21:04:13
>>359 レスありがとん。
それを聞いて安心しました。
あとは、テキストのたての長さを割り出す作業だけでいけそうです。
ありがとうございました。
361:デフォルトの名無しさん
09/03/11 21:48:35
メモリDCに最初から全部描いておいて、スクロールの都度、必要な部分だけBitBltする手もあるぞ
362:デフォルトの名無しさん
09/03/11 21:58:41
早く数学を教えてください。
待て待て
363:デフォルトの名無しさん
09/03/11 22:49:25
>>354それもそうですね。
>>358GDIだけだと結構やりたいこと出来ないんですよ・・・
364:デフォルトの名無しさん
09/03/11 23:24:54
CloseHandleの戻り値って確認してる?
正しいハンドルを渡してもエラーになる場合ってどんなとき?
365:デフォルトの名無しさん
09/03/11 23:27:49
::GetLastError()
366:デフォルトの名無しさん
09/03/11 23:38:41
>>351
アホ乙w
367:デフォルトの名無しさん
09/03/12 00:15:36
>>364
通信系だと、通信不良とか?
368:デフォルトの名無しさん
09/03/12 00:49:05
プロパティシートで
psp.lParam=(LPARAM)Data; とlParamに構造体 DATAを設定しているのですが、
受取先の、Windowでは死んでいます。うまく受け渡しが
できません。
psp.pszTemplate = "IDD_D";
psp.pfnDlgProc = (DLGPROC)Function0;
psp.lParam=(LPARAM)Data;
hpsp[0] = CreatePropertySheetPage(&psp);
memset(&psh, 0, sizeof(PROPSHEETHEADER));
psh.dwSize = sizeof(PROPSHEETHEADER);
psh.dwFlags = PSH_NOAPPLYNOW;
psh.hInstance = hInst;
psh.hwndParent = hDlg;
psh.nPages = 1;
psh.phpage = hpsp;
psh.pszCaption = "設定";
(HWND)PropertySheet(&psh);
うまく受け渡すにはどうしたらいいでしょうか
369:デフォルトの名無しさん
09/03/12 01:00:26
Dataの型は DATA か DATA* か? 前者なら間違い
370:デフォルトの名無しさん
09/03/12 01:01:18
肝心の受け取り部分が書いてないが
((PROPSHEETPAGE*)lParam)->lParamにしてるか?
371:デフォルトの名無しさん
09/03/12 01:57:57
>>364
ディクス書き込みで、フラッシュ時に IO エラーが発生するとか、
ディスクフルになるとか。
372:デフォルトの名無しさん
09/03/12 08:34:59
>>371
ファイル書き込みは遅延書き込みありでキャッシュされているから、
CloseHandle()の戻り値では、アプリケーションからディスクI/O時の
エラーは検出されないと思う。イベントログに上がるだけでは?
キャッシュを書き戻す処理に関係なく、キャッシュとディスク上の配置は
マップ管理されていると思うので、ディスクフルはWriteFile()の戻り値で
エラーが返されるはず。
当然だが、オープンされていない間違ったハンドルを渡せばエラーが返る。
373:デフォルトの名無しさん
09/03/12 12:26:27
____
/_ノ ヽ、_\
ミ ミ ミ o゚((●)) ((●))゚o ミ ミ ミ
/⌒)⌒)⌒. ::::::⌒(__人__)⌒:::\ /⌒)⌒)⌒)
| / / / |r┬-| | (⌒)/ / / // >>366 そんなこと言うなよ。仲間だろ?wwwwwww
| :::::::::::(⌒) | | | / ゝ :::::::::::/
| ノ | | | \ / ) /
ヽ / `ー'´ ヽ / / バ
| | l||l 从人 l||l l||l 从人 l||l バ ン
ヽ -一''''''"~~``'ー--、 -一'''''''ー-、 ン
ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒))
374:デフォルトの名無しさん
09/03/12 18:11:18
ボタンの描画についての質問です。
グループボックスや、ラジオボタンが描画されるとき、文字列描画部分の背景色を透過することはできないでしょうか。
MSDNを読むとWM_CTLCOLORBTNはオーナードローのボタンでないと、意味が無いということで (実際無理でした)
サブクラス化をして、WM_ERASEBKGNDを捕まえて何も処理せずにreturnしたり、
GetClassInfoEx → styleメンバに CS_OWNDC を OR演算 → 新しいクラス登録、その後 WM_CREATE でSetBkMode(hdc,TRANSPARENT)を試してみたりしましたが、どちらもできませんでした。
ボタンの描画自体はデフォルトの処理を任せたいのですが、何か方法はないでしょうか。
375:デフォルトの名無しさん
09/03/12 18:16:18
WS_EX_TRANSPARENTを指定してWM_CTLCOLOR〜でNULLブラシを返せば?
376:デフォルトの名無しさん
09/03/12 18:30:15
>>375
レス有難う御座います。
試してみましたが、変化が現れませんでした。
377:デフォルトの名無しさん
09/03/12 18:32:15
WM_CTLCOLORBTN or WM_CTLCLORSTATIC にて
SetBakMode( hDC, TRANSPARENT);
return (HBRUSH)GetStockObject( NULL_BRUSH);
378:デフォルトの名無しさん
09/03/12 18:50:07
>>377
コンパイルエラーだろバカ
379:デフォルトの名無しさん
09/03/12 18:56:37
STATICコントロールは WM_...STATIC で透過させることが出来ますが、
BUTTONコントロールはどうもうまくいかないみたいです・・・。
素直に諦めることにします。
380:デフォルトの名無しさん
09/03/12 19:03:33
普通に可能なんだが・・・
ああ馬鹿なのね
381:デフォルトの名無しさん
09/03/12 19:21:27
面倒だから煽らなくていいです
382:デフォルトの名無しさん
09/03/12 19:57:00
>>380はわかってない馬鹿とみた
383:デフォルトの名無しさん
09/03/12 20:03:24
>>382
ん?悔しかったの?www
384:デフォルトの名無しさん
09/03/12 20:07:28
ラジオボタンやグループボックスの背景なら>>375>>377が書いてる方法で透過するだろ。
前にそういうコード書いたことあるし。
385:デフォルトの名無しさん
09/03/12 20:46:16
>>384
新しくプロジェクトを始めて、ダイアログベースではないウィンドウ上で試してみたら、成功しました。
リソースから作ったダイアログ上のタブコントロールの上にこれらのBUTTONコントロールを配置した時に、見栄えが悪かったため
最初の質問をさせていただきましたが、グループボックスをリソースからではなく、
WM_INITDIALOG内にて、親ウィンドウをタブコントロールとして生成したところ、やりたかったことを実現することが出来ました。
レスしてくれた方々、有難う御座いました。
386:デフォルトの名無しさん
09/03/12 20:58:08
>最初の質問をさせていただきましたが、グループボックスをリソースからではなく、
まさか コントロールIDが IDC_STATIC のままだったとかいうオチじゃないだろうな。
387:デフォルトの名無しさん
09/03/12 21:01:56
いや、IDは数字を直指定しているのでそれはないです。
388:デフォルトの名無しさん
09/03/12 21:38:45
>>382が分かってない馬鹿でした
389:デフォルトの名無しさん
09/03/12 22:44:12
ブラウザでページを開いて、
今どの入力項目にカーソルがあたっているかを調べる方法ってありますか?
390:デフォルトの名無しさん
09/03/13 07:10:04
>>389
ブラウザまで自作すれば出来るんじゃね
391:デフォルトの名無しさん
09/03/13 07:13:03
>>390
俺もわかんねけどDOM構造調べてカーソルチェックするしかないんじゃね?
392:デフォルトの名無しさん
09/03/13 07:17:26
IEで、現在選択されている文字列をクリップボードにコピーさせる操作を、
別プロセスから行うのはAPIで可能ですか?
393:デフォルトの名無しさん
09/03/13 07:23:50
>>392
SendMessage()でいいんじゃね?
激しくメンドクサイが・・・
394:デフォルトの名無しさん
09/03/13 08:18:47
>>391
なるほど
ところでそのカーソルのチェックってどうやったらできますか?
395:デフォルトの名無しさん
09/03/13 08:22:31
>>394
気持は分かるがそこまでだ。DOMはWin32じゃない。
その辺のHTMLか言語スレでやってくれ。
396:デフォルトの名無しさん
09/03/13 10:47:02
Windowを列挙して座標から該当するWindow(コントロール)を探す。
その名前とHTMLを照合する・・ってぐらいしか思いつかないな。
397:デフォルトの名無しさん
09/03/13 11:03:27
アドウェアの開発を手伝ってやることはないと思うんだ
398:デフォルトの名無しさん
09/03/13 11:09:24
どちらかというとカード番号とかIDを奪うスパイウェアっぽい
399:デフォルトの名無しさん
09/03/13 11:28:01
フォームに自動入力するのは作ったことある
フォームに入ってるデータも隠しを含めて全部読めたけど
カーソル位置なんか考えないな
400:デフォルトの名無しさん
09/03/13 11:33:52
>>396
バカ、IEはウィンドウレスだからコントロールは無いよ
401:デフォルトの名無しさん
09/03/13 11:35:45
>>400
402:デフォルトの名無しさん
09/03/13 11:45:50
このスレウザイのが張り付いてるな
自分の仕事と思ってるのか知らんが一番迷惑
面白いレスしようと思ってワクワクしてこのスレ開いてんのかな?
一番寒いのに
403:デフォルトの名無しさん
09/03/13 12:17:13
>>402
君が一番寒いよ
404:デフォルトの名無しさん
09/03/13 12:18:14
>>403
そして君が二番目
405:デフォルトの名無しさん
09/03/13 12:30:51
>>402
知らないならレスしないで下さい。寒いだけです。
406:デフォルトの名無しさん
09/03/13 12:37:34
さぶ
407:デフォルトの名無しさん
09/03/13 13:28:35
>>402
知識の還元してるんでしょ?喜ぶことで煽ることではないと思うが
ただし、的を射る場合に限るw
408:デフォルトの名無しさん
09/03/13 13:37:59
>>407
寒い自己レス乙
409:デフォルトの名無しさん
09/03/13 13:41:40
おいおい、せめて引きこもりピザは2chで役に立てwww
410:デフォルトの名無しさん
09/03/13 13:45:26
>>409
自己紹介乙
411:デフォルトの名無しさん
09/03/13 13:49:21
>>410
自作自演乙
412:デフォルトの名無しさん
09/03/13 13:53:53
>>411
寒い自己レス乙
413:デフォルトの名無しさん
09/03/13 14:28:32
あるプロセスが走っているか調べるAPIはありますでしょうか?
具体的にはタスクマネージャーが動いているか知りたいです。
414:デフォルトの名無しさん
09/03/13 14:30:58
>>413
スパイウェアですか?
415:デフォルトの名無しさん
09/03/13 14:31:27
>>413
EnumWindowsでタスクマネージャWindowを探すのどうよ?
416:413
09/03/13 14:32:21
ちがいます。
417:413
09/03/13 14:35:09
正解です。
418:413
09/03/13 14:35:48
>>415
ありがとうございます。試してみます。
419:デフォルトの名無しさん
09/03/13 14:38:44
ちんちんが大きくなるのですがどうしたらいいですか?
420:デフォルトの名無しさん
09/03/13 14:43:41
>>389=>>413?
タスクマネージャからプロセス隠蔽してブラウザで入力した個人情報を盗むスパイウェアを作ってるんですね
次はrootkitの作り方を質問してくるのかな
421:デフォルトの名無しさん
09/03/13 15:00:12
何でこのスレは直ぐにスパイウェアだとか、そんな悪い方向に持ってくの?
422:デフォルトの名無しさん
09/03/13 15:04:06
あとはpsapiとかかね
423:デフォルトの名無しさん
09/03/13 15:04:44
悪い方向のソフトを作る目的で質問する馬鹿がいるから。
424:デフォルトの名無しさん
09/03/13 15:05:56
psapiってプラットだったっけ?
昔めんどくさくてフリーのEXE拾ってきた覚えたあったなぁ
425:デフォルトの名無しさん
09/03/13 15:09:16
>>413
結局ナニ作るの?そろそろ教えてくれないよこれ。
426:デフォルトの名無しさん
09/03/13 15:11:35
日本語でおk
427:デフォルトの名無しさん
09/03/13 15:13:19
タスクマネージャーを監視する目覚ましと時計(MP3ネットラジオ付)です。
428:デフォルトの名無しさん
09/03/13 15:16:32
まだ目覚まし粘着君いたんだw
すげーしつこいw
429:デフォルトの名無しさん
09/03/13 15:16:45
やばいwww天才発見www
その発想は無かったわwwwwwwwwwwwwwwwwwwwwwww
出来ればなぜにタスクマネージャー見るのか教えて。
煽りではなく、後学のために。どんな用途に使えるの?
430:デフォルトの名無しさん
09/03/13 15:21:49
>>429
お前には関係ないですよ。
431:デフォルトの名無しさん
09/03/13 15:30:31
/ ̄ ̄\
/ _ノ \
| ( ●)(●)
. | (__人__)____
| ` ⌒/ ─' 'ー\
. | /( ○) (○)\
. ヽ / ⌒(n_人__)⌒ \ >>429
ヽ |、 ( ヨ |
/ `ー─− 厂 /
| 、 _ __,,/ \
432:デフォルトの名無しさん
09/03/13 15:31:51
>>429
433:デフォルトの名無しさん
09/03/13 16:05:03
>>429あげ
434:デフォルトの名無しさん
09/03/13 16:07:08
>>429の母です。
435:デフォルトの名無しさん
09/03/13 16:13:00
>>429の娘です。
436:デフォルトの名無しさん
09/03/13 17:32:18
>>429のコーン入りうんこです。
437:デフォルトの名無しさん
09/03/13 18:27:27
>>429
タスクマネージャ監視の使い道を考えてみた。
裏でゴリゴリ悪いことしてるプログラムが、タスクマネージャでCPU使用率を見られて
マークされないように、タスクマネージャが起動している間は大人しくする。
438:デフォルトの名無しさん
09/03/13 19:09:47
>>437
そんな面倒な事しなくても適宜Sleep(n)でも入れて休ませとけばいいだろ
タスクマネージャを騙すっていえば定期的にSetProcessWorkingSetSizeを呼んでメモリ使用量を少なく見せるとか有名だな
439:デフォルトの名無しさん
09/03/13 19:18:45
午後キチ、今日は楽しかったろ
440:デフォルトの名無しさん
09/03/13 19:19:04
>>419
結局ナニ作るの?そろそろ教えてくれないよこれ。
441:デフォルトの名無しさん
09/03/13 20:12:34
チャットなら外でやれ
442:デフォルトの名無しさん
09/03/13 20:32:17
カタカタ
|| ̄ Λ_Λ
||_(Д`; ) 「なに?このスレ・・・」
\⊂´ )
( ┳'
443:デフォルトの名無しさん
09/03/13 21:13:07
>>442
そういうのイラネ
444:デフォルトの名無しさん
09/03/13 21:21:54
>>443
そういうのイラネ
445:デフォルトの名無しさん
09/03/13 23:48:48
soine
446:デフォルトの名無しさん
09/03/14 09:16:01
Win32APIで、MessageBoxみたいに一発呼び出しで
1行テキスト入力だけして入力した文字列を返すようなダイアログを出すAPIってないもんでしょうか?
447:デフォルトの名無しさん
09/03/14 09:20:20
ないもんです
448:デフォルトの名無しさん
09/03/14 09:35:05
EntryDialog
449:デフォルトの名無しさん
09/03/14 09:46:56
URLリンク(www.gamedev.net)
#include <windows.h>
#include <string>
#ifdef UNICODE
typedef std::wstring InputBoxStringType;
typedef LPWSTR InputBoxCharPointerType;
typedef wchar_t InputBoxCharType;
#define InputBoxString(x) L##x
#else
typedef std::string InputBoxStringType;
typedef LPSTR InputBoxCharPointerType;
typedef char InputBoxCharType;
#define InputBoxString(x) x
#endif
450:デフォルトの名無しさん
09/03/14 09:48:50
LRESULT CALLBACK InputBoxWndProc(HWND WndHandle, UINT Message, WPARAM wParam, LPARAM lParam){
static InputBoxStringType *Results = 0;
static HWND InputLabelHandle = 0;
static HWND InputHandle = 0;
switch(Message){
case WM_NCCREATE:{Results = (InputBoxStringType*)((CREATESTRUCT*)lParam)->lpCreateParams;break;}
case WM_CLOSE:case WM_DESTROY:{PostQuitMessage(0);break;}
case WM_COMMAND:{
int NotifyCode = HIWORD(wParam);
int ControlId = LOWORD(wParam);
HWND ControlHandle = (HWND)lParam;
switch(ControlId){
case 1001:{InputHandle = ControlHandle;break;}
case 1002:{if(InputHandle == 0 || !Results){PostQuitMessage(0);break;}
InputBoxCharPointerType Buffer = new InputBoxCharType[256];
GetWindowText(InputHandle, Buffer, 256);
*Results = Buffer;PostQuitMessage(0);break;}
case 1003:{if(InputHandle == 0 || !Results){PostQuitMessage(0);break;}
*Results = InputBoxString("");PostQuitMessage(0);break;}
}break;}
}
return DefWindowProc(WndHandle, Message, wParam, lParam);
}
451:デフォルトの名無しさん
09/03/14 10:17:38
static InputBoxStringType ShowInputBox(HWND OwnerWindowHandle, const InputBoxStringType &InputLabel, const InputBoxStringType &InputText, const InputBoxStringType &Title){
WNDCLASS WndClass;
HWND DialogHandle = 0;
HWND InputLabelHandle = 0;
HWND InputHandle = 0;
HWND OkButtonHandle = 0, CancelButtonHandle = 0;
InputBoxStringType Result = InputBoxString("");
ZeroMemory(&WndClass, sizeof(WNDCLASS));
WndClass.hbrBackground = GetSysColorBrush(COLOR_3DFACE);
WndClass.hIcon = LoadIcon(0, IDI_APPLICATION);
WndClass.hCursor = LoadCursor(0, IDC_ARROW);
WndClass.hInstance = GetModuleHandle(0);
WndClass.lpszClassName = InputBoxString("InputBox");
WndClass.lpfnWndProc = InputBoxWndProc;
RegisterClass(&WndClass);
int X = 0, Y = 0;
int Width = 0, Height = 0;
RECT TempRect;
GetWindowRect(GetDesktopWindow(), &TempRect);
Width = (int)((float)(TempRect.right - TempRect.left) * 0.25f);
Height = 150;
X = ((TempRect.right - TempRect.left) / 2) - (Width / 2);
Y = ((TempRect.bottom - TempRect.top) / 2) - (Height / 2);
452:デフォルトの名無しさん
09/03/14 10:18:25
DialogHandle = CreateWindowEx(0, InputBoxString("InputBox"), Title.c_str(), WS_OVERLAPPEDWINDOW | WS_VISIBLE, X, Y, Width, Height, OwnerWindowHandle, 0, GetModuleHandle(0), (LPVOID)&Result);
int LabelX = 5, LabelY = 5;
int LabelWidth = Width - 10, LabelHeight = 24;
InputLabelHandle = CreateWindowEx(0, InputBoxString("STATIC"), InputLabel.c_str(), WS_CHILD | WS_VISIBLE, LabelX, LabelY, LabelWidth, LabelHeight, DialogHandle, 0, GetModuleHandle(0), 0);
int TBoxX = 5, TBoxY = 29;
int TBoxWidth = Width - 20, TBoxHeight = 24;
InputHandle = CreateWindowEx(0, InputBoxString("EDIT"), InputText.c_str(), WS_BORDER | WS_CHILD | WS_VISIBLE, TBoxX, TBoxY, TBoxWidth, TBoxHeight, DialogHandle, (HMENU)1001, GetModuleHandle(0), 0);
int OkBtnX = (Width / 2) - 75, OkBtnY = Height - 60;
int OkBtnWidth = 75, OkBtnHeight = 24;
OkButtonHandle = CreateWindowEx(0, InputBoxString("BUTTON"), InputBoxString("Ok"), WS_CHILD | WS_VISIBLE, OkBtnX, OkBtnY, OkBtnWidth, OkBtnHeight, DialogHandle, (HMENU)1002, GetModuleHandle(0), 0);
int CancelBtnX = (Width / 2) + 25, CancelBtnY = Height - 60;
int CancelBtnWidth = 75, CancelBtnHeight = 24;
CancelButtonHandle = CreateWindowEx(0, InputBoxString("BUTTON"), InputBoxString("Cancel"), WS_CHILD | WS_VISIBLE, CancelBtnX, CancelBtnY, CancelBtnWidth, CancelBtnHeight, DialogHandle, (HMENU)1003, GetModuleHandle(0), 0);
MSG Message;
ZeroMemory(&Message, sizeof(MSG));
while(Message.message != WM_QUIT){
if(PeekMessage(&Message, 0, 0, 0, PM_REMOVE)){
TranslateMessage(&Message);
DispatchMessage(&Message);}}
return Result;
}
#undef InputBoxString
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int){
InputBoxStringType Result = ShowInputBox(0, L"Please enter your name:", L"Unknown", L"Name Entry");
MessageBox(0, Result.c_str(), L"Your name is:", MB_OK);
return 0;
}
453:デフォルトの名無しさん
09/03/14 10:33:42
>>446
さすがにないかー
>>449
ありがとう。これぐらいのコードでいけるんですね。
C++じゃないけど、参考にさせていただきます
454:デフォルトの名無しさん
09/03/14 12:03:04
こんな糞コード見たのは久しぶりだ
455:デフォルトの名無しさん
09/03/14 12:11:04
つーか、スレに長いコード載せるな
456:デフォルトの名無しさん
09/03/14 12:12:55
#ifdef UNICODE
で分岐さすんなら、
最初っからTCHAR使えばいいんじゃね?w
457:デフォルトの名無しさん
09/03/14 12:15:00
猫わかレベルを超えてるなw
458:デフォルトの名無しさん
09/03/14 12:26:05
目が痛い
459:デフォルトの名無しさん
09/03/14 12:29:45
>>454-458
文句言うならお前が書けよ
460:デフォルトの名無しさん
09/03/14 12:36:09
> Note, I am not the best Win32 programmer, so there may be a better way to handle this. It does work though.
と本人自ら言ってるコードを貼るな馬鹿>>449
461:デフォルトの名無しさん
09/03/14 14:50:17
画面のプロパティのデザインで指定したフォントを取得する API ってありますか?
462:デフォルトの名無しさん
09/03/14 16:16:49
>>459
作ってみたよ
URLリンク(kansai2channeler.hp.infoseek.co.jp)
URLリンク(kansai2channeler.hp.infoseek.co.jp)
463:446
09/03/14 16:33:58
盛り上がっているところなんなのですが、
WSHでInputBoxという関数があり、これを使うと一発でよべました。
Win32APIで、と書いたのですが、Ruby だったのでwshでもよかったので・・・
前提条件書き忘れてスマソ
お騒がせいたしました・・・。
464:デフォルトの名無しさん
09/03/14 16:35:33
>>460
わろす
>I am not the best Win32 programmer
なんて言ってるけど
ただのプログラマとしても相当アレだw
465:デフォルトの名無しさん
09/03/14 16:40:26
よし。ちょっとそこに正座をだな(ry
まあいいけどねw
466:デフォルトの名無しさん
09/03/14 16:49:31
>>463
>WSHでInputBoxという関数があり、これを使うと一発でよべました。
がAPIだとあいやーーー><の世界へGoになるんだって実感したんじゃね
467:デフォルトの名無しさん
09/03/14 16:59:29
>>462
無駄に長すぎ。
昔InputBox互換関数を作った事あるがA/W両対応して (ダイアログプロシージャ内で切り替える) 50行程度で出来たが。
とりあえず、DialogBoxIndirectParamを使ってるのにわざわざCreateWindowExしまくるなら
予めリソースエディタで作っておいたダイアログリソースのバイナリを埋め込んで使えばいいかと。
フォントはMS Shell Dlgを設定しておけばいいし。
static const BYTE templ[] = { ... };
DialogBoxIndirectParam(hinst, (LPCDLGTEMPLATE)templ, ...);
468:デフォルトの名無しさん
09/03/14 17:04:22
つーか実質WM_COMMANDのIDOKでGetDlgItemTextするだけだろ
今時APIオンリーでプログラム作ってる人ならこの程度は直ぐに作れるよ
作ってみたとかいちいち自慢しなくておk
469:デフォルトの名無しさん
09/03/14 17:11:57
リソースなしで作ってるから長いだけであって。
コントロールサイズの調整が必要だからそれだけで終わりじゃないさ。
470:デフォルトの名無しさん
09/03/14 17:14:40
作れ→作った→作ってみたとかいちいち自慢しなくておk
おまえどんな鬼畜だよ
471:デフォルトの名無しさん
09/03/14 17:15:13
だからリソースバイナリを使えって話なんだろ
472:デフォルトの名無しさん
09/03/14 17:16:01
お前はもうちょっと可読性を考えたほうがいい
473:デフォルトの名無しさん
09/03/14 17:16:04
たしかになw 鬼畜すぐるw
474:デフォルトの名無しさん
09/03/14 17:17:50
MS UI Gothic決め打ちしてる糞コードで可読性とかw
475:デフォルトの名無しさん
09/03/14 17:19:19
ダイアログボックス用のフォントってどうやって取得するの?
476:デフォルトの名無しさん
09/03/14 17:19:36
98とかの環境だと、
"MS ゴシック"てしないとダメだよねw
477:デフォルトの名無しさん
09/03/14 17:19:53
違った。メッセージボックス用のフォントだ。
478:デフォルトの名無しさん
09/03/14 17:21:29
無いフォント指定しても勝手に別のフォントが使われるだけだから問題はないだろ・・・
479:デフォルトの名無しさん
09/03/14 17:21:32
>>470
だってさー、5分とかからないレベルのプログラムなのに4時間でコレだぜ?
480:デフォルトの名無しさん
09/03/14 17:22:07
>>479
じゃあお前作れよ
481:デフォルトの名無しさん
09/03/14 17:22:26
>>468
今時APIオンリーでプログラム作ってる人
ってよ趣味グラマじゃないのか?プログラマにそんなのいるのか?
482:デフォルトの名無しさん
09/03/14 17:22:32
>>479
じゃあお前が五分で作って見せろよ
483:デフォルトの名無しさん
09/03/14 17:23:03
今からカウントダウン
484:デフォルトの名無しさん
09/03/14 17:24:31
キタ━━(゚∀゚)━━!!
wktk
485:デフォルトの名無しさん
09/03/14 17:25:40
否定されて悔しかった>>462が「お前が作れ」と言い出したようですね
486:デフォルトの名無しさん
09/03/14 17:26:03
>>485
逃げたーーーーーー!!!!!!!!!!!wwwwwwwwwwwwww
487:デフォルトの名無しさん
09/03/14 17:26:57
>>484
>>486
失せろゴミ
488:デフォルトの名無しさん
09/03/14 17:26:57
作れないのなら最初から私には無理ですと言えよ
489:デフォルトの名無しさん
09/03/14 17:27:21
∧_∧
( ・∀・)ワクワク
( ∪ ∪
と__)__)
490:デフォルトの名無しさん
09/03/14 17:27:30
そろそろ5分だ
491:デフォルトの名無しさん
09/03/14 17:29:40
作ってみた。
BOOL InputBox(HWND hwnd,INPUTBOXPARAMS* param)
{
return(DialogBoxParam(hwnd,MAKEINTRESOURCE(IDD_INPUT),hwnd,InputBoxProc,(LPARAM)param)==IDOK);
}
492:デフォルトの名無しさん
09/03/14 17:32:11
もうだめだこのスレ
493:デフォルトの名無しさん
09/03/14 17:32:16
ポカーン
494:デフォルトの名無しさん
09/03/14 17:32:20
>>462
やっぱgoto使った方がすっきりかけるよな
なんで洗脳されてgoto嫌う奴いるんだろうな
場合によってはネスト深くなるだけなのに
495:デフォルトの名無しさん
09/03/14 17:34:07
>>491
出し惜しみしないで、全部さらせ
496:デフォルトの名無しさん
09/03/14 17:34:46
俺も作ってみた(VB用)
Public Function MyInputBox(prompt, title, default)
MyInputBox = InputBox(prompt, title, default)
End Function
'テスト
Debug.Print MyInputBox("input?","test","default")
497:デフォルトの名無しさん
09/03/14 17:36:34
>>496
作るなよ・・・
498:デフォルトの名無しさん
09/03/14 17:37:52
My(笑)
499:デフォルトの名無しさん
09/03/14 17:40:50
>>496
目覚ましいたのか
500:デフォルトの名無しさん
09/03/14 17:40:51
所詮は作れといわれてすぐに作り始めたと思い込むだけの馬鹿だったか・・・
501:デフォルトの名無しさん
09/03/14 17:41:17
ほれ。
BOOL InputBox(LPTSTR buf, int siz)
{
FILE*fp;
AllocConsole();
fp = fopen("CONIN$", "r");
if(fp){_fgetts(buf, siz, fp);fclose(fp);}
FreeConsole();
return!!fp;
}
502:デフォルトの名無しさん
09/03/14 17:59:03
で、汚いソースコード晒した>>462はどこ行った?
503:デフォルトの名無しさん
09/03/14 18:00:04
>>477
SystemParametersInfoでSPI_GETNONCLIENTMETRICS
一緒に渡すNONCLIENTMETRICSの中のlfMessageFont
504:デフォルトの名無しさん
09/03/14 18:03:32
>>503
ふむふむ。なるほど。d
505:デフォルトの名無しさん
09/03/14 18:04:04
>>502
お前がコードを晒さないから呆れてどっか行ったんだろう
506:デフォルトの名無しさん
09/03/14 18:06:00
>>505=>>462
なんだいるじゃんwww
507:デフォルトの名無しさん
09/03/14 18:08:53
www
508:デフォルトの名無しさん
09/03/14 18:10:20
>>502
お前がコードを晒すのを楽しみにして待ってるよ
509:デフォルトの名無しさん
09/03/14 18:12:46
>>508
URLリンク(kansai2channeler.hp.infoseek.co.jp)
URLリンク(kansai2channeler.hp.infoseek.co.jp)
510:デフォルトの名無しさん
09/03/14 18:14:06
>>509
死ねば
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5493日前に更新/205 KB
担当:undef