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


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

Win32API質問箱 Build69



1 名前:デフォルトの名無しさん mailto:sage [2008/08/02(土) 23:23:58 ]
スレ立てるまでもない、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質問箱 Build68
pc11.2ch.net/test/read.cgi/tech/1215348804/

321 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 21:58:43 ]
だから何でVirtualProtectのエラーチェックしないの?ゆとり?

322 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 22:01:10 ]
書き込みでAVになるか、書き換えた関数が呼ばれた時例外発生するか質問者ははっきりさせないといかんな。

323 名前:317 mailto:sage [2008/08/12(火) 22:09:50 ]
>>321
俺別にエラーチェックしてないとは一言も言ってないんだがwwwww

>>320の言ってる通りアドレス違反で落ちてるんだから・・・・・


多分だけどやっぱ>>315はスタックオーバーフローしてるんじゃない?
GetProcAddressもあわせてAPIフックしてるならその辺を睨んだ方がよさげ
つーかコード掲示するかAdvancedWindowsのページがわからないと
これ以上なんともいえない

324 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 22:27:47 ]
呼び出し規約かw

325 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 10:19:47 ]
Ollyか何かで追跡してみれば

326 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 11:24:58 ]
エディットコントロールの文字列選択の処理ってどうなっているのですか?
どうやって選択範囲を計算してるのですか?

327 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 11:37:19 ]
GetTextExtentPoint

328 名前:315 mailto:sage [2008/08/13(水) 12:55:18 ]
コードも例外発生の場所も書いてなくてスマン。
なのに原因を見抜けるってのはもうすげぇな、感謝!例外は置き換えた関数が呼ばれたときにおきてた。
きちんとstdcallだってのを置き換え関数で宣言したら、うまく動くようになった。
BCBとかdelphiは標準だとcdeclとかfastcallとかだったっけ。
とにかくみんなサンクス!!


329 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 15:10:46 ]
>>327
キャレット位置をどうやって計算しているかわかりますか?



330 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 15:26:17 ]
一文字ずつ幅を足していく

331 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 15:34:53 ]
WM_LBUTTONDOWN
クリック位置x.y座標取得
GetTextExtentPoint32関数で得られた文字列のサイズと比較していく、って事ですか?

332 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 19:09:19 ]
GetTextExtentExPointを流用してもいいけど

333 名前:デフォルトの名無しさん [2008/08/13(水) 20:11:50 ]
あるアプリのタブコントロールを別のプロセスから変化させたいのですが
別プロセスからTCM_SETCURSELをSendMessageすると、タブの位置は
変化するものの、TCN_SELCHANGEなどの通知メッセージがアプリ側で
発生しないので、肝心の内容が置き換わりません。
仕方なく、別プロセスから続けてWM_NOTIFYを発生させる事を考えたのですが、
別プロセスからでは構造体(NMHDR)を渡すようなメッセージは
伝わらない様です。
別プロセスからうまくタブが変化した事を通知する方法はないでしょうか。

該当コード
SendMessage(htab, TCM_SETCURSEL, 3, 0);
{ NMHDR nmhdr;
nmhdr.hwndFrom = htab;
nmhdr.idFrom = GetDlgCtrlID(htab);
nmhdr.code = TCN_SELCHANGE;
SendMessage(hmain, WM_NOTIFY, GetDlgCtrlID(htab), (LPARAM)&nmhdr);
}


334 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 20:29:33 ]
VirtualAllocEx
WriteProcessMemory

335 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 20:41:43 ]
sendinputを使おうと思って検索したらこんな2種類の書き方が出てきました。

lpKey->type = INPUT_KEYBOARD;

inputKey[cnt].type = INPUT_KEYBOARD;

この -> と [ ].type はどう違うんですか?

336 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 20:53:59 ]
>>335
C言語スレ池

337 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 21:30:56 ]
ステータスバーの文字の色を変えるにはどうすればよいですか?

338 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 21:38:25 ]
MSDN読め

339 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 21:56:25 ]
>>336
分かりました。



340 名前:デフォルトの名無しさん [2008/08/13(水) 22:14:10 ]
>>334
ありがとうございます。
できました。
かなり泥臭いですね・・

341 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 07:25:29 ]
BitBltする大きさが少し違っただけで、いきなり速度が変わるんですが、なんか理由があるんですか。
あとディスプレイを2つつないでる環境でも、速度が結構落ちるんですが。

342 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 07:31:47 ]
そりゃそうでしょうね

343 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 07:54:37 ]
ヒントでもいいから教えて

344 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 08:11:23 ]
おっ
典型的ゆとり発言

345 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 09:15:43 ]
知らないならレスしないでください

346 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 09:52:15 ]
自己解決しました
ありがとうございました

347 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 11:19:44 ]
間違ってました
やっぱり教えてください

348 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 14:55:53 ]
教えてもいいが
気に入らない態度がお前の

349 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 15:50:41 ]
知らないならレスしないでください



350 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 17:42:44 ]
自己解決しました
ありがとうございました

351 名前:デフォルトの名無しさん mailto:質問age [2008/08/14(木) 18:46:37 ]
標準入力にデータが存在するかを調べるにはどうすれば良いでしょうか。

_kbhitやPeekConsoleInputを試してみたのですが、リダイレクトされた場合に機能しないようです。
CreateFileでOVERLAPPEDが使えるかとも思ったのですが、Consoleでは無視されると説明されていて
実際試してもうまくいきませんでした。

352 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 19:22:58 ]
そういうときには実際に読んでみればいいんだよ。

353 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 19:41:47 ]
DialogBoxやCreateDialogから行くcallback関数に変数等を渡す場合
はグローバルで宣言しておくしかないですか?

354 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 19:48:42 ]
>>353
DialogBoxParam・CreateDialogParamの初期値で適当な構造体のポインタでも渡しとけ

355 名前:デフォルトの名無しさん [2008/08/14(木) 20:00:22 ]
>>352
申し訳ありません、情報が足りませんでした。
入力がない間は他のことをしたいのです。

356 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 20:04:00 ]
スレッド分けれ

357 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 20:05:00 ]
>>354
出来ました。ありがとうございます

358 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 20:20:26 ]
>>356
元が*nixなコンソールプログラムの処理中に、
出来るだけ手を加えずにほんのちょっと通信したかっただけなんで
スレッド分けとかソケットは遠慮していたのですが、やはりそこまでやらないと駄目ですかね。

シグナルとかあればそれでもいいのですが。

359 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 20:40:50 ]
Win32APIをC++でラッパしたフリーのライブラリ
でお勧めのものがありましたら教えて下さい.




360 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 20:44:41 ]
Boost

361 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 20:53:10 ]
msdn.microsoft.com/ja-jp/magazine/cc534994.aspx
これとか?

362 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 21:08:18 ]
WTLを勧める

