- 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/
- 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 の時点ではまだウィンドウが非表示だから 何描いても無駄。
|

|