1 名前:デフォルトの名無しさん [2007/06/12(火) 19:59:25 ] スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。 やさしいお兄さんやお姉さんたちが答えてくれるかも。 過去スレ、関連リンクは>>2-5 くらい。 ■注意 ・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。 ・日本語版MSDN Online Libraryは不完全です。英語版(msdn.microsoft.com/library/ )の利用推奨。 ・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。 ・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで
596 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 16:50:55 ] こんにちは、ちょっとした疑問の解決作を教えてください。 エディタをサブクラッシングしようと思い、以下のコードを書きました。 WNDPROC OldEditProc; LRESULT CALLBACK EditSubProc(HWND,UINT,WPARAM,LPARAM); ... OldEditProc=(WNDPROC)SetWindowLong(hEdit,GWL_WNDPROC,(LONG)EditSubProc); しかし、これだとデフォルトの警告レベルで、warningが2つもでるんですよね・・・。 ( 『LRESULTからLONGに切り詰めます』 というのと、『LONGからWNDPROCへ変換します』 というもの ) これ、どうにかしてwarningを取る方法は無いでしょうか? ご教授御願いいたします。 環境はWinXPPro-sp2 ,VC++.NET です。
597 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 18:04:20 ] 何故warningになるのか考え、それの対処を調べるんだ ヒント:64bit
598 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 18:28:42 ] >>596 #include <atlwin.h>した上で、SetWindowLongではなく、SetWindowLongPtrを使え。 その際、そのLONG型のキャストをLONG_PTR型へのキャストにする必要がある。。 msdn.microsoft.com/library/ja/jpwinui/html/_Win32_SetWindowLongPtr.asp <atlwin.h>をインクルードする理由は、<windows.h>をインクルードしただけだと、 32ビット版でのSetWindowLongPtrがあまりにもお粗末なので、 結局警告が表示されることに変わりがないから。
599 名前:596 mailto:sage [2007/07/05(木) 00:32:56 ] おぉ〜凄いっ! 教えていただいた通りにやってみると、warningが出ないです〜っ!! 大変参考になりました。 本当にありがとうございました。 m(。−_−。)m
600 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 11:26:11 ] int APIENTRY WinMain(HINSTANCE, HINSTANCE, LPSTR, int); これを int APIENTRY WinMain(); こういう風にしたんですが、できませんか?
601 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 12:37:22 ] できません
602 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 12:40:38 ] できます
603 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 12:42:48 ] できますん
604 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 12:43:56 ] つかわないんならなくてもいいだろ
605 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 12:44:06 ] できます
606 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 13:01:44 ] APIENTRYだから、できませんね。 __cdeclならできるんだけど。
607 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 13:33:23 ] できます
608 名前:デフォルトの名無しさん [2007/07/05(木) 13:34:51 ] あぴえんとりー
609 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 13:44:52 ] キチガイが住み付いてるな。
610 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 13:53:45 ] 自己紹介乙
611 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 13:53:54 ] 自分で分かってるなら大丈夫だから安心していいよ
612 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 13:54:48 ] ワレワレハ、ウチュウジンダ
613 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 14:08:55 ] そういえば言語言ってなかった・・・ C言語なんですがやっぱ無理かったです 本当にありがとうございました
614 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 15:16:05 ] プログマーが日本語おかしいのはヤバイ 数学より国語的な能力が必要だとおもう
615 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 15:17:37 ] プログマー
616 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 15:19:02 ] 釣られるプロだクマー
617 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 15:20:19 ] プラグマー
618 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 15:21:26 ] >>617 差し替えで簡単に置きかえられるプログラマー?
619 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 15:23:10 ] #pragmar
620 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 15:25:44 ] プギャー
621 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 15:37:07 ] まるで動物園だな、ここは
622 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 16:34:57 ] 人間だって動物さ
623 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 18:31:04 ] マ板は釣り易いことで有名くま
624 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 18:33:42 ] プラモデルみたいなプラグラマ
625 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 19:35:36 ] >>624 語源は両方ともギリシア語だけど、出所が違うの。 スレ違いだからほどほどに。
626 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 21:38:06 ] プログマー笑ったwwwwwwwwwwwwwww
627 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 21:45:13 ] 面白くない。いい加減にしとけ
628 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 00:08:47 ] ウィンドウのタイトルバー上のホイール操作で ウィンドウを半透明にできるユーティリティを作りたいんだが システムフックしてDLL上でコードを長々と書いて一応できることはわかった。 だけどexe側で処理させたいのだが、なにかよい方法はないだろうか? exeに、呼び出されたDllのインスタンスハンドルを送ってそこで明示的な関数ロードとかやったけどできなかったよ
629 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 01:00:07 ] 今市意味が分からないんだけど ホイール操作を捕まえて半透明化するサブクラス化用のプロシージャを書いて フックを入れてからサブクラス化すればいいと思う
630 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 01:36:59 ] >>628 そういう機能のWindowTPというソフトがあるが、自分で作りたいだけ?
631 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 02:12:13 ] >>629 おk、サブクラス化試してみるわ ありがと >>630 今作ってる奴の機能の一部として搭載予定。 まぁ自己満足だけどね ありがとー
632 名前:628 mailto:sage [2007/07/06(金) 03:28:14 ] ('A`)・・・・? techtips.belution.com/ja/vc/0026/ >指定されたウィンドウの属性を変更する SetWindowLong() は、 >指定するウィンドウが呼び出し側のスレッドと同じプロセスに属していない場合に失敗します。 これを信じて四苦八苦してたのに 自身のexe側から他のプロセスのウィンドウを半透明化できちゃったぞ・・・? う〜む・・・
633 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 04:25:29 ] そんな古い上にどこの馬の骨が書いたか分からんようなサイト見ずに、MSDN読めよ。 msdn2.microsoft.com/en-us/library/ms633591.aspx > Windows 95/98/Me: The SetWindowLong function may fail if the window specified by the hWnd parameter does not belong to the same process as the calling thread.
634 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 13:45:15 ] Dllから呼び出したダイアログにXPスタイルが効かないんだけどなんでだかわかる? manifestやらcomctl32やらをexeの設定方法でやってんのがダメなのか…。 わかんなくて頭爆発しそうなのでそろそろ米国行きの飛行機に乗りに行きます。
635 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 13:51:55 ] どうぞ。
636 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 13:52:50 ] そのDLLを呼んでるEXEの設定はどうなのよ
637 名前:634 mailto:sage [2007/07/06(金) 15:08:31 ] >>636 最終的に写真屋のフィルタ(8bf)にするDLLなんでナカミはよぅわからんのです。 ただ、さっき「猫でも〜」の外部DLLからダイアログ呼ぶプログラムでも 試してみたけどコレもダメだったので 写真屋のAPIの問題っつーより私の問題らしいです。
638 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 15:52:17 ] >>634 ISOLATION_AWARE_ENABLEDについて調べるんだ
639 名前:634 mailto:sage [2007/07/06(金) 21:29:52 ] うおおおおおおおおおお! プリプロセッサにISOLATION_AWARE_ENABLED書いただけで うまくいきましたッ! >>638 ありがとーーーーーーー! 愛してるッ!
640 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 22:21:54 ] きんもー☆
641 名前:デフォルトの名無しさん mailto:age [2007/07/07(土) 08:08:18 ] 任意のプロセスがCreateFileしたファイルのパス、それを取得する方法て何かないですか? 使用OSはVistaです フィルタドライバ書かなきゃいけないんでしょうか?…
642 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 08:26:24 ] CreateFileのAPIフッ(ry
643 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 08:52:36 ] DLL側から、呼ばれているプロセスのIDかウインドウハンドルを取得するにはどうすればいいですか? FindWindowでウインドウタイトル指定して取得していたんですが、 多重起動されたらだめじゃんってことに気が付いて・・・・ おしえてくださいm(_ _)m
644 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 09:05:30 ] 普通に自分のプロセスIDを取得しろよ。 DLLをなんだと思っているんだ?
645 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 09:43:56 ] >>642 VistaでAPIフックしたら実行時に警告出ませんか?
646 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 10:31:26 ] >>644 普通にプロセスIDを取得する方法を教えてくださいm(_ _)m
647 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 10:33:33 ] GetProcessID()
648 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 10:35:14 ] www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=3D1FBAED-D122-45CF-9D46-1CAE384097AC
649 名前:デフォルトの名無しさん [2007/07/07(土) 10:44:49 ] >>646 GetCurrentProcessId() 名前からしてそのものズバリな訳だが このくらいググれ
650 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 10:54:50 ] >>645 > VistaでAPIフックしたら実行時に警告出ませんか? そりゃあドライバでも一緒だと思うが?
651 名前:デフォルトの名無しさん [2007/07/07(土) 10:56:57 ] 人を利用する事しか頭に無い奴に回答をくれてやるな。
652 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 12:05:24 ] 32bitVistaだとドライバの場合ロゴとらないとWindowsの動作自体に制限かかるんだっけ? 64bitだとフックもドライバも現実的じゃないよな
653 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 12:15:12 ] いつも思うんだけど なんでこんなにフックしたい奴が多いんだ
654 名前:デフォルトの名無しさん [2007/07/07(土) 12:23:35 ] フックで躓く奴が多いんだと思われ 別に集まりたくてフックしたい奴らばっかり集まってるわけじゃないでそ
655 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 13:42:09 ] あやしげなソフト作ろうとしてんだろうな
656 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 14:36:33 ] >>649 ググるよりも前に、PlatformSDKのヘルプ、または、MSDNライブラリだろう。 検索してもいいし、普通に目次から辿っても見つけられる。 ていうか、普通に目次から辿って見つけられないのは、よほどのアレだぞ。
657 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 14:41:47 ] >>653 質問のしかたを見ると、厨房くさい やろうとしていることを見ると、怪しい >>555 あたりなんかは、 特定のサイトにアクセスしているときだけキーログを取ろうとしている とも見れるしなぁ。 怪しいプログラムを書くなら、人に聞かずに自力で何とかしろってんだ。
658 名前:デフォルトの名無しさん [2007/07/07(土) 15:09:00 ] するどい人だな。まったく想像できなかったぜ
659 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 19:10:52 ] >>653 そりゃあ2ちゃんだから釣り師が多いんだろ
660 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 19:55:26 ] 上手い事言ったつもりかも知れんが面白くない
661 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 21:45:07 ] 俺窓プログラム作って初めて実用的なの作ったのはフック使ったネトゲーツールだったな 調べながら実装したし窓プログラムの根本的な概念もそんな理解してなかったから コードはめちゃくちゃ汚かったが勉強にはなったな。 そうこうしながら1年後あたりにAPIフック使ってパケット取得ツールも作ったわ。 APIフックは俺がしょぼいからだろうが4ヶ月かかってやっとできたんだけどなw フックぐらいはちょっと頑張ればすぐできるだろ。 人に聞くのが悪いとは言わないが、フックに関しては 参考サイトいっぱいあるんだから自分で調べようぜ。 特に目的が限りなく黒に近いものを作るんならなおさら。
662 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 21:48:36 ] 単なる物臭か根性無しだろ どうせヒマ人が答えるんだしいいじゃねーか別に
663 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 21:49:53 ] オレには真っ黒にしか見えないが、 そういうことをやってる当人には灰色に見えるんだろうな
664 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 21:56:14 ] ためしに検索したらたくさんでてきた しょぼいキーロガー程度ならすぐできるな
665 名前:661 mailto:sage [2007/07/07(土) 22:06:04 ] >>663 まあ真っ黒だわなw ただ、そういうの作る奴が全部俺みたいな考えだとは思わないが 俺自身はネトゲーツール作って使おうという思考よりも 技術的な勉強をする為にそれを作ろうっていうのが どっちかって言うと大きかったな。 それの作成にあたっての動機付け(動機があったほうが頑張るから) が欲しかったからたまたまやってたネトゲーをターゲットにした感じ。 まあ、ここはそういう議論スレじゃないから以降これに関しての発言はしない。
666 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 22:15:24 ] 逆だろ。 升ツール作る為に技術的な勉強をする必要があったんだろ。 まぁ一般的な解凍ツールやブラウザとかは既に便利なものを作ってるヤツがいるからな 自分が利用する便利なツールで世の中に出回ってないものしか作ろうとしたら 真っ黒なツールしかねーんだろうけど。
667 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 22:18:43 ] フックが真っ黒ならTClockすら真っ黒だし 悪用できる技術=悪じゃないでしょ スレ違いも程々にしとけ
668 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 22:23:16 ] 犯罪幇助にしか使われなくなったら京都府警がUSER32.DLLを取り締まるから無問題。
669 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 23:30:04 ] >>668 京都府警じゃ信用ならん 神奈川県警にしとけ
670 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 23:34:47 ] フックは夢が広がるから困る
671 名前:デフォルトの名無しさん mailto:sage [2007/07/07(土) 23:36:08 ] いい加減にしろ
672 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 00:00:38 ] いい加減にしろ
673 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 00:06:15 ] どうもありがとうございました。
674 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 00:25:49 ] フックってなんだよ素人の俺に説明しろ
675 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 00:26:15 ] ヒント:船長
676 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 00:34:23 ] ガッツ石松の左
677 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 00:49:02 ] ワロスw
678 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 01:23:45 ] 上岡龍太郎
679 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 02:42:57 ] こんな時間に人がいるとは思えないが。。 リソースファイルを使わずにアイコンをロードして使いたい場合 CreateBitmapを使えばいいんでしょうか? それとも他にアイコン専用のAPIがあるんでしょうか?
680 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 04:04:32 ] 意味が分からない。 ファイルから読み込むならLoadImage使え。 作るならCreateIcon使え。
681 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 07:29:42 ] LoadIcon
682 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 10:36:43 ] WinAPIを勉強しようと思いWindowsゲームプログラミングという本を読みながら勉強 してるんですが、この本の通り打ち込んでもエラーでコンパイルできないところ があります。 このソースなんですが何故でしょうか?すみませんが教えてください(´・ω・`) ソフトはPlatformSDKをインストールしてVisual C++ 2005でやっています #include <windows.h> int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { BYTE * bytes = "BYTE *"; PBYTE pByte = "PBYTE"; LPBYTE lpByte = "LPBYTE"; MessageBox(NULL , bytes , NULL , MB_OK); MessageBox(NULL , pByte , NULL , MB_OK); MessageBox(NULL , lpByte , NULL , MB_OK); return 0; }
683 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 10:39:25 ] >>682 どう見てもスレ違いです
684 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 10:42:38 ] ごめんスレ違いだったのか
685 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 10:57:34 ] >>682 たぶん、コンパイラ設定だろうね。 エラーさらしてみ
686 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 10:57:53 ] >>682 まず質問として何のエラーかを明確にしてくれないと困る。 それのソースはCか?C++か? Cだとしたら値を代入する前に型宣言を最初に全てやってないと コンパイル時エラーになったと記憶してるが。 BYTE * bytes = "BYTE *"; PBYTE pByte = "PBYTE"; LPBYTE lpByte = "LPBYTE"; BYTE *byte; PBYTE pByte; LPBYTE lpByte; byte = "BYTE *"; pByte = "PBYTE"; lpByte = "LPBYTE"; ※但し、実験してないから間違ってるかもしれん(そこまで保証する義理はないが) 環境がVC2005ならMessageBoxの第二引数の型をキャストしないと警告も出ないか?
687 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 11:08:57 ] > Cだとしたら値を代入する前に型宣言を最初に全てやってないと > コンパイル時エラーになったと記憶してるが。 ブロック冒頭の変数宣言時の初期化する/しないは自由です。 /* cでもOK */ void test() { int n1; int n2 = 1; int n3; int n4 = n2; :
688 名前:688 mailto:sage [2007/07/08(日) 11:12:17 ] >>687 ああ、宣言時は可能だったっけか
689 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 11:13:54 ] >>682 マジレスすると拡張子がcじゃなくてcppだから 俺、2冊も買っちゃったし良本だよな がんがれ
690 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 11:17:35 ] 全部見当違い。 2005のデフォルトのオプションを考えれば分かるだろ。 なんでここはこんなに馬鹿しかいないんだ?
691 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 11:23:25 ] >>690 バカ筆頭の人が言うと、 さすがに迫力がありますね
692 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 11:28:06 ] 僕バッカー
693 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 11:28:26 ] >>685-686 スレ違いなのにありがとうございます。 ソースは.cppのC++です。事前に宣言してみましたが無理でした エラーは、ちゃんと文字型の宣言に入れろ。ってことかなと思ってますが本でも CDに入ってたサンプルもこの通りだったのでやっぱり問題はコンパイラの設定でしょうか? 試しにCHAR型で宣言してやってみたらそれならうまくいきました 文字数制限にひっかかったのでtxtですみませんがエラーです ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4549.txt
694 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 11:28:35 ] 底の浅い知識すらも持っていないくせに、 確認すらしないで適当を並べる馬鹿は何とかならないのか?
695 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 11:31:55 ] MessageBoxWが呼ばれてるのかなゃ
696 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 11:32:48 ] コンパイルオプションに/J