363 名前:359 mailto:sage [2008/08/14(木) 21:57:02 ]
ありがとうございます。
自作ライブラリの参考にしたいので、
単純で解析しやすいのは無いでしょうか?

eGUI++は、相当頑張ればなんとか読めそうでしたが、
WTLの方は[!endif]とか変な記号があってわかりませんでした。


364 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 22:00:52 ]
へ?俺が見た限り、WTLに[!endif]なんて存在しないけど・・・

365 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 22:39:08 ]
>>359
STLSoft

366 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 23:43:56 ]
>>363
[!endif]はVSのプロジェクトテンプレートだろうがw

367 名前:359 mailto:sage [2008/08/15(金) 08:00:34 ]
Win32APIとなんらかのC/C++コンパイラ・リンカ
があれば使えるようにできるといいなと思います。

つまり、リソースは使わずに、
マクロも極力避けるという感じで。

STLSoftも良さそうですね。


368 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 11:32:16 ]
Perl.

system ('notepad.exe','abcde.txt');

↑これでメモ帳が開けるんだけど、
win32APIの観点から、なにか
アドバイスはありませんか?

369 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 11:42:45 ]
ありません



370 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 12:23:23 ]
何を求めてるのか具体的に書かんと分からんよ
アドバイスって何よ

同じ事をしたいだけならShellExecute

371 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 13:47:36 ]
Perlは便利というアドバイス

372 名前:351 mailto:sage [2008/08/15(金) 22:39:32 ]
自己解決しましたので報告します。

GetStdHandleなどで得たハンドルを直接WaitForSingleObjectに入れることが出来ます。
ただしそのままではKeyDownだけではなくKeyUpでもシグナル状態になってしまうため、
WaitForSingleObject+ReadFileまたはWaitForSingleObject+ReadConsoleの組み合わせだけではブロックします。

FlushFileBufferやCancelIOではキーボードイベントをフラッシュする事が出来ず、
他にフラッシュできそうなAPIを見つけることが出来ませんでしたので今回は採用を諦めます。

どうしても直接入力/リダイレクト両対応でノンブロッキングな標準入力を行いたい方は
シグナル状態になった際にPeekConsoleInputで無関係なシグナルを検出し、
その時だけReadConsoleInputでイベントを取り除いてください。
>>356さんの言うようにスレッド化するのも手だと思いますが、ブロックするのでスレッドを終了できなくなるはずです。

373 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 22:48:15 ]
別にスレッド終了せんでもええやん?

374 名前:デフォルトの名無しさん mailto:sage [2008/08/16(土) 01:25:25 ]
CreateThreadまたは__beginthreadexを使用する時に
指定するスタックサイズは皆さん「0」指定で使ってますか?

通常は「0」で問題は無いのでしょうが
もし仮に明示的なスタックサイズを指定している方がいれば
その利点などについて詳しく教えてもらえるとうれしいです。


375 名前:デフォルトの名無しさん mailto:sage [2008/08/16(土) 01:46:41 ]
0って言ってもデフォルトサイズを使うって指定しているんだから、サイズによって何が変化するか自分で考えろよゆとり馬鹿

376 名前:デフォルトの名無しさん mailto:sage [2008/08/16(土) 01:49:05 ]
・デフォルトのスタックサイズでは足りない場合に増やす
 スタックがあふれるようなアルゴリズムが悪いんだが、やむを得ない場合があるかもしれない

・スタックを減らしてアドレス空間を節約する
 スレッドを大量に作るとき、スレッド1個ごとに何MBも取ってると、アドレス空間の枯渇が早い

という利点は思いつくが、今のところ俺は0以外を指定したことはない

377 名前:デフォルトの名無しさん mailto:sage [2008/08/16(土) 04:24:02 ]
STACK_SIZE_PARAM_IS_A_RESERVATION が指定できない2000以前じゃデフォルトより下げても意味なかったし0以外ねーな

378 名前:デフォルトの名無しさん mailto:sage [2008/08/16(土) 04:51:04 ]
64bitコードならともかく、32bitコードじゃスタックサイズを増やすのはまずねーだろ。
アドレス空間足りねーよ。

379 名前:デフォルトの名無しさん mailto:sage [2008/08/16(土) 12:18:14 ]
デフォルトで1MBくらいなんだから、スタックサイズちょっと増やしたくらいでアドレス空間足らなくはならんだろ。



380 名前:374 mailto:sage [2008/08/16(土) 12:24:45 ]
>>375-379
回答ありがとうございます。


>>376の言うとおりスタックを減らしてアドレス空間の
節約をした方がいいのか迷っていたので、
ほかの人の意見を聞いてみようと思って質問しました。


スレッドのスタックサイズに関しては特に意識する必要は無いという事ですね。

381 名前:デフォルトの名無しさん mailto:sage [2008/08/16(土) 12:50:42 ]
質問です。。。

現在keybd_eventを使用して実際のキー操作をシミュレートしようとしているのですが,

keybd_event( 'A', 0, 0, 0 );

のようなコードでは,実際にAをずっと押しているときのように,動作しません。
(例えば,テキストエディタをアクティブにしていたらAがいくつも入力される。


どうしたら,実際のキーボードを押しているように動作させることが出来るのでしょうか?

382 名前:デフォルトの名無しさん mailto:sage [2008/08/16(土) 12:54:08 ]
スタック領域って減らせるのか?
最初は4KBぐらいしか確保されてなくて必要に応じて動的拡張されるとかじゃなかったっけ?

383 名前:デフォルトの名無しさん mailto:sage [2008/08/16(土) 14:27:15 ]
GetOpenFileNameのダイアログ使ってるとMAX_PATH超えられないけれど
対策もしくは代替手段て有りますか?

384 名前:デフォルトの名無しさん mailto:sage [2008/08/16(土) 15:13:42 ]
ダイアログを自作する

385 名前:デフォルトの名無しさん mailto:sage [2008/08/16(土) 17:02:35 ]
perlで
ShellExecuteで、
notepad.exeを開きたい場合は
どう書けばいいの?

386 名前:デフォルトの名無しさん mailto:sage [2008/08/16(土) 17:14:04 ]
`notepad.exe`


387 名前:デフォルトの名無しさん mailto:sage [2008/08/16(土) 17:18:04 ]
>>386
試してみたら、確かにメモ帳が開きましたが、
それってShellExecuteで開いてるの?

388 名前:デフォルトの名無しさん mailto:sage [2008/08/16(土) 21:23:53 ]
>>383
フックプロシージャの中からだとそういう制限は無かった気がする。
違ったらごめん。

>>387
ShellExecuteの中の人は、拡張子exeの関連付けに従ってプロセスを起動する。
何も特別なことはない。

389 名前:デフォルトの名無しさん mailto:sage [2008/08/16(土) 21:52:03 ]
>>387
どういうAPIを使ってるのかは、それが仕様化されてるのでなければ
処理系の実装依存だろうな。

直接ShellExecuteを呼びたいのなら
ActivePerl Win32 API ShellExecute
とかでググれ。
それでわからなければPerlの人に訊け。



390 名前:デフォルトの名無しさん mailto:sage [2008/08/16(土) 22:55:06 ]
今の状況だと、
真っ黒なDOSプロンプトが開いて、
そのDOS窓が残ったままで、
メモ帳も開く、という動作なのですが、
DOS窓が開かないで、
あるいは一瞬だけ開いて、
それでメモ帳が開く、というのを
するのに、shellexcuteを使えば
いいんでない?と思ったのですが、
違いますか?

391 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 00:09:09 ]
コマンドプロンプト経由で起動する事情なんざ、Win32的には知ったこっちゃないな。
Perlが勝手にやってることなんだから、あっちで聞け。

392 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 06:24:19 ]
やだね
お前が勝手に聞いてろ

393 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 09:20:57 ]
perlをWindowアプリとしてリコンパイルすれば解決する

394 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 10:40:24 ]
perlネタはもういいよ。

395 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 13:01:22 ]
perlがコンソールアプリだからだろ
active perl scriptを使えばいい

396 名前:383 mailto:sage [2008/08/17(日) 13:34:18 ]
>>388
フックプロシャージャ作って中でCDM_GETFILEPATH使っても
MAX_PATH以下になるようになってるみたいです。

CDM_GETFOLDERPATHやCDM_GETFOLDERIDLISTだと
フォルダまでがMAX_PATHであれば選択ファイル名を追加で
その分超えることは出来るみたいですがOKボタン押させて貰えない。

さらに深いフォルダにはアクセスさせてもらえないし
他の大半のアプリも触れない領域じゃ独自ダイアログにするほどのことでもない気がするので諦めます。
あとD&Dもメッセージが飛んでこないので駄目みたいです。

397 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 14:36:47 ]
なんか知らんがUnicodeに汁

398 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 16:18:46 ]
>>381

399 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 17:07:58 ]
>>381
チート厨は氏ね



400 名前:381 mailto:sage [2008/08/17(日) 17:31:50 ]
>>399
Wiiリモコンをパッドにしたいだけなのに。。。

401 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 17:33:55 ]
>>400
それでもBAN対象のゲームは多いはず

402 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 18:05:19 ]
>>400
ヒント
っKEYEVENTF_KEYUP

403 名前:383 mailto:sage [2008/08/17(日) 18:08:46 ]
>>397
長いファイル名は必然的にUnicode関数使うし
最近のプログラムなんでUnicodeビルドしてる。

404 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 19:39:11 ]
シェル関数(SHGetPathFromIDListなど)がMAX_PATHを超えれないから
シェルに依存しているコモンダイアログも必然的にMAX_PATHを超えられないのだろう

てかMAX_PATHを超えてしまうほど深い階層にファイル置くなよ

405 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 19:57:28 ]
ThickFrame(ウィンドウサイズを変更する枠)で、
「ユーザーがウィンドウサイズを変更している間は、WM_ERASEBKGNDメッセージを無効にする」
という処理を加えたいんですけれど、

処理の開始は、WM_NCLBUTTONDOWNメッセージを捕まえてそれで問題ありませんでした。

処理の終了(サイズ変更の終了)も、同様にWM_NCLBUTTONUPメッセージを捕まえれば良いのかと思ったんですが、
うまくいきませんでした。


この場合の、「ウィンドウサイズ変更が終了した」という情報を、
アプリケーションが取得するにはどうしたら良いでしょうか?

誰かご存知の人は教えてください。


406 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 20:03:49 ]
WM_SIZEとかWM_WINDOWPOSCHANGEDとか?

407 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 22:22:33 ]
>>402
KEYEVENTF_KEYUPを引数としてキーが上がったということも書いているのですが,
>>400のやりたいことのように出来ません。。。

408 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 01:09:41 ]
初歩的な事で申し訳ないのですが、
実行ファイルのアイコンが指定通りに変わらず困っています。
WINDCLASSEX構造体には以下のように記述しています。

wcex.hIcon=(HICON)LoadImage(hInst,"ファイル名",IMAGE_ICON,
              0,0,LR_DEFAULTSIZE|LR_LOADFROMFILE);
です。
リソースを使わずicoファイルにパスを通す方法で実現したいのですが、
表示されません。
hIconもNULLではない様なので問題ないと思うのですが・・・。
因みに、タイトルバーに表示される方は上手く表示されています。
ですので、ファイル名の指定でパスがおかしいということはないと
思います。

409 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 01:35:39 ]
WNDCLASS(EX)というのは、ウィンドウの設定をするだけ
実行ファイルのアイコンとかは何も変わらない



410 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 03:10:32 ]
>>408
exe のリソースに埋め込まれたアイコンの中で
一番番号の若い物が exe のアイコンになります

411 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 03:49:06 ]
>>409
そうだったんですか・・・。
前は普通にリソースで入れてたんで、気づきませんでしたが
そこに指定したらアイコンになるもんだと思ってました・・・。
>>410
409の方のを読んで色々と調べていたんですが、
やっぱり、リソースを埋め込むものなんですね。
>一番番号の若い物が exe のアイコンになります
知りませんでした・・勉強になります。

おかげさまで一応解決しました。

412 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 07:58:09 ]
常駐型アプリを作ってます
タスクバーに表示されず
タスクトレイにアイコンを表示させるとこまできましたが、
タスクマネージャ−アプリケーションで見ると
タスクの欄にしっかり表示されてしまいます

他のアプリを見るとここには表示されていません
タスクマネージャ−アプリケーションに表示されないように
常駐アプリを作るにはどうすればいいですか


413 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 09:32:48 ]
ウィンドウが出てるんだろ

414 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 17:26:55 ]
ヴィザードで、自動で次のページに移行したいんですけれど、

PSHNOTIFY myLp={NULL,};
myLp.hdr.code = PSN_WIZNEXT;
SendMessage(hDlg,WM_NOTIFY,NULL,(LPARAM)&myLp);

↑のコードじゃ駄目なんですかねぇ??


case WM_NOTIFY:
 LPPSHNOTIFY lppshN = (LPPSHNOTIFY)lp;
 switch (lppshN->hdr.code){
 ...
 }

↑のコードで、「戻る」「次へ」等のメッセージは取得できるので、
同様のメッセージを送ってみたのですが・・・。


ウィザードで、自動で次のページに移行させる方法
(「次へ」ボタンを押した場合と同じ効果を出す方法)
をご存知の方、ご教授下さい。

415 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 17:53:07 ]
>>414
MSDN読め

416 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 19:12:39 ]
>>407
入力送信後にSleep(100);とかしたらどうかに?

417 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 21:51:40 ]
>>414
WM_COMMAND投げたら?

418 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 22:37:30 ]
>>416
いれてみましたがだめでした><

419 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 23:03:29 ]
PC再起動すると動く場合がある



420 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 23:12:33 ]
>>419

421 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 13:21:09 ]
>>419

422 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 13:30:32 ]
PCを起動すると動く場合がある

423 名前: ̄ ̄ ̄ ̄ ̄ ̄V ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ mailto:sage [2008/08/19(火) 13:33:11 ]

    / ̄ ̄ ̄ ̄\
   (  人____)
   |./  ー◎-◎-)
   (6     (_ _) )    カタカタカタ
   | .∴ ノ  3 ノ  ______
    ゝ       ノ  .|  | ̄ ̄\ \
   /       \__|  |    | ̄ ̄|
  /  \___      |  |    |__|
  | \      |つ    |__|__/ /
  /     ̄ ̄  | ̄ ̄ ̄ ̄|  〔 ̄ ̄〕
 |       | ̄


424 名前: ̄ ̄ ̄ ̄ ̄ ̄V ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ mailto:sage [2008/08/19(火) 13:57:04 ]
    / ̄ ̄ ̄ ̄\
   (  人____)
   |./  ー◎-◎-)
   (6     (_ _) )    カタカタカタ
   | .∴ ノ  3 ノ  ______
    ゝ       ノ  .|  | ̄ ̄\ \
   /       \__|  |    | ̄ ̄|
  /  \___      |  |    |__|
  | \      |つ    |__|__/ /
  /     ̄ ̄  | ̄ ̄ ̄ ̄|  〔 ̄ ̄〕
 |       | ̄

425 名前:デフォルトの名無しさん [2008/08/19(火) 23:53:51 ]
別exeで動いているTimerを停止させるAPIはないでしょうか?
またはタイマーIDかタイマー識別子を取得する方法があれば
KillTimerできるのでしょうけど・・・


426 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 23:58:51 ]
>>425
APIフック

427 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 00:02:40 ]
タイマIDはプロセスごとに独立してる

428 名前:デフォルトの名無しさん [2008/08/20(水) 00:03:23 ]
char* str = "aあbい";

みたいに1バイト文字とマルチバイト文字が入り交じった文字列を、
1文字ずつのcharの固まりに分解したいんですが、
IsDBCSLeadByte でcharを1つずつ調べていくしかないでしょうか?

429 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 00:17:09 ]
>>425

別プロセスから、
タイマ停止させるためのメッセージ投げる。
それ受けたらタイマを止める。




430 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 00:19:00 ]
SJISならググって文字コード表見ながら自作
あるいはWideCharToMultiByteして1文字ずつMultiByteToWieeChar

431 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 00:20:58 ]
>>428
CharNextExA / CharPrevExA とか?

432 名前:デフォルトの名無しさん [2008/08/20(水) 00:35:28 ]
>>430
>>431
どうもありがとうございます。
ググってみたところ、どっちも使えそうです。

>>430 はWideCharToMultiByteとMultiByteToWieeChar 逆ですよね。

433 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 02:28:26 ]
事務より簡単で誰でもできる仕事なのに時給は技術者!
ITテスターで稼ぐための情報を交換するスレです。

☆派遣先は大企業じゃないと駄目です。中小だとテスターもプログラムの仕様が
 わからないといけないとかテストプログラムを書けとか言われちゃいますよ。
 大企業ならプログラムを触るだけのテスターでも大丈夫。

☆派遣先ではテスターはプログラムを触るだけでいい、
 そんな空気を作っていきましょう。仕様書読んでください、
 とか言われたら「なんでテスターが仕様書読むんですか」って食い下がって。
 プログラムの仕様書を読んだり、テストの仕様書を書いたりするのは大変ですよ。

☆普通にプログラムを触ってテストしてると、何をテストしているのかわからない、
 とか言い出す人、いるんですよ。プログラマとかってこういう人多いです。
 そういう人は上司にあることないこと告げ口して追い出しちゃいましょ。
 人事権のある人とは仲良くしておくことが大切。
 
☆納品して何かあったら大変だからとプログラムの仕様書を読んだり、
 テスト仕様書を書いちゃうテスターがいますけど、
 こっちもやることになるからすごく迷惑。
 テスト結果の責任は担当の正社員にありますよね。
 納品後のクレームは最終チェックを怠った正社員が悪いんだから
 派遣は関係ないです。 

434 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 02:32:01 ]
cp932->utf16->cp932なんて処理をすると元の文字に戻らなくてはまるかも

435 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 03:06:31 ]
wave dash とか?他何があったっけ?

436 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 03:24:13 ]
いいかげんシフトJISを捨てようぜ。

437 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 04:24:17 ]
>>436がまずやるべきは2ちゃんねるを捨てるところからだな

438 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 07:00:22 ]
>435
すくなくても、WaveDashは戻る。ここがWin32API質問箱である以上は。

439 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 07:17:19 ]
↑話を理解してない馬鹿



440 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 07:26:08 ]
TextBoxでフォームが非アクティブになってもキーボードフォーカスを
常に持ち続けるにはどうすればいいでしょうか。

441 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 07:46:26 ]
>435
つ ttp://support.microsoft.com/kb/170559/ja

442 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 10:09:22 ]
とあるVC++のプログラムを引き継いだのですが
スレッドの作成にCreateThreadが使用されていました。
スレッドはひとつしか作成されないのですが
そういう場合ならCreateThreadでもよいでしょうか?
_beginthreadに修正したほうがよいでしょうか?

443 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 10:14:14 ]
内容による。
それだけで他人が判断できると思っているのなら、ヘルプの読み込みが全く足りない。

444 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 10:18:13 ]
ヘルプを読み込んでみたところ問題ないようです。
ありがとうございました。

445 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 12:26:29 ]
CRTを一切使っていないなら(実際には使っても問題の無いCRTもあるが)
CreateThreadでもいい。

446 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 12:30:19 ]
CRTバリバリ使ってます

447 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 12:47:32 ]
DLL版にリンクすれば問題ない

448 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 13:08:50 ]
お世話になります。
wininetのFindFirstUrlCacheEntryで、特定のキャッシュを探す場合、
第一引数のlpszUrlSearchPatternにどういったものを渡してやればいいのでしょうか。

ttp://msdn.microsoft.com/en-us/library/aa384026(VS.85).aspx (FindFirstUrlCacheEntry)

support.microsoft.com/kb/326201/ja
現状は、これを見ながらDeleteUrlCacheEntryの所を書き変えて検索していますが、
lpszUrl〜にURL文字列を直接渡してもnullを渡したときと動作が変わらず、毎回同じ順番で検索されてしまいます。
一応、言語はC#です。

449 名前:440 mailto:sage [2008/08/20(水) 13:56:17 ]
すみません。言語別スレに行きます。



450 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 20:21:51 ]
>>448
This parameter can only be set to "cookie:", "visited:", or NULL.

451 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 22:12:17 ]
>>450
日本語でおk

452 名前:448 mailto:sage [2008/08/20(水) 22:59:26 ]
>>450
ということは基本的に全数で探すしかないってことですか・・・。
それほど時間はかからないみたいなのでとりあえずこのままでいきます。
ありがとうございました。

453 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 00:30:00 ]
C++でウインドウをクラスで実装してみてるのですが、コンストラクタ内にウインドウ生成のコードを書いてしまうのはアリでしょうか?教えてください。

454 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 01:41:28 ]
サービスプログラムとしてタスクトレイに常駐するプログラムを
作成してるのですが、ユーザーがログインした段階で
Windowを作成しないと、コントロールなどの表示が崩れてしまうようです。
ユーザーがログインているかどうかを判定する方法があれば教えてください。
Windows XPです。

455 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 07:10:57 ]
>>454
もしかして一つのプログラムで全部やるつもりか?
HKLMのRunキーで起動したタスクトレイのプログラムがサービスと通信する、
というのが普通の作り方だと思うのだが。

456 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 08:25:06 ]
>>455
WebやAPI本とかの断片的な知識しかないので
できればその普通のやり方が載っている情報源を知りたいのですが。
MSのセミナーとかですか?

457 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 09:27:11 ]
今までWindowsを使ってきた経験からの普通

458 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 09:32:29 ]
>>453いいんじゃね?

459 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 10:27:00 ]
>>457
やっぱり知ったかでしたか。
関係ない話を始めた段階から読めてました。



460 名前:457 mailto:sage [2008/08/21(木) 10:31:51 ]
オレは通りすがりだよ。
ちなみに、サービスはNT4の頃から作ってる。

461 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 10:48:25 ]
はいはい。もういいよ。
ちなみに自己解決しました。

462 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 10:51:34 ]
サービスが直接ウィンドウ作るのが普通だとしたら、
わざわざ「デスクトップとの対話を許可する」がデフォルトでオフになっているわけがない。

463 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 10:53:27 ]
デフォルトって。プログラムからオンにできるわけだが。

464 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 10:54:14 ]
www.google.co.jp/search?hl=ja&q=%E8%B3%AA%E5%95%8F%E3%82%92%E8%B3%AA%E5%95%8F%E3%81%A7%E8%BF%94%E3%81%99&lr=


465 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 10:57:22 ]
サービスそのものは誰もログオンしていなくても動作するもんだから
ウィンドウそのものを自分で作るようにはできてない。
無理やり後付けで作るのは勝手だが、普通じゃない。

466 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 10:58:44 ]
そもそもレジストリいじるだとか別プロセスにするだとか、
完全に知ったかの妄想なんだよ。


467 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 11:01:26 ]
VNCとかはどうなってんの?

468 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 11:15:35 ]
なんか知ったかという言葉を使いまくってる真性がいるなw

469 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 11:16:03 ]
人格攻撃キター



470 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 11:37:29 ]
お前ら前置きに反応しすぎ

ユーザーがログインているかどうかを判定する方法があれば教えてください。


471 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 11:47:32 ]
ターミナルサーバーとかで、複数同時にログインしてるのも考慮?

472 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 11:54:22 ]
GetDesktopWindow()でデスクトップが取れたらでいいんじゃね?

473 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 11:55:57 ]
ユーザーセッションの数が1以上、とかでいいのかなあ。
試さないとなんとも言えんな。

474 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 11:56:11 ]
>>470
サービスでって前提なかったら、GetUserNameでイイジャンって言われちゃうぜ?w

試してないけど、NetUserEnumで列挙してNetUserGetInfo
USER_INFO_2の最後のログオン/ログオフの時間取得してとかかなぁ

475 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 00:32:43 ]
サービス語るならせめてAdvancedWindowsと
プログラミングMicrosoft Windows 2000位読め
なぜWindowを持つサービスを作るべきでないかは読めば分かるから

476 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 08:05:36 ]
知らないならレスしないでください

477 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 11:48:40 ]
知ってるよw

478 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 11:51:32 ]
じゃあレスしてください

479 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 14:40:46 ]
誰もサービスについての質問なんかしてないのに



480 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 14:48:06 ]
>>454

481 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 15:29:09 ]
>>480
> ユーザーがログインているかどうかを判定する方法があれば教えてください。
これが質問内容だろ
「サービスについての質問」ではない

日本語が読めない奴は黙ってろ

482 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 15:31:30 ]
サービス以外でユーザーがログインしているかどうかを知る必要はない。
だってログインしているから

483 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 16:36:43 ]
クレデンシャルプロバイダやGinaモジュールでも取得したい場合はあるかも?

484 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 20:56:09 ]
explorer.exeのプロセスが居たらログオン中でいいんじゃね?

485 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 21:18:48 ]
>>484
ばーか

486 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 21:32:56 ]
>>485
なにが?w

487 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 21:43:41 ]
>>484の回答が馬鹿丸出しということ

488 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 22:05:08 ]
あ〜あ、
>>485は反例を一つ示せば>>484を完全否定できたのにね

これじゃ>>485の方が馬鹿に見える

489 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 22:06:37 ]
顔真っ赤ですよ



490 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 22:10:44 ]
>>482
そのプログラムをタスクスケジューラに登録する場合はどうかな?

491 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 22:26:00 ]
>>490
タスクスケジューラは設定されたアカウントでログオンするよ。

492 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 22:34:00 ]
>>484
ユーザーのログインシェルがexplorer.exe以外の場合がある、
とか聞いたことある気がするけど、そんなケース無視しても良い気がするし。
>>484の方法でダメな場合って他に何かあったっけ。


493 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 22:48:47 ]
explorer.exeが異常終了したとき

494 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 23:21:25 ]
そもそもログインしているユーザの一覧なんて
権限さえあれば取得できないわけがないと思うんだけど。

495 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 23:32:58 ]
なんか知らんが、たぶんOSごとに違うと思う

496 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 23:34:44 ]
Windows TIPS 現在ログオン中のユーザー名を調べる
www.atmarkit.co.jp/fwin2k/win2ktips/646logonuser/logonuser.html

プログラムでやる場合、やはりexplorer.exeの有無ぐらいしかないのかね?


497 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 23:51:24 ]
GetCharABCWidths()で取得されるA寸法は、 GetGlyphOutlineで取得されるGLYPHMETRICSのgmGlyphOrigin.xとは違うものなんでしょうか?
説明を読むと同じに見えるけど、違う値が返ってきて混乱してます。

498 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 00:03:54 ]
>>497
アンダー・オーバーハングに対応した文字だと違ってくるんじゃないかな。

499 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 00:46:12 ]
>>493

異常終了したらwinlogon.exeがexplorer.exeを再起動するぞ。




500 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 00:47:42 ]
>>499
タスクマネージャで終了したら再起動しない

501 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 01:02:59 ]
たまにその対策をしてない常駐アプリはタスクトレイから消えちゃうんだよな

502 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 01:19:26 ]
俺が使ってる常駐アプリの中ではその対策をしてる方が少ないな

503 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 01:45:23 ]
>>454 はユーザがログオンしてるかどうか判定したいと言ってるけど、
実際は通知領域の表示ができるかどうかの問題なわけよ。
だから、シェルとしてのexplorer.exeで判定するのが正しい。
あと、起動処理が終わったかどうか調べる必要があるのかもしれない。
WaitForInputIdle?

504 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 02:10:50 ]
GetDesktopWindowだとどうなるんだろう。
ログオフ中はきちんとNULLが返るのかな?
適当な値が返ってきたらやだな。


505 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 02:49:50 ]
>>503
それならShell_NotifyIconが成功するまで適当な間隔で何度も呼び出せばいいだろ
そもそもXP以降はそうしろとMSのサイトにも載ってるし、ログオンとか関係ない話になる

506 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 07:53:52 ]
>>495
俺もなんか知らないけどWMIで取得できそうな気がする。

507 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 22:09:42 ]
>>500

それはWindowsが異常終了として扱わない。
explorer.exeが異常終了した場合はwinlogon.exe(MSGINA.DLL)がWlxStartApplicationで検出する。
そこでSHELLとしてのexplorer.exeが再度起動される。






508 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 23:08:46 ]
空行ウザイ

509 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 01:15:50 ]










510 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 01:19:59 ]







↑だからうぜーってば








511 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 18:46:42 ]
しばらく放置しないと、感染症になる雰囲気だけど、
ミソギを兼ねて、つまんない質問を。

Debug バージョンで HeapFree() で落ちるのは、スタックなどの管理領域を
壊したからですか。一時メモリで取った領域でないところに書き込んでも、
運よく、そういう領域でないなら落ちませんか。それとも必ず落ちますか。

512 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 19:31:46 ]
落ちますん

513 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 19:35:47 ]
HeapAlloc/HeapFreeの管理するメモリ領域は
普通はDebugランタイムのチェック対象ではないが
DebugランタイムがAPIフックするような開発環境ならその限りではない

514 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 19:54:21 ]
運がよければ落ちないかもね
しかし運に頼ってプログラミングするのはやめてもらいたい

515 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 20:09:50 ]
Windows2000からは、ヒープにチェック機構が追加されたので、
バッファオーバーラン等は、ページ単位より細かくチェックが入るようになり、
HeapFree呼び出し時に例外(ブレークポイント)を発生させるようになった。

516 名前:511 mailto:sage [2008/08/25(月) 20:30:59 ]
早速、有難うございました。
>>514
Xp & VC++6.0 では落ちてなかったのに、Vista & VC++2008EE でだめになったからネ。


517 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 23:51:30 ]
ネットワーク接続時にタスクトレイに出すことの出来る
ローカルエリア接続等で出ている送受信の総量などは
APIなどで所得出来るものですか?もし出来る場合どのようなAPIで可能
でしょうか?

518 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 00:13:06 ]
休止やスリープから戻ってくるとアプリは起動しているけどパスワード入力画面という状態になってしまいます。
パスワード入力画面の最中は処理を行いたくないのですが、ログイン(?)したかどうかを調べることはできないでしょうか?

519 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 00:21:23 ]
WTSナントカ



520 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 00:26:07 ]
WM_WTSSESSION_CHANGE

521 名前:518 mailto:sage [2008/08/26(火) 00:35:22 ]
ありがとうございます。これで解決できそうです。

522 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 07:17:55 ]
>>517
www.geekpage.jp/programming/iphlpapi/


523 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 11:04:12 ]
ユーザ名やパスワードなどの文字列を暗号化してINIファイルに書き込んだり、
それを取り出して複合したりといった処理を行いたいのですが、
なにかよいAPIやサンプルはありませんでしょうか。

524 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 11:15:08 ]
CryptoAPI

525 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 11:17:04 ]
サンプルは↓の右下の奴とか結構とっつき易い
ttp://www.trustss.co.jp/

526 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 15:08:12 ]
APIじゃないかも知れないんですが、
MCEリモコン制御に対応させるためのsdkやらドキュメントの
手がかりってどの辺にありますでしょうか?

うまい検索単語が思いつかずに、開発とは関係ないページしか
引っかかりません

527 名前:デフォルトの名無しさん [2008/08/26(火) 15:21:40 ]
指定PCにpingして生存確認したいんですが、pingするAPIを教えてくださいよ

528 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 15:23:00 ]
ずばりpingするようなAPIはないからググってサンプル見つけるんだ。

529 名前:デフォルトの名無しさん [2008/08/26(火) 15:52:08 ]
ああ、いやいや、どっかやりかた載ってるサイトを教えてくださいよ



530 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 15:57:19 ]
CreateProcess+ping.exe

531 名前:デフォルトの名無しさん [2008/08/26(火) 15:59:05 ]
ああ、ping.exeとかそんなんじゃなくておねがいしますよ

532 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 15:59:55 ]
>>527
DWORD PingToComputer(LPCTSTR HostAddress);

533 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 16:00:14 ]
API関係ないがな
ICMP プロトコル あたりでググればサンプルあるだろう

534 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 16:00:33 ]
IcmpSendEcho

535 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 16:04:27 ]
IcmpSendEchoってまだ使えるのか・・・?

536 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 16:09:25 ]
PFSDK windows server 2003 の IP Helper には
IcmpSendEcho 居て XP も可能と書いてある

最新のは知らない

537 名前:デフォルトの名無しさん [2008/08/26(火) 16:11:05 ]
なんだよお前らなんでそんなに優しいんだよ?
いつものお前ららしくないぜ?

>>532-536
とりあえずさんくす。
何かその辺を調べてみますわ

538 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 16:24:21 ]
winsock2

539 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 16:25:23 ]
www.geekpage.jp/programming/iphlpapi/send-icmp.php



540 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 16:26:46 ]
>>522>>539
宣伝ご苦労様です

541 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 16:26:59 ]
www.kt.rim.or.jp/~ksk/wskfaq-ja/examples/rawping.html

542 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 17:50:12 ]
>>526
ttp://download.microsoft.com/download/5/b/9/5b97017b-e28a-4bae-ba48-174cf47d23cd/MED001_WH06.ppt


543 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 21:38:10 ]
>>522
おおお!ありがとうございます!

544 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 22:03:51 ]
WM_CREATEの所に
{
 LPCTSTR lpszTxt = TEXT("猫でもわかるWindowsプログラミング");
 HDC hdc;
 hdc = GetDC(hWnd);
 TextOut(hdc, 10, 10, lpszTxt, lstrlen(lpszTxt));
 ReleaseDC(hWnd, hdc);
}
を張り付けても文字列が表示されないのはなぜでしょうか。

545 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 22:27:42 ]
すぐに消えてしまうからです

546 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 22:39:23 ]
WM_CREATEは作成中だったような

547 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 22:39:27 ]
描画はWM_PAINTで

548 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 00:14:05 ]
DLLインジェクションを使ってiexplore.exeに割り込んで
IAT書き換えでWSARecvとrecvをフックしてみたんだけど、
どうやらフック先の関数が呼ばれていないみたいなんだ。

MessageBox表示だけのプログラムに割り込んで
MessageBoxをフックするのは出来たんでインジェ
クション部分に問題はないと思うんだけど…。

なんかアドバイスもらえませんか?

参考にしたサイト
ttp://ruffnex.oc.to/kenji/text/api_hook/


549 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 00:21:36 ]
recvだのなんだのしてるのはMSHTMLとか下請けモジュールだろ?



550 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 00:30:39 ]
つまり実際にrecvなりなんなりしてるモジュールに対して
Hookかけないとダメってことですか。


551 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 00:33:27 ]
>>548
あまり関係無いけど、その人の書いたこれ
ttp://ruffnex.oc.to/kenji/text/listexport/
DllMainの中でLoadLibrary呼び出すコードを出力してたのを思いだした。

552 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 00:36:18 ]
GetProcAddressで直接呼んでるのかもしれない。
GetProcAddressもフックしてみては。

553 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 00:44:36 ]
ヒント: ブラウザの実装コードは何処にある?

554 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 01:01:52 ]
正解:地球

555 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 01:27:46 ]
ありがとうございます。

>>552
GetProcAddressもフックして試してみます。

>>553
実装コード自体はiexplore.exeはもっていないんですね。
もう少し調べてみようと思います。


556 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 01:55:53 ]
フックならジェイソン尾妻に聞くといいよ

557 名前:544 mailto:sage [2008/08/27(水) 14:29:36 ]
<<545,<<546,<<547
ありがとうございます。

ウィンドウを生成した後にこのコードを載せたら
そのタイミングでは表示できるのに……

すぐに消えるのはなぜでしょうか。
できればもう少し詳しくお願いします。

558 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 14:57:54 ]
>>557
WM_CREATE の時点ではまだウィンドウが非表示だから
何描いても無駄。

559 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 15:00:14 ]
WM_CREATEの先頭で無理やりShowWindowしたら出たw



560 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 15:14:13 ]
普通は WM_PAINT だろ

561 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 15:55:23 ]
>>559
そして他のウィンドウを重ねると文字が消えると

562 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 16:07:24 ]
>>561
それが、Vistaだとなかなか消えないんだよねえ。
リサイズして描画範囲より小さくしてやるとか、最小ボタン押して戻すとかしないと消せなかった・・・

563 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 16:12:46 ]
そりゃ、DWI動いてるからな。

564 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 16:22:23 ]
今すぐAeroGlassをオフにして試せ

565 名前:544 mailto:sage [2008/08/27(水) 18:15:33 ]
答えてくれた方々ありがとうございます。
このエラーで教えられながらいろいろ調べて
こんなに勉強になるとは思いませんでした。

もう一つ気になるエラーがあるのですが、
WM_PAINTの所で

hdc = BeginPaint(hWnd, &ps);
TextOut(hdc, 20, 20, (LPCTSTR)szStr, (int)strlen(szStr));
EndPaint(hWnd, &ps);
hdc = BeginPaint(hWnd, &ps);
TextOut(hdc, 90, 90, (LPCTSTR)szStr, (int)strlen(szStr));
EndPaint(hWnd, &ps);

とやると初めのTextしか表示されません。これはなぜなのでしょう。

566 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 18:17:48 ]
>>565
なんでBeginPaint と EndPaint は1回でおk

567 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 18:18:55 ]
EndPaintで無効領域が全部リセットされてるから。
デバイスコンテキストは無効領域の部分しか更新しない。

568 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 18:20:21 ]
>>565
BeginPaintとEndPaintは最初と最後に置くだけ。
一回のペアで無効領域(書き換えの必要な範囲)がなくなるから
2回目呼んでも書き換え範囲外になって何もかかない。

569 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 19:27:07 ]
invalidateRectで無効にすれば良い訳ですね?



570 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 19:36:52 ]
>>563
DWIって何ですか?

571 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 19:50:06 ]
ggrks

572 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 20:02:11 ]
DWM、、、ね。ミスったわ。

573 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 20:51:18 ]
>>569
そして、またWM_PAINTが飛んできて無限ループするのですね。わかります。

574 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 01:30:33 ]
こういう通過儀礼って必要だと思います。
自分で考える力を養うためにしばらくそっとしてあげて!

575 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 01:56:18 ]
一方ロシアは

576 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 03:00:52 ]
WPFを使った

577 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 21:13:25 ]
つまり

578 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 23:16:23 ]
  \         /_ /     ヽ /   } レ,'        / ̄ ̄ ̄ ̄\
  |`l`ヽ    /ヽ/ <´`ヽ u  ∨ u  i レ'          /
  └l> ̄    !i´-)     |\ `、 ヽ), />/        /  地  ほ  こ
   !´ヽ、   ヽ ( _ U   !、 ヽ。ヽ/,レ,。7´/-┬―┬―┬./  獄  ん  れ
  _|_/;:;:;7ヽ-ヽ、 '')  ""'''`` ‐'"='-'" /    !   !   /   だ.  と  か
   |  |;:;:;:{  U u ̄|| u u  ,..、_ -> /`i   !   !  \   :.  う  ら
   |  |;:;:;:;i\    iヽ、   i {++-`7, /|  i   !   !  <_      の  が
  __i ヽ;:;:;ヽ `、  i   ヽ、  ̄ ̄/ =、_i_  !   !   /
   ヽ ヽ;:;:;:\ `ヽ、i   /,ゝ_/|  i   ̄ヽヽ !  ! ,, -'\
    ヽ、\;:;:;:;:`ー、`ー'´ ̄/;:;ノ  ノ      ヽ| / ,、-''´ \/ ̄ ̄ ̄ ̄
                 ̄ ̄ ̄            Y´/;:;:;\




579 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 00:38:27 ]
SetConsoleTextAttribute関数でRGBを任意指定をしたいんですけど、これってできないんですか?



580 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 00:43:58 ]
>>579
無理です

581 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 01:49:35 ]
頑張れば可能じゃないの?
例えばの話だが、
赤にする→文字を書く→緑にする→同じ位置に文字を書く
を目にも止まらぬ速さで繰り返せば理論上は黄色に見えるだろ。
ただポケモンショックでぶっ倒れても俺は知らん。

582 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 17:00:30 ]
自分のstartupinfoを書き換えるにはどうすればいい?

583 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 17:02:30 ]
自分自身の書き換えではないけど…
差し替えた STARTUPINFO で 自アプリを CreateProcess して、自分自身は死ぬ とか?

584 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 17:06:47 ]
やだ死にたくない

585 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 17:55:23 ]
>>582
SetStartupInfo

586 名前:デフォルトの名無しさん [2008/08/29(金) 17:58:38 ]
しにたくないよう

587 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 18:08:44 ]
マジレスするとGetStartupInfoWはRTL_USER_PROCESS_PARAMETERSの内容を写してるだけ

RTL_USER_PROCESS_PARAMETERS* p = (RTL_USER_PROCESS_PARAMETERS*)0x20000;
でアドレスが得られるから後は煮るなり焼くなり好きにしろ

588 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 18:21:31 ]
ttp://undocumented.ntinternals.net/UserMode/Structures/RTL_USER_PROCESS_PARAMETERS.html

>>RTL_USER_PROCESS_PARAMETERS is located at address 0x20000 (for all processes created by call WIN32 API CreateProcess).

今はどのOSでもそうなのかもしれないが、将来はどうなるかわからん
まあ頑張れ

589 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 18:44:01 ]
そんなの気にしなくていいよ



590 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 19:24:55 ]
何という糞プログラムw

591 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 19:49:04 ]
>>587-588 ありがと!

592 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 20:17:29 ]
STARTUPINFOを書き換えるなんてのがそもそも糞プログラムなんだから
方法がOS依存しようがそんな事どうでもいいだろ

593 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 21:40:15 ]
個人的には、GetCommandLine()の書き換えも同じくらい糞だと思うが、
argvの書き換えが認められているから、こっちは許容されている感じがする……。


594 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 22:19:50 ]
リストボックスの文字列の高さを決めたいんだけど、
TEXTMETRICのtmHeightじゃ高すぎて(上下の文字列と空間開きすぎ)
LOGFONTのlfHeightじゃ低すぎるんだけど(英語OSだとgとかpとかの下が切れた)

どうやったらいいのかな?

595 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 22:31:50 ]
WNDCLASSとWNDCLASSEXの違いってなんですか?


596 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 22:56:11 ]
拡張版か否か

597 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 23:05:40 ]
>>581
そんなことでポケモンショックになるならDLPプロジェクタが発売禁止になってるて。

598 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 23:09:12 ]
>>581
やってみたら?


599 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 23:09:31 ]
>>594
TEXTMETRIC.tmHeightが開きすぎるように感じるのは、
むしろ日本語フォントが詰めて描画される傾向にあるから。
メイリオの話なら、それはフォント自体の仕様でそれが正常。
LOGFONT.lfHeightが低すぎるのは、
高さを決めたときのフォントと違うフォントで描画している。

とエスパーレスしてみる。



600 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 23:29:32 ]
CreateWindowで作ったウインドウの背景色を後から変更するにはどうしたら良い?

601 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 00:05:33 ]
>>600
CreateWindowで作ったウインドウの背景色を後から変更したら良い

602 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 00:25:41 ]
>>600
h ttp://winofsql.jp/VA003334/CprogSTD020726201337.htm
など

603 名前:600 mailto:sage [2008/08/30(土) 00:27:55 ]
>>601
なるほど。 ありがとうございます。

604 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 00:29:12 ]
ある拡張子のファイルを開くプログラムに自作のソフトを設定して複数のファイルを同時に開いた時
コマンドで複数の引数を渡されるのではなく、開いた数だけプログラムが起動してしまうんだけど
これを何とか一つのプログラムで開けるようにできないですか?

605 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 00:32:28 ]
>>604
出来ます。

606 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 00:34:03 ]
>>604
mutex でググってみる?

607 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 00:34:12 ]
まあ単色塗りつぶしにPatBltとか使うのは無能なんだが。

608 名前:600 mailto:sage [2008/08/30(土) 00:36:53 ]
>>603は私じゃありません。

609 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 00:39:40 ]
>>600
SetClassLong



610 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 01:40:31 ]
素直にFillRect使っとけ、って感じはするね。
ExtTextOut使えとは流石に言わないけど。

611 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 02:09:48 ]
>>599
日本語OSだとMS UI Gothicで
外語OSだとMS Shell Dlgとかいうフォントがきてる

日本語OSだとLogFont.lfHeightはちょうどいい感じ
外語OSのときに狭い。tmHeightは広い。
lfHeightt+2か3くらいで出せるとよさげ。
tmExternalLeadingとかいうのが2できてるけど、
日本語だろうと外語だろうと関係なくきてるから根拠がわからん。
tmInternalは常に0だし(´・ω・‘)

情報が良くわかってなくてスマンコ

612 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 05:19:24 ]
>>610
昔はExtTextOut使った方が速かったんだけどね

613 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 09:03:08 ]
>>602>>609>>610
どーも。SetClassLongを使ったら無事できました。

614 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 10:03:19 ]
リッチエディットについて質問させて下さい。

リッチエディットにアイコンまたはビットマップをテキストと混在させて
表示することはできるのでしょうか?
また、そのアイコンやビットマップをクリックしたことを検出することは
できるのでしょうか。

もし可能でしたら、参考になるサイトや資料へのポインタ等をお教えいただければ
ありがたいです。

615 名前:604 mailto:sage [2008/08/30(土) 12:11:09 ]
一応できたので報告。
mutexで二重起動を防止しつつ既に起動しているなら
FindWindowでそのウィンドウを見つけてCOPYDATAメッセージでコマンド引数を渡し
読み込み、後起動のウィンドウを閉じる。
となりました。ありがとうございました。

616 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 12:58:30 ]
// ウィンドウの作成
if(isFullScreen) { // フルスクリーン
int sw;
int sh;
// 画面全体の幅と高さを取得
sw = GetSystemMetrics(SM_CXSCREEN);
sh = GetSystemMetrics(SM_CYSCREEN);


画面全体の高さを幅を取得とありますが

今使っているディスプレイのサイズを取得するってことですか?

617 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 13:04:24 ]
プライマリモニタ

618 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 13:07:34 ]
>>616
シングルモニタの場合には解像度が得られる
マルチモニタ環境の時には思ってるものと違うものが返ってくるかもしれない

619 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 13:09:44 ]
ありがとうございます



620 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 13:34:49 ]
>>614
リッチエディットにテキストとビットマップを混在させるのは可能。
ttp://www.codeguru.com/cpp/controls/richedit/article.php/c5383/
この辺が参考になるかと。

621 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 16:08:24 ]
パフォーマンスカウンタから自分自身のCPU使用率を得たいのですが、
自分自身を表すインデックスを取得するのにうまい方法は無いのでしょうか。
列挙するしか無いんですかね。

622 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 17:03:51 ]
>>621
WMI

623 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 17:26:42 ]
あー、自分自身ってのはプロセスのことです。説明不足があったらすみません。
自分自身のプロセスのCPU使用率を取得したい、ということです。

>>622
すみません、ぐぐったのですが、具体的な方法が分かりませんでした、、、

624 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 20:34:18 ]
もっともっとぐぐるんだ






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

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

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