スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんやお姉さんたちが答えてくれるかも。
過去スレ、関連リンクは
>>2-5 くらい。
■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。英語版(
http://msdn.microsoft.com/library/ )の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで
6 :
992 :2007/08/13(月) 17:01:55
前スレ992です。 皆様いろいろとありがとうございます。 セキュリティ奇術師についてはあまり詳しくないのですが、同一ユーザが 立ち上げる特定の2つのプロセスのみにアクセスを許可するような指定が 可能でしょうか? なにしたいかというとこんなかんじ↓ 1. アプリAがアプリBのバイナリをサーバSからダウンロード 2. アプリBの正当性をハッシュで検証した後、書き出したファイルにロックかけたまま ShellExecuteで実行 3. このとき、アプリAだけが知っているいくつかの情報(特に通信のためのセッション情報) を、アプリBにセキュアに渡したい。 4. 以上の手続きによって、サーバS上のAPI(ソケットで実装している)が 勝手なexeから実行されるのを防ぐ。
ウィンドウを作るだけのプログラムを本見て書いていたのですが、 if (!RegisterClass(&wc)){ MessageBox(NULL, TEXT("ウィンドウクラス作成失敗"), NULL, MB_OK); return 0; } 最初 これは問題が起こらなければ いらないのだろうと思い書かなかったところ ウィンドウが生成されませんでした。 なぜ、この行?が必要なのでしょうか?(言語はCです。)
RegisterClassでググってみたのか?
>>7 > 最初 これは問題が起こらなければ いらないのだろうと思い書かなかったところ
その判断の根拠は?
RegisterClass
読んで字のごとく
クラスを登録するために必要
>>8 ごめんなさい完全に自分があふぉでしたorz
>いらないのだろう 自分の行動が、おかしいと感じた事はありませんか? あなたの自己診断機能は、大丈夫ですか?
>>11 自分の行動が、おかしいと感じた事はありませんか?
あなたの自己診断機能は、大丈夫ですか?
おれはDialogBox使うから、関係ないね
詰まり、エラー処理は省略してもRegisterClass(& wc);は省略できなかったわけだね。
15 :
デフォルトの名無しさん :2007/08/13(月) 22:07:54
>>6 完璧な隠蔽はできないから、見えてもいい実装にすることを勧める。
というか自分PCの中での出来事は基本的にセキュアだという前提。
ここでいうセキュアは物理的に外部に漏れないという意味。
そういう目的なら、改竄されてはいけない処理はサーバーで全部やって、その他はクライアントにやらせるのが楽で安全だと思う。
>>6 システム全体の構成(サーバが悪意のあるクライアント(AおよびBを騙る偽者)から
攻撃されることを想定してないような気がする)はおいておいて、
親プロセスAとそこから起動される子プロセスBでセキュアに通信したいなら、
子プロセスの起動にShellExecuteの代わりにCreateProcessを使えばよい。
CreateProcessのオプションで「ハンドルを継承する」をONにしておけば、
親プロセスで獲得したハンドルを子プロセスでも使用できる。
これは他のプロセスが介在しないので、セキュアといっていい。
>>6 今のPC上で完全にセキュアなアプリケーションの構築は絶対に不可能。
せいぜい解析しにくいように足掻くことしかできない。
その程度の実装では、窓ガラスに防犯フィルムを貼った程度の効果しかない。
最も安全なのは、誰も攻撃する価値を感じないアプリケーション。
selenのエロゲーのプロテクトは凄いよ 見習わないと
だよなwあれだけ破られまくりなのはあんまないよな
凝るほど解析大好きっ子がハッスルするから無駄
だったらおま天最強すぎだろ
>>15 が書いたように、サーバ側で対処ってのが答えなんだろうな。
クライアント側はユーザにできることが多すぎる。
22 :
デフォルトの名無しさん :2007/08/14(火) 09:48:43
CreateIconIndirect などで動的に作ったアイコンを WM_SETICONで 設定した後、すぐにDestroyIconしてもいいのでしょうか? 質問の意図は、Windowがアイコンのコピーを保持してるかどうか、 ということです。コピーを持ってるならすぐに開放してもいいのかな、 と思ったもので…。 よろしくお願いします。
23 :
992 :2007/08/14(火) 13:44:23
>>15 クリティカルな処理は全てサーバサイドに実装、までは完了してます。
で、そのコマンドを誰が呼べるのか、っていうところで今悩んでます。
ID/パスワードをユーザに打たせるのは最初の1回だけにしたいのですが、
そうして得たセッションキーを、どうしてもプロセスをまたいで渡す必要があるのです。
>>16 CreateProcessが最もプリミティブなexe起動方法、ということですかね。
ハンドルの継承調べてみます。ありがとうございます。
>>14 そこは罠だよな。C#だとif文の中に命令かけないし
>>22 以前やったときは保持されていない挙動をした覚えがある
便乗するけどWM_GETICONのICON_SMALL2って何に使われるものなんだろう。
27 :
22 :2007/08/14(火) 20:50:53
>>25 やっぱだめっすか。仕方ないので保持しておくことにします。
>ICON_SMALL2
ググルとXP以降で、アプリケーション提供のsmall iconって
書いてますが、ろくな説明が無いですね。
>>27 WM_SETICONでNULLを送れば
それまで設定されていたアイコンのハンドルが返ってくるから自分で保持する必要はない
29 :
22 :2007/08/14(火) 21:22:13
>>28 ハンドルじゃなくて、(プログラム内で生成した)アイコンの実体の方です。
Win32APIでプロセス間通信するにはどのような方法がありますか
ES_MULTILINEなエディットボックスで、現在表示できている行数を得る方法 (EM_メッセージなど)がありましたら教えてください。
EM_GETLINECOUNT
>>33 それだとエディットボックス内のテキスト全体の行数になってしまいます。
エディットボックスのクライアント領域に表示されている現在の行数が知りたいのです。
>>34 失礼、読み違えてました。
そういうことだと確かに悩むけど、
EditControlのクライアント領域のサイズとフォント情報から計算するのかなあ。
ありがとうございます。 DCにエディットボックスのフォントを指定して、 GetTextExtentPoint32で得られるサイズでクライアント矩形を割ったら得られました。 ちょっと合ってるか不安ですけど。
Glib::RefPtr<Gtk::TextBuffer> refBuffer = m_TextView.get_buffer(); gint count = refBuffer->get_char_count(); Gtk::TextBuffer::iterator iter = refBuffer->get_iter_at_mark(refBuffer->get_insert()); gint row = iter.get_line(); gint col = iter.get_line_offset(); gchar* msg = g_strdup_printf ("Cursor at row %d column %d - %d chars in document", row, col, count); ほげほげ g_free (msg);
ほげほげ ほげほげ ほげほげ ほげほげ ほげほげ ほげほげ ほげほげ ほげほげ ほげほげ ほげほげ ほげほげ ほげほげ ほげほげ ほげほげ ほげほげ ほげほげ ほげほげ ほげほげ ほげほげ ほげほげ ほげほげ ほげほげ ほげほげ ほげほげ
ほげほげ ほげほげ ほげほげ ほげほげ ほげほげ ほげほげ ほげほげ ほげほげ ほげほげ ほげほげ ほげほげ ほげほげ ほげほげ ほげほげ ほげほげ ほげほげ ほげほげ ほげほげ ほげほげ ほげほげ ほげほげ ほげほげ ほげほげ ほげほげ
g_free (msg); ほげほげ gchar* msg = g_strdup_printf ("Cursor at row %d column %d - %d chars in document", row, col, count); gint col = iter.get_line_offset(); gint row = iter.get_line(); Gtk::TextBuffer::iterator iter = refBuffer->get_iter_at_mark(refBuffer->get_insert()); gint count = refBuffer->get_char_count(); Glib::RefPtr<Gtk::TextBuffer> refBuffer = m_TextView.get_buffer();
42 :
デフォルトの名無しさん :2007/08/15(水) 11:35:47
ソケット通信でメールの送信を行う手順を書いているサイトを教えてください 猫でもわかるプログラミング以外でお願いします
>>42 それを自力で見つけられない人が見様見真似でメールの送信プログラムなんか作りでもしたら、
大変に迷惑ですから教えません。
>>42 猫でもわかるのにわからないあなたに無理に決まってるだろうが!!
ピリオドだけの行があるメールが送れません。 どうすればいいですか。
ピリオドだけの行があるメールが送れます。 どうもしません。
エンコしろ
既製メーラのパケ見ろ
Vista32bitでCreatRemoteThreadができん こんな、ヘボい俺をあざけ笑いながら助けてくれ 起動済みのプロセスに対してDLLインジェクションしたいのだ まずビルド環境が、XPでVS2003だ。金がない訳じゃないぞ、まあないけど 開発環境の都合だ XPでは成功する VISTAマシンに、ビルド結果をコピー XPマシンから、リモートデバッグで調べてみると、見事に失敗している GetLastErrorが8(なんか領域不足)を返してきた メモリもハードディスクもスタックも多分、てんこもり 何が足りないんだ プリーズヘルプリング
管理者として実行してないんでね? VS上でデバッグするんならVSを管理者権限で起動
53 :
デフォルトの名無しさん :2007/08/15(水) 16:27:35
夏休みって煽り方も子供っぽくて逆に応援したくなってくる
54 :
デフォルトの名無しさん :2007/08/15(水) 16:33:30
マルチモニタ環境でのデスクトップのSysListView32について教えてください。 SysListView32のクライアント領域の左上隅はどのスクリーンにあるのでしょうか? プライマリかどうかに関わらず一番左のスクリーンの左上隅から 一番右のスクリーンの右下隅までなのかなと思うのですが。。 それとも各スクリーンにあったりするんですか(;´Д`)
uacによる拒否は違うエラーだよ 1223だったかな これは単純に権限の問題 たとえばSYSTEMユーザのプロセスとかが対象のときに出たエラーだった気がする
UAC切ってればデバッグ特権を有効にして強制的にプロセスハンドルを取得できるけど UAC有効だと昇格しない限りデバッグ特権を持ってないって話じゃね?
>>52 >>55 >>56 >>57 ありがとうございます
さすがAPIフックスレです。
皆さん煮え湯を飲まされてるだけありますね
UACは切り、mt.exeで、管理者権限を設定してます。
親の権限を継承する設定は記述してないです
CreateRemoteThreadは、DLLからコールし、このDLLは、EXEからロードされます
EXEがサービス側かユーザー側にいるかで実行結果が変わりそうですね
このEXE
XPでは、ユーザーがSYSTEM
Vistaでは、SYSTEMとeros(ユーザーアカウント)の2つのときがあるんです
それが関係してるかもしれません、そこらへん詳しく見てみます。ありがとうございました
他のアプリがフルスクリーンだったりで自分のウィンドウを 完全に隠してるかどうか知る方法あるでしょうか? EnumWindowsとか使えばいいのかな。
visutaではきっと通用しない気がする
いつからここはAPIフックスレになったんだ
63 :
デフォルトの名無しさん :2007/08/15(水) 21:11:06
悪の技術フック禁止しろ
CreateRemoteThreadフックしてFALSE返してしまえばいいと思うよ
>>61 お前他の板でもvisutaって書いてただろ死ね
エディットボックスの最下行へ次々と文字列を追加していきたいのですが、 下の方法より速いやり方がありましたら教えてください。 下だとフォーカスが当たっていると選択部分の反転・非反転の明滅を繰り返し、 非常に見辛いです。 EM_SETSELで選択とかせずに、キャレットを直接行末に移動する 方法があれば良いと思うのですが。 void append_text(HWND hEdit, const char *buffer) { SendMessage(hEdit, EM_SETSEL, 0, -1); // すべてを選択する(キャレットはテキストの最後に移動) SendMessage(hEdit, EM_SETSEL, -1, -1); // 非選択にする SendMessage(hEdit, EM_REPLACESEL, 0, (LPARAM)buffer); // 選択テキストを入れ替える(非選択ならキャレット位置へ挿入) SendMessage(hEdit, EM_SCROLLCARET, 0, 0); //キャレットが表示される場所までスクロールする }
速い方法が知りたいのか、見辛くない方法が知りたいのか、 どっちなのかハッキリしろ馬鹿
ハッキリ書いてるじゃん。
馬鹿は言いすぎだろあほ キャラットのおいしい食べ方知りたいってはっきり書いてあんだろうが!
>>67 WM_SETREDRAWをSendMessage()して、描画を停止・再開するのが定番なんだが、それじゃだめ?
あと、どうせならテキストはバッファにためておいたのを、まとめてエディとボックスに入れた方がいい。
徐々に追加すると時間がかかるので。
じゃ阿呆で
>>71 ありがとうございます。
だいぶ速くなりました。
>まとめてエディとボックスに入れた方がいい。
追加されていく様子をユーザーに見せたいので。
あとSetWindowTextだとちらつくのが。
SendMessage(hEdit, EM_SETSEL, 0, -1); // すべてを選択する(キャレットはテキストの最後に移動) SendMessage(hEdit, EM_SETSEL, -1, -1); // 非選択にする ↑の書き方がいまいちなような・・・何か参考にした? 普通は、テキストの長さをWM_GETTEXTLENGTHあたりで取得して、 EM_SETSELに渡す感じじゃないかなと。
>>74 その操作はキャレットを末尾に移動させるのが目的なので。
必要ありませんね。
末尾に移動させるのが目的なのに、なぜ選択->非選択というトリッキーなことをするのだろうか
>>75 カレットを移動するだけなら、余計なことはしなくていいのでは?
>>78 その操作は自己満足と自分の低レベルを顕著にさせるのが目的なので。
80 :
デフォルトの名無しさん :2007/08/16(木) 09:10:15
薄汚い派遣の国、日本 最近、職場で「出戻り寄生派遣」という言葉が囁かれています。 派遣契約を切られたにもかかわらず「次の派遣先でも切られてしまって生活できません」 などと 言って泣き落としで現場マネージャーにすら一切話がないまま再契約した派遣のことです。 今月初め、半年前に切った派遣が出社してきてマネージャーも含めみんなびっくりしました。 影でコソコソ偉い人に泣きついて再契約したそうです。同じ部署の人には黙って・・・ そんなことまでして自宅の近くの派遣先にこだわって人間として恥ずかしくないのですか。 仕事に必要な技術がなく勉強する気もないのを逆手にとって 「私のような人の視点で仕事をすることも大切だと思います」と挨拶された時には みんな絶句していました。派遣でスキルアップとか言ってる癖に技術を勉強する気はなく 「それは私の仕事ではありません」の一点張り、派遣で収入アップとか言ってる癖に 時給は前回と同じで喜んで再契約。 結局、なんの努力もせずに派遣で安直に収入を得たいだけじゃないですか。 身分不相応な商品のローンを払うために派遣だと当然足りない収入は親にも寄生して、 いつ切られるんじゃないかとビクビクしながら人事権のある人間とだけ仲良くし、 契約終了を通知されれば泣き落とし。悲惨な人生ですね。 氏んだほうがいいんじゃないですか。
久しぶり、元気してた?
82 :
デフォルトの名無しさん :2007/08/16(木) 11:35:20
Win32 API とは関係ないかも知れませんが。 MSIME の手書きパッドをプログラムから表示するにはどうしたらよいでしょうか。 imepadsv.exe を使うのでしょうか? よろしくお願いします。
>>82 最近、別のスレで同じような話題があった気がした
DWORD WM_MSIME_SHOWIMEPAD = RegisterWindowMessage("MSIMEShowImePad");
HWND hwnd = ImmGetDefaultIMEWnd(GetForegroundWindow());
::SendMessage(hwnd, WM_MSIME_SHOWIMEPAD, 0, 0);
Win32APIでExcelやAccessにaccessするにはどのようにすればよろしいでしょうか?
Accessにaccessって言いたかっただけちゃうんかと
>>84 「三流君」で検索すると参考になるページが。
>>88 VBAからWin32APIを起こすんじゃなくてその逆なんですけど
そのサイトは大丈夫?
>>84 データにアクセス出来ればいいっていう話なら
ODBC でいけるよね Win32API だけとは言えないかな
OLE
スライダー(トラックバー)のオーナードローはどのようにするのでしょうか? WM_DRAWITEMにはメッセージが来ないです(´・ω・`)
ダイアログベースのアプリケーションにリストビュー(詳細形式)を 貼り付けたいと思い、コーディングの参考にしようと色々なサイトを 見て回ったのですが、どれもSDIベースでのもので、 ダイアログベースでやるには別な書き方が必要なようです。 ダイアログベースのアプリケーションにリストビュー(詳細形式)を 貼り付けるにはどうしたら良いでしょうか?
普通に
ダイアログとSDIの違いについて語ってください
戦略防衛構想 (Strategic Defense Initiative, SDI) はアメリカ合衆国 がかつて構想した軍事計画。通称スターウォーズ計画。 静止衛星軌道上にミサイル衛星やレーザー衛星、早期警戒衛星など を配備、それらと地上の迎撃システムが連携して敵国の大陸間弾道 弾を各飛翔段階で迎撃、撃墜し、合衆国本土への被害を最小限に留 めることを目的にした。
ありがとうございました
ダイアログ 情報を表示したり、 ユーザーからの入力を取得したりする為の アプリケーションが作成するポップアップウィンドウ。 コマンドの付加情報/任意の選択などユーザーから入力を受け取る際に利用します。 サイズの単位はダイアログ単位(DLU)が利用されます。 一般的に[ESC]キーでキャンセル、[Enter]キーでOKだったかな?
_declspec(dllexport) bool WINAPI hogehoge(bool bFlag, int& nResult) こういうAPIがエクスポートされてる時に、これを「C言語で」使う書式ってどういうものになるんだろう? boolは1バイトだからcharとかで代用できると思うけど、参照の部分が・・・
100 :
93 :2007/08/17(金) 12:30:37
こちらでの質問を終わります。 ありがとうございました。
>>99 まっとうなプロジェクトで保守性高めたいってなら、C言語用ヘルパを別に用意するのがいいと思うけど、
やっつけで良いなら、/Faでアセンブラリスト取得して確認しとけばいいんじゃない?
たぶんポインタにするだけだとは思うけど。
>>99 既存の C++ の DLL があって変更できないってことなら、
参照よりもマングル名に注意しとけ
106 :
99 :2007/08/17(金) 14:40:45
みんなありがとう。状況としては
>>105 の通り。
で、名前については序数でGetProcAddressするんで問題は無かった。
逆汗で見てみたらどうやらポインタでいいっぽいね。
初めからそうしとけバーカ
美少女中学生のマングリ!(*´Д`)
__stdcall で作られたっぽい DLL を __cdecl で呼び出すにはどうすればよいですか?
サンク
>>110 まずそういう質問が何故出てくるのか書いたほうがいいよ。
もちろん銀行から勝手にお金を引き出して大金持ちになるためです
プログラム側からポップアップメニューの○番目のアイテムを選択する (クリックやEnterを押した状態ではない)にはどうしたらよいでしょうか?
ファイルのコピーにかかわるAPIて CopyFile CopyFileEx SHFileOperation の他にありますか? 他にありましたら教えてください VistaのエクスプローラーをAPIをフックして、コピー元ファイル名とコピー先ファイル名が取得したいんです XP版エクスプローラーにはCopyFileExがリンクされていたのですが、Vista版にはリンクされていません NtCopyFileみたいなカーネル系関数でもあるのでしょうか? Vista版CopyFileでもあるのでしょうか? 教えてください。お願いします
>>115 セキュリティ監査をファイルアクセスに対して有効にして
イベントログのポーリングしながら自前で記録するのがいいよ
WMI+WSHとかでぐぐってみそ
今更なんだがboolは4バイトのコンパイラもあってだな
てか32bitコンパイラは大抵sizeof(bool)は4じゃね?
120 :
デフォルトの名無しさん :2007/08/18(土) 11:57:38
全然詳しくないので質問させてください。 自称「マネージメントもできる」派遣クンが 「Windowsが僕のプログラムどおりに動かない原因を調べるのは僕の仕事ではありません。」 と言っています。 彼のWindowsプログラムが動かないのを調べるのは誰の仕事なのでしょうか?
>>119 VCは6以降sizeof(bool)==1
あら?bcc32 5.6.4も1だったわ
123 :
デフォルトの名無しさん :2007/08/18(土) 12:29:30
gcc 4.1.2も1
BOOLは?
typedef int BOOL;
126 :
デフォルトの名無しさん :2007/08/18(土) 16:52:53
最近のWindowsのマイピクチャフォルダは エクスプローラで画像のサムネイルが表示できたりしますよね この様に特定のフォルダの挙動をカスタマイズするにはどうしたらいいんでしょうか サイトや書籍があれば教えてください 検索したいのですが、こういったテクノロジーの名前がわからなくて・・・
127 :
デフォルトの名無しさん :2007/08/18(土) 16:58:20
folder.httをいじる
ここで聞いていいのかな? 昔、Visual Studio 6.0のサンプルが内包してある、 HTMLヘルプ(?)みたいなものがMSサイトからダウンロードできたのですが、 今でもあるんでしょうか? 探しても見つからないので・・・
今でもありますよ
130 :
128 :2007/08/18(土) 22:17:00
>>129 大変申し訳ないですが、そのURLを教えていただけませんか?
WinXP VisalC++EE PSDKありの環境で Win32APIを使ったプログラム作ったのですが98SEの環境で起動できませんでした。 起動しても無反応だったのですが、なぜでしょうか。XPでは動きました。
Unicodeでビルドしてるんじゃね?
136 :
115 :2007/08/18(土) 22:53:11
>>116 >>117 まだ検証できてないんですが、Windowsデスクトップサーチが怪しそうです
ファイルをペーストした瞬間、デスクトップサーチの管理してる、プロセスが走りはじめました
そのプロセスにAPIフックをかけたらCopyFileExがいました
とりあえずそこまでです。
エクスプローラーがデスクトップサーチAPIをコールして、ファイルコピーしてるんじゃないかと予想してます
しかし、APISPY系のツールでチェックしてもCopyFileExがコールされた気配がない…
デバッガ使えよカス
優しす
139 :
134 :2007/08/18(土) 23:24:17
>>135 文字列は_T("文字列")で表しているんだけど、プロパティで文字セットを
設定なしかマルチバイト文字セットを使用するにしないとだめなのかな。
98SEが今手元にないから確かめられないので・・
……_Tマクロの意味理解してないだろ
143 :
134 :2007/08/18(土) 23:51:14
>>141 2でしたね。_Tマクロはあまり関係ないんでしょうか。
>>134 WindowsAPI は 9X系/NT系両対応と、NT系のみ対応の関数に分かれてるからな。
NT系にしかない関数をプログラム初期化なんかに使われてたら、エラーが起きて無反応っていうのはありそう。
>>143 どっかで_UNICODEが定義されているんや。
_MBCSを定義
というか、今更98SE用に何のプログラムを書いてるんだ? スタンドアロンのマシン用か?
ここはサクッと98SEにMSLUぶち込むというのは‥‥
149 :
134 :2007/08/19(日) 00:33:52
>>147 別に98SE用というわけでもないです。できるだけいろんな環境で動くものが作れたらと思いまして。
>>148 98SEは使わせてもらっただけで自分のPCじゃないので無理ですね・・。
また試せるときがくるまで調べてみることにします。ありがとうございました。
ガムバレ その頃には大きくなってるといいな
>>146 VC8はデフォルトで_UNICODEが定義されてるから
エラーを回避するためにとりあえず_T()で囲んだんじゃね?
>>149 MSLUはアプリに同梱できるしインストールする必要もない
>>136 ちょっと試してみたら、たしかにvistaでもCopyFileはCopyFileExで実装されてるけど
explorer.exe はこの辺を使ってないんだな。というかDelete/Copy/MoveFileあたりもインポートして無いのな
連休終わりそうで憂鬱だからあんまり調べてないけど
憂鬱だなんてファイト♪
154 :
デフォルトの名無しさん :2007/08/19(日) 01:07:11
I create an application only using Win32API with VC++ 2005 Express Edition and it's Platform SDK by free download. It goes well on my PC, but is not work on another PC. Would you teach me how about this?
NO!
I can nat speak Engrish. You is a big fool man! ha ha ha!!
HA・HA・HA!!
>>152 UACのダイアログに出てくるCLSID
{3ad05575-8857-4850-9277-11b85bdb8e09}のコンポーネントが実行してるんじゃね
>>161 本題とは違うが、それOSのバージョン判定式間違ってるよな。
>>158 どうやって、そのIDを取得したんでしょうか?
こちらは、デスクトップtoデスクトップでファイルをコピーして、タスクマネージャーなんかを観察したり、APIフックしてる程度です。権限に絡むことはしてないので、UACがでてきた理由がわかりません
よろしくお願いします
>>163 UACのダイアログで「詳細」クリックしただけ
右クリックメニューの項目の矩形を GetMenuItemRect で取得しています。 メニューの項目数が多くて画面に収まらなくなったとき ▲ 項目1 項目2 ・・・ 項目n ▼ のように表示されますが、この▼をクリックして下に隠れている項目を見ると、 GetMenuItemRect の結果が正しくなくなります。 何とかなりませんか?
XPのみの話でもいいんですが、停止できないサービスってどう実装しているんでしょうか? EventLogやアンチウィルスソフトのサービスです。
>>166 うろ覚えだけど、サービスの停止はStopService()をサービス内から呼び出すことで実現する。
外部からのサービス停止要求またはシャットダウンイベントが飛んできた場合も
要求に反応してStopService()を呼び出すだけ。
なので、サービス停止要求を単純に無視しておけば、外部から制御できないサービスに
なるんじゃないかな。
>>165 よーわからんけどUnionRect使えばいいんじゃね?
169 :
167 :2007/08/20(月) 10:07:29
>>166 ほんとうにうろ覚えだった...orz
MSDNにはStopServiceなんてAPIなかった。
ということは、たぶん自作の関数だったんだろう。
まあ基本的な流れは変わらなくて、サービスは終了待機を自分で行っているので、
終了のAPIを呼ぶんじゃなくて、外部からのイベントに反応して自分の終了処理を
走らせればよい。逆にその部分を実装しなければ、終了しない。
...たぶん
SERVICE_ACCEPT_STOP
>>168 そうではなくてですね・・・
メニュー項目のスクリーン座標が欲しいのですよ。
今は GetMenuItemRect を使っているのですが、これだとうまく行かないんです。
というのは
>>165 のようになったとき、ユーザーが▼をクリックしてメニューをスクロールしても
GetMenuItemRect がくれる座標は、スクロールする前の座標のままなのです。
>>171 OwnerDrawとかやろうとしてるの?
何をしたいのか目的がよくわからんなぁ
>>172 ポップアップヒント? を出したいのです。
で、ヒントを表示する位置を決めるために、メニュー項目の座標が欲しいのです。
メニュー項目にツールチップかぁ・・・むずいね
>>174 そういうのです。
ボタンとか CreateWindow で作る奴は TBSTYLE_TOOLTIPS でできるらしいですが
これをメニューでやりたいのです。
メニューだとマウスじゃなくてキーボードの操作でも選択できるので
マウスカーソルの下に表示するわけにも行かないのです。
GetMenuItemRectは多分OwnerDraw用だと思うし使えないんじゃないかなぁ。 表示中のメニュー項目を調べる方法はありそうだけどね
>>176 キーボードの操作にも対応したいなら、ツールチップじゃなくてステータスバーにしたら?
>>178 そうですね…。やっぱりそうしようかなぁ
GetMenuItemRectが正しい座標を返してくれる間は問題無く動くまでプログラムは完成しているんです。
えぇ最初から書き直しますとも。
ありがとうございました。
メニューがスクロールしようと何しようと、 その外形を戻す GetMenuItemRect の戻す座標には なんの関係もないし、「スクロールする前の座標」を戻すことの どこが誤りなんだか解らんのだが。
どうしても最初から書き直したいんだろ
>>180 外形じゃなくて項目1個1個の座標が返ってきますよ?
まあ全体も取れるけどな それよりメニューのスクロール関連は想定外なのか、いろいろ不備がある気はする
まあ公開物だけではな
185 :
デフォルトの名無しさん :2007/08/20(月) 16:52:52
>>184 知らないならレスしないで下さい!ウザいだけです!
186 :
デフォルトの名無しさん :2007/08/20(月) 16:56:53
>>185 知らないならレスしないで下さい!ウザいだけです!
知らない何も忘れてしまおう
日本語でおk
>>185 それじゃ知らなくても適切なヒントを挙げる人も涙目になるぞ
知らない人間のレスがウザいんじゃなく
知らないくせに上からモノを言うような口調がウザいんじゃまいか?
191 :
185 :2007/08/20(月) 18:16:54
そうです ごめんなさい 僕が悪かったです
自分が知らないからって
>>185 みたいな低脳レスの方がウザいけどな
193 :
デフォルトの名無しさん :2007/08/20(月) 18:22:08
>>192 低脳なくせにレスしないでください!ウザいだけです!
( ゚Д゚)⊃旦 マァチャノメヤ
埋め
∧_∧ ( ´∀`) まぁ、茶でも飲んでくれ ( )シャー | つ⌒ヽ。 (__)_) 且~
ありがとう
質問です。 まず、環境はWinXP+VC8EEです。 それで、SendInputでメニューバーからメニューを選択したいのですが、 最初のメニューはたたけるのに、選択したアイテムの反応が無くメニューだけが消えるというような感じになりました。 たとえば、タスクバーのアプリを束ねたバーをたたくと一覧のメニューがでますが、 その中のアイテムを選ぶことができません。 どうすればいいかご教授願えませんでしょうか。 クリックするためのソースは以下のようになっています。 if (JI.wButtons == JOY_BUTTON4){//ボタン4が押された if(ClickFlag == false){ ClickFlag=true; hwnd = WindowFromPoint(pt);//ptはマウスの座標。 SetForegroundWindow(hwnd); MOUSEINPUT MI = {0,0,0,MOUSEEVENTF_LEFTDOWN,0,NULL}; INPUT i;i.type=INPUT_MOUSE;i.mi=MI; SendInput(1,&i,sizeof(INPUT)); printf("クリックしてるはず!![%d,%d]\n",pt.x,pt.y); } }else{ if(ClickFlag ==true){ ClickFlag=false; MOUSEINPUT MI = {0,0,0,MOUSEEVENTF_LEFTUP,0,NULL}; INPUT i;i.type=INPUT_MOUSE;i.mi=MI; SendInput(1,&i,sizeof(INPUT)); printf("クリックやめてるはず!!\n"); } }
>>198 MOUSEEVENTF_LEFTDOWNとMOUSEEVENTF_LEFTUPを連続する。
SendInputの第一引数は2にする
結局、VistaエクスプローラーのCopyFileExをフックできんかった、ダメ人間だ、負け組だorz Windows デスクトップサーチの2つのプロセスにCopyFileExはいた。 APIフックかけて、フック関数内でOutputDebugStringしたが、無反応… あ〜わからん、ペーストされた瞬間、PSAPI.DLLロードライブラリされてるけど関係なさそう だれか助けて(´・ω・`)あばばばば 明日はエクスプローラープロセスでReadFile、WriteFileしてるか調べてみるか…チラシの裏でスマソニック
改行ウザイ "チラシの裏"に書いてろ
_T("ほげ") と L("ほげ") の違いを教えてください
>L("ほげ") そんなもんAPIと無関係どころか、見たことありません。
まあまあ、これ見て勉強しな
>>203 #define __T(x) L ## x
#define _TEXT(x) __T(x)
つーか、_T("ほげ") がコンパイルできるんなら、
ヘッダはあるんだからこれぐらい自分で調べる
癖つけないと辛いぞ。
_T("ほげ") と L"ほげ" は全く等価なんですね!!! ありがとうございました!!!!!
ヒント 例えば、 #include <tchar.h> #include <clocale> #include <cstdio> void _tmain(void){ _tsetlocale(LC_ALL, _T("jpn")); _tprintf(_T("わたしは相田紗月")); } が、#define _MBCSだと #include <tchar.h> #include <clocale> #include <cstdio> void main(void){ setlocale(LC_ALL, "jpn"); printf("わたしは相田紗月"); } で、#define _UNICODEだと #include <tchar.h> #include <clocale> #include <cstdio> void wmain(void){ _wsetlocale(LC_ALL, L"jpn"); wprintf(L"わたしは相田紗月"); } になる。
_MBCSなんていまだに使うケースなんてあるの?
>>208 >わたしは相田紗月
・・・・・・えーっと
ワッフルワッフル?!
>>209 >_MBCSなんていまだに使うケースなんてあるの?
んなこと言ったら、_TEXTを使う必要ないんじゃね?
>>212 お菓子系なんて詳しいオマエなんてキモい
m9(^Д^)プギャー
今、ググった・・・・ これは、けしからん!
スレ違いだ死ね
知らなかった・・・ こういう言葉もあるんだな
リストビューコントロールで、長くて見えない項目にマウスカーソルを合わせると ツールチップみたいなので項目全体を補完表示してくれるのを見かけるのですが、 その方法教えてください。
LVS_EX_INFOTIP と LVS_EX_LABELTIP
>>209 たまにはまったくUNICODEに対応する動きのないビジュアルコンポーネントライブラリっていうフレームワークのことも思い出してやってください/ ,' 3 `ヽーっ
VCLってパスカルのソースが付いているんじゃなかったか?
,へ、 /^i | \〉`ヽ-―ー--< 〈\ | 7 , -- 、, --- 、 ヽ / / i ヽ ヽ | ( 6 6 ) | / 彡 ▼ ミミ 、 く彡彡 _/\_ ミミミ ヽ `< ミミ彳ヘ > ___/ \ / 7 \ | / \ | / \ ヽ / ヽ ヽ / ヽ ; / ヽ ゝ"~} ヽ / ノ,,_-ー-、___ノ ヽ k乃ノγ | / | | / | / _\ /^| (__\_ /⌒;;i  ̄ー、__ _____,/⌒ヽ/ _____/::⌒;;ヽ,/ /::::::::`ヽ `ヽ:::`ヽ `ヽ::::/ (::::::::::::::::::::) |:::::::| ノ/ \:::::::::::ノ ノ;;;;;;/ / ー--‐ー ' ""~
それはラスカル
226 :
デフォルトの名無しさん :2007/08/21(火) 19:12:32
>>222-224 真面目にあれしてぼけて突っ込みの三段あれかよ
ちょっと(´,_ゝ`)プッってなっちまったぜ
日本語でおk
Vistaで動くUnicodeアプリを作ってます。 Officeに入ってる「HGS明朝B」というフォントで、たとえば50ptの「フ」の横幅を取得すると、 GetTextExtentPoint32 → 45 GetCharABCWidths(ABC合計) → 50 GetGlyphOutline(gmCellIncX) → 50 となりますが、エディットコントロール等で見ると横幅が67pxくらいあります。 つまり正しい値が取れてこれません。 ちなみにMS P明朝などでは同じことをやっても正しい値が取れます。 なにか思い当たる事がある人いないでしょうか?
うちの母親はなんでも「あれ」で済ますので困る
>>231 そのアドレスと言うのはメモリの事
君が思ってるアドレスはパスとかディレクトリとか言うもの
>>231 アドレスの指す内容は文字列?
文字列の内容でなくて、文字列の渡し方に問題があるのかもね。
ワロタ 確かにアドレスバーとか言うもんな
237 :
233 :2007/08/21(火) 21:43:47
238 :
231 :2007/08/21(火) 21:54:38
は、ハズカシイ・・・ 更にハズカシイついでに 「NULL で終わる文字列へのポインタ」 って、VB.NETではどのように指定すればいいのでしょうか? メモリのアドレスって考えたことなかったです。
まあIE?に入れた時点でメモリアドレスじゃないのはわかるだろ
>>238 String を渡せばよろしくやってくれる。
が、DWORD に Long を当てたりしたら駄目だぞ。
MSDN で「アンマネージ コードとの相互運用」をじっくり熟読。
241 :
231 :2007/08/21(火) 22:22:01
>>240 Stringを渡せばよろしくやってくれるんですか・・・?
Dim NetR As NETRESOURCE
Dim ErrInfo As Long
Dim strTarget As String
Dim buffer As String
Dim bufferlen As Long
strTarget = "\\192.168.1.1\hoge"
NetR.dwType = RESOURCETYPE_DISK
NetR.lpLocalName = vbNullString
NetR.lpRemoteName = strTarget
buffer = Space(64)
bufferlen = Len(buffer)
ErrInfo = WNetUseConnection(0, NetR, "password", "user@domain", CONNECT_INTERACTIVE Or CONNECT_POMPT, buffer, bufferlen, success)
これで ErrInfo = 487 になるんです。
どの文字列がおかしいんでしょうか?
> DWORD に Long を当てたりしたら駄目だぞ。
これって WNetUseConnection の dwFlags のことですか?
Longで定義してるんですけど・・・
VB6/VBA と VB.NET 以降じゃぜんぜん別物になった。
当然 Declare 宣言や構造体定義も流用できない部分が大きい。
ので
>>240
こんなスレで質問していないで、早く試行錯誤でバグ回避策を見つける仕事に戻るんだ! 何?やる気がありません?なら辞めろや、他の派遣雇うからw
試行錯誤のレベルじゃないな
>>241 とりあえず2番目はLPNETRESOURCEでケツ2つはLPDWORDだけど
246 :
231 :2007/08/21(火) 22:56:11
会社をたたむのかとおもったwプログラミングの仕事も大変ね 解決策みつかんなかったら何日も進まないじゃん そういうときってどうすんだぜ?
APIというわけじゃないんですが、パス名やファイル名で使えない文字の 一覧みたいな物ありましたら教えてください。 エクスプローラーの名前の変更で\とかを入力すると、 使えない文字のバルーン表示が出ますが、 \ / : ? " < > | ほんとにこれだけでしょうか?
「表」 とかがディレクトリ名の末尾に来ると死ぬな
>>250 阿呆なプログラムはね。
例えば某芝の初期のmp3プレーヤとか。
PathGetCharType関数ってのもあったね
254 :
231 :2007/08/22(水) 10:46:45
おかげさまでなんとかできました。 従来のLong型と.Netの型をちゃんと識別しないといけないですね。 結果、Logn型で定義していたものをIntegerで定義しなおして、加えて細かな調整をしたら成功しました。 細かな調整はかなりの試行錯誤でした(汗 Private Declare FUnction WNetUseConnection Lib "mpr.dll" Alias "WNetUseConnectionA" ( _ hwndOwner As Integer, lpNetResource As NETRESOURCE, lpUsername As String, lpPassword As String, _ dwFlags As Integer, lpAccessName As String, lpBufferSize As Integer, lpResult As Integer) _ As Integer Dim NetR As NETRESOURCE Dim ErrInfo As Integer 'Long Dim strTarget As String Dim buffer As String Dim bufferlen As Integer 'Long strTarget = "\\192.168.1.1\hoge" NetR.dwType = RESOURCETYPE_DISK NetR.lpLocalName = vbNullString NetR.lpRemoteName = strTarget NetR.lpProvider = vbNullString buffer = Space(64) bufferlen = Len(buffer) ErrInfo = WNetUseConnection(0, NetR, "password", "user@domain", CONNECT_REDIRECT, buffer, bufferlen, success) いろいろアドバイスをくださった皆様に多謝です。
255 :
デフォルトの名無しさん :2007/08/22(水) 11:12:47
>>250 ダメ文字含むフォルダじゃ起動できないエロゲの体験版があったな。
製品版は、ダメ文字含むフォルダにインスコできないからノープロブレムだが。
>>251 >>255 ,.――――-、
ヽ / ̄ ̄ ̄`ヽ、 勇者トンファーパーマン惨状
| | (・)。(・)|
| |@_,.--、_,> 俺が着たからにはもう色々と駄目だ
ヽヽ___ノ
/:::::::::::::::::l /77
/::::::::::i:i:::::::i,../ / |
l:::/::::::::i:i:::、:::/ / |
l;;ノ:::::::::::::::l l;.,.,.! |
/::::::::::::::::l/ / 冂
/:::::::;へ:::::::l~ |ヌ|
/:::::/´ ヽ:::l .|ヌ|
.〔:::::l l:::l 凵
ヽ;;;> \;;>
257 :
デフォルトの名無しさん :2007/08/22(水) 12:48:27
∧_∧ トンファーキ〜ック! _( ´Д`) / ) ドゴォォォ _ / ∩ / ,イ 、 ノ/ ∧ ∧―= ̄ `ヽ, _ | | / / | ( 〈 ∵. ・( 〈__ > ゛ 、_ | | | | ヽ ー=- ̄ ̄=_、 (/ , ´ノ \ | | | | `iー__=―_ ;, / / / | |ニ(!、) =_二__ ̄_=;, / / ,' ∪ / / / /| | / / !、_/ / 〉 / _/ |_/ ヽ、_ヽ
258 :
デフォルトの名無しさん :2007/08/22(水) 14:24:06
知っているのに〜わざと〜間違える〜
65点の人が好き 好き 好き〜♪
>>255 エロゲの話なんてわざわざしないでください!
>>262 欲しいなら素直に欲しいと言ってください!
265 :
デフォルトの名無しさん :2007/08/22(水) 18:09:17
うるさいうるさいうるさい
うるさいからレスしないでください!
質問です デュアルディスプレイの環境で GetSystemMetrics(SM_CXSCREEN) が返す数値はメインディスプレイの解像度だけなのでしょうか? それとも、アプリケーションウインドウのある方の解像度が得られるのでしょうか? 当方にデュアルディスプレイ環境が無くて試せない状況です どなたか、教えて頂けないでしょうか?
SM_CXSCREENはプライマリモニタのほうな。 SM_CXVIRTUALSCREEN は両方含む。
>>269 いいかげんなことを言わないでください!
派遣の奴は失業したのかw
>>269 GetSystemMetrics の返り値は int なんですが、どのような形式で格納されているのでしょうか?
例えば
モニタA(メイン) 1280x1024
モニタB(サブ) 1024x768
の場合だと
GetSystemMetrics(SM_CXVIRTUALSCREEN)
の返り値はどれになりますか?
1.(1280<<16)+1024
2.1280+(1024<<16)
3.その他
MSDNの説明どうりなら 横つなぎだと1280 縦つなぎだと1280+1024
>>273 訂正
縦つなぎだと1280
横つなぎだと1280+1024
>>273 訂正orz
MSDNの説明どうりなら→MSDNの説明どおりなら
>>272 縦方向は SM_CYVIRTUALSCREEN というのが別にある
誰も横方向しかないなんて言ってない
278 :
276 :2007/08/22(水) 19:43:25
ごめ、かんちがい
279 :
228 :2007/08/22(水) 20:48:31
誰も教えてくれないのでMSのサイトで質問しました。 もうこちらでは答えなくて結構です(マルチポストになるので)
MSのサイトで質問したけど誰も教えてくれませんでした。 もうこちらでは答えなくて結構です(マルチポストですので)とMSのサイトに書き込みました。
>>279 ああすまん、忘れてた。
じゃあMSのサイトの方で回答しようか?
282 :
228 :2007/08/22(水) 21:02:57
もうこちらでは答えなくてもいいと言っているだろ!! マルチポストになってしまったじゃないか!!!!!!
283 :
281 :2007/08/22(水) 21:04:56
だからここで答えないでMSの方で答えるつってんだろゴミ
レスもスンナうざい
誰も知らないなんて言ってない
知ってるからレスしてんだぜ?
JavaのgetFontWidthも50になるなぁ
前項目を見たのですが インクロードできません
テラカオスww
UISpy.exeってVISTAじゃないと使えないの? XPにWindowsSDK入れてもインスコされないんだが
>>293 俺、Windows XP HomeにVisual Studio 2005 + Windows SDKで入ったよ。
>>228 ・pt(ポイント)とpx(ピクセル)の違い
・「論理単位」と「設計単位」の違い
・gmBlackBoxXとgmCellIncXの違い
その辺をちゃんと整理してから、もう一度考えてみろ。
296 :
228 :2007/08/23(木) 01:47:53
もうこちらでは答えなくて結構です(マルチポストですので)
>>228 が他に移動するのは勝手だけど、
一度話をふったんだから、うっかり反応して考えちゃった人が、
せっかく考えたことをみんなと共有したいぜ!!
って思ったからって別に悪いことじゃないし、それを書き込むのも勝手でしょ。
他の人だって一度質問を見てしまった以上、回答が気になる人も
いるだろうから、その場合
>>228 に勝手に拒否されてもうれしくないと思う。
298 :
一同 :2007/08/23(木) 03:22:21
拒否します!
賛成多数で知りたいのは
>>297 のみとなりました。
(σ・∀・)σ300ゲッツ!!
(σ・∀・)σ301ゲッツ!!
>>267 #include<windows.h>
#include<stdio.h>
BOOL CALLBACK print_resolution(HMONITOR hmon, HDC hdc, LPRECT prect, LPARAM dummy){
printf("(%ld,%ld)-(%ld,%ld)\n", prect->left, prect->top, prect->right, prect->bottom);
return TRUE;
}
int main(void){
EnumDisplayMonitors(NULL, NULL, print_resolution, 0);
return 0;
}
303 :
デフォルトの名無しさん :2007/08/23(木) 10:08:44
VB.NETでReadProcessMemoryを使って他のプロセスのメモリを 参照したいのですが、何処か参考になるサイトはないでしょうか。 ググってみたものの、宣言からしてBooleanだったりIntegerだったり 使い方も分からなかったりで確信に辿り着けません…。 宜しくお願いします。
他のプロセスはメモリ空間が別なんだが。 DLL作って、他のプロセスで動かさないとメモリは見えないよ。
ってReadProcessMemoryをAdminで使うのか。 どう失敗すんの?
307 :
デフォルトの名無しさん :2007/08/23(木) 11:09:44
>>306 そうみたいです。ただ、ググってもCの場合の参考が多くVB.netで
書かれている物が無いため使い方すら分からないという所です…orz
ただ、目的のもののアドレスがちょこちょこ変わってしまうことに
気づいたため自分には到底無理っぽい気がしてきました(苦笑
一応、↓は参考になったんですが上手く取得できず。
http://www.suvaru.com/pg/sampl/Sample100_60.html そもそもFindWindowで取得したハンドルとGetWindowThreadProcessIdで
取得したハンドルの違いも分からない…orz
>>308 FindWindowで取得するのはウィンドウのハンドル
GetWindowThreadProcessIdで取得できるのはウィンドウを作成したプロセスのID
プロセスのIDからハンドルへの変換はさらに
OpenProcessを使って取得(PROCESS_VM_READ必要)
VB.NETについては知らない
それレベルでReadProcessMemoryとか聞いてくるのはどうせネトゲのチートとかだからほっとけ
ここは今も昔もネトゲチート質問掲示板なのです
312 :
デフォルトの名無しさん :2007/08/23(木) 17:44:05
>>310 知らないならレスしないでください!ウザイだけです!
かつて作ったことのある身からいうと 技術的な勉強には良いと思う
テラカオスww
>>302 ありがとうございます
これと GetCursorPos の組み合わせで
マウスカーソルがどのディスプレイ上にあるか判定できます
マルチディスプレイ環境が無いので
正常に動くかどうかすぐに確認は出来ませんが…
>>316 目的がモニタの判定なら
MonitorFromPoint + GetMonitorInfo
でもいいんじゃないかな。
ファイルを他のプログラムが開いていているとき、 ファイル名の変更はできることもあればできないこともあるようです。 (開いているプログラムによる) Windowsでのファイルの共有モードは 読み込み・書き込み・削除の3種類だと思っていたのですが、 ファイル名変更の許可はこれとは別のフラグなのでしょうか?
はい
ファイル名変更の許可がどのように決まるか 教えていただけませんか?
>>319 多くのアプリではファイルを開くとき、オープンして全体を読み込んだらすぐにクローズする。
このタイプのアプリではデータの編集中は実際にはファイルはオープンされていないため、
結果的にファイル名の変更も可能になるわけだが、権限の問題とは特に関係はない。
実行中のexeファイルの名前も変更できたりするけどな。
ハンドルをクローズする前であってもファイル名を変更 できる場合もある(例えば cygwin gcc で fopen したとき) ので、その条件の違いを知りたいのですが。
共有モードの削除アクセス可能(FILE_SHARE_DELETE)の指定があれば、 オープン中でもリネームできると思うけど、これは求めている答えとは違うかな。
>>326 NTFSではCreateFile()時にFILE_SHARE_DELETEを指定すれば、Unix流に
オープンファイルを削除したりリネームしたり出来る。
が、それはデフォルトでもなんでもないので、指定されていなければ
そういう挙動にはならない。
cygwinはUnixのセマンティクスを真似るために、FILE_SHARE_DELETEを
指定しているから、そうできるわけだ。
msvcrtあたりだと、そうはならんと思う。
>Windowsでのファイルの共有モードは >読み込み・書き込み・削除の3種類だと思っていたのですが、 ソースは?
CreateFileの第3パラメタに指定できる値の組み合わせがこの3種類だからじゃね?
RichTextBoxで行間を設定することはできますか? PARAFORMAT2でいぢくってるんだがどうもうまくいかん。 目的は行間を2ptまで縮めることです
fopenのファイル名をUTF-8で渡したいのですが、 _setmbcpではうまくいかないようです。 CP932にマップできない文字があるのでUnicodeで渡したいの ですが、なにか方法はないでしょうか。 なおfopenを書き換えることはできません。libcurlに埋め込まれて いるので。
fopenを書き換えることはできます。libcurlに埋め込まれていようが。
うまくいかないってのは、何がうまくいかないのかな。 setlocale とかの話?
そうです。
>>334 リンクされるCランタイムライブラリを別のものに
置き換えるのですか? それはちょっと。
>>335 具体的には、UTF-8のconst char*をfopenの第一引数に渡すと
NULLが帰ってきます。
まさか。こっちがそれはちょっと。
そりゃfopen置き換えしかねえなあ
では既存のファイルに別名をつけて (シンボリックリンク? ジャンクション?) ASCIIで済むようにしたいところですが、 XPや2000やFAT32で動く方法が見つかりません。 どうしたものでしょう。
_wfopen Unicode→ANSIリネーム fopen 逆リネーム
>>341 ・ファイルへの書き込み権限がない
・強制終了
などのケースを正しく取り扱える気がしません。
どうもlibcurlが意図的にWin32を苛めてる気がしてきた。
FILE*を渡せてもよさそうなもんなのに、
できない設計になってるし。
↓こんな感じでウィンドウハンドルからプロセスIDが取得できると 思ったら、スレッドIDの方が取得されます。 プロセスIDを取得するためにはどのようにすればいいのでしょうか。 Dim ProcessID As Integer Dim lpdwProcessID As Integer ProcessID = GetWindowThreadProcessId(hwnd, lpdwProcessID) Debug.Print(CStr(ProcessID))
それのProcessIDにはスレッドIDが、lpdwProcessIDにはプロセスIDが入ってるよ
ってVBよくしらんが参照渡しでな
347 :
343 :2007/08/24(金) 14:06:17
>>344-345 あぁぁぁ。Debug.PrintでlpdwProcessIDを見ても0しか入らなかった
ので、悩みまくっていたんですが、APIの宣言でlpdwProcessIDを
ByRefにしたらうまく取れました。有り難う御座いました。
348 :
デフォルトの名無しさん :2007/08/24(金) 15:45:36
こんにちは はじめまして。 とあるタイミングで 起動中のexcelのテキストだけ抜き出したいのですが、 どうすればよいでしょうか? 使えるのはC言語でWin32APIを利用してできないかな、と。 ウィンドウハンドルを取ってきてSendMessageを送っても 文字列が取れなくて。。。 もしくはTextOutなどにフックをかけて取得しようかなと 考えたのですが、うまく引っかからなくてどうにも・・・。
どの部分のテキストだよ COM使えばできるかもってCか・・・
VBAマクロ使う
COMってなんですか?
VBAマクロの縁の下の力持ち
バルキリーもあったほうがいいですかね?
>>333 ショートファイル名に変換してもだめかな?
既存ファイルの読み込みならUTF-8ファイル名(ロングファイル名)から
ショートファイル名を取得してショート名でファイルを開く。
ファイルの新規作成時は事前にCreateFileWで空ファイルを先に作ってから
そのショートファイル名を取得して既存のfopenに渡す。
無駄だろう。 非ASCII文字が含まれることに変わりはないのだから。
>>351 VBでいうところのCreateObjectのようなことをして
ActiveXなどのオブジェクトを扱う手順。かな
>>355 非ASCIIは問題なかろ。libcurl が内部に fopen 抱えてんならまだしも。
>>340 FAT32はファイルシステムに別名付ける機能がないからどうにもならない
libcurl内で直接fopenを使ってるって話で、fopenの実装を抱えているわけではないだろ
ビルド方法による
パス名の比較について意見を伺いたいのですが、 "C:\ETC\NETWORK\" "C:\ETC\NETWORK2\" この2つのパス名を文字列として(strcmpなどで)比較したら、 "C:\ETC\NETWORK2\" "C:\ETC\NETWORK\" '2'より'\\'の文字コードの方が大きいのでこの順番になりますよね? でも、これは意図とは逆で、 "C:\ETC\NETWORK\" "C:\ETC\NETWORK2\" 期待するのはこの順なのですが、 ディレクトリセパレータ'\\'を無視して比較するべきなのでしょうか? でもそうすると、 "C:\ET\CNETWORK\"というディレクトリがあったら "C:\ETC\NETWORK\"と区別できなくなってしまいます。 どうしたら良いでしょうか。
>>362 文字列の最後のディレクトリセパレータだけ '\0' 扱いにすればおk
>>363 おれも最初は末尾のセパレータを取って比較すりゃいいだけじゃん、
とか思ったけど、それじゃ解決しない。
比較する前に一旦、セパレータの文字を0とかの、
文字コードとして一番低い値にしてmemcmpかな?
なるほど
367 :
デフォルトの名無しさん :2007/08/24(金) 23:01:15
>>364 末尾のバックスラ削除で何に問題があるのか問いたい
>>366 それはまた別問題な気がする
>>367 >>362 の最後に書いてあるケース、
C:\ET\CNETWORK\
C:\ETC\NETWORK\
を文字列として昇順にすると
C:\ETC\NETWORK\
C:\ET\CNETWORK\
になるということ。
セパレータごとに分割して前から比較してけばよくね
370 :
362 :2007/08/24(金) 23:10:47
すいません、いらぬ誤解を与えてしまった気がするので、
>362の二重引用符は無視して下さい。(C言語の定数という意味じゃないです)
あと英文字大小や絶対パスや/などの正規化は済んでいるという事にして下さい。
すいません。(純粋にセパレータの扱いについての話がしたいので)
>>364 の仰るように、一旦バッファにコピーして\を全部0に置換して、
バイト列として比較するのが簡単で安全な気がしますね。
371 :
367 :2007/08/24(金) 23:14:43
>>368 そうだねスマンカッタ・・・
吊ってくる
エキゾチック ジャパ〜ン!♪!
ま、
>>369 の言うような方法と、
検索後にチカンしてバイト列で比較する方法
どっちがパフォーマンスが良いかだなぁw
エキゾチック ジャパ〜ン!♪!
チカンって書くと痴漢みたいだ
試しに比較関数書こうとしてみたらめんどくせえ 徹夜明けには厳しいな iskanjiはSJISの2バイト目の0x5c対策ね 採点お願い int path_comp(const void *vl, const void *vr, unsigned n) { unsigned char *l = (unsigned char *)vl; unsigned char *r = (unsigned char *)vr; for (; n--; l++, r++) { int cmp; if (iskanji(*l)) { if (iskanji(*r)) { if ((cmp = *l - *r)) return cmp; l++, r++, n--; if (!n) break; if ((cmp = *l - *r)) return cmp; } else { // 片方が漢字じゃないなら一致しない return *l - *r; } } else if (iskanji(*r)) { //逆 return *l - *r; } else { int lc = (*l == '\\') ? 0 : *l; int rc = (*r == '\\') ? 0 : *r; if ((cmp = lc - rc)) return cmp; } } return 0; // 完全一致 あとは長い方がうしろ }
て言うかスレを考えろ喪前ら なんでWindowsは標準のパス比較API用意してないんだろ
なるほど、こうやってUTF-16なパス名に対応してない糞アプリが 出来上がっていくわけだな
そもそもExplorerが糞アプリの代表な訳で
糞糞に言われたくない罠w
>>376 おいおいいまだに iskanji か。。。。もう DOS の時代は終わっているんだよ。
いや、ウニコードするなら簡単だろうし おれはANSI一本で行くよ 多分合ってるよね もう寝る
PIDLにしてIShellFolder.CompareIDsはどう?
>>376 ディレクトリ同士の比較という意図なら大丈夫みたいですが、
ファイル名が混ざると変なことになりました。
C:\ETC\〜
C:\ETCETERA.TXT
という感じで。
使い方に注意が必要ですね。
でも大変参考になりました。
ありがとうございます。
>>379 Explorerは当然のようにUTF-16対応してるが。
糞糞に言っても理解できるわけねぇだろw
ちなみにNT系限定だがGetFullPathNameとGetLongPathNameで ほとんどの正規化はできる
389 :
デフォルトの名無しさん :2007/08/25(土) 15:07:34
CreateFileMapping() 既存の判定はCreateFileMapping()の戻り値では無理ですよね? 既存判定は普通はどのようにやるのですか?
392 :
デフォルトの名無しさん :2007/08/25(土) 15:19:34
>>390 バカ発見
>>391 だからそれ見ながら質問したこどぐらい分かれよ。バカが
もう1個質問。
CreateFileMapping() でINVALID_HANDLE_VALUEでメモリ確保した場合、
0埋めされたメモリアドレスが返される仕様ですか?
日本語でおk
>>392 日本語も読めないなら取り敢えず人間やめておいたら?
--
指定したファイルマッピングオブジェクトが既に存在していた場合は、
既存のファイルマッピングオブジェクトのハンドルが返ります。
オブジェクトのサイズは、指定したサイズではなく、そのオブジェクトの現在のサイズになります。
また、GetLastError 関数の戻り値は ERROR_ALREADY_EXISTS になります。
--
バカ(392)はスルーしとけよ
396 :
デフォルトの名無しさん :2007/08/25(土) 15:59:31
既存ならGetLastError()がERROR_ALREADY_EXISTSを返すのか。 やっと分かったよ。 それで0埋めの回答はまだなのか?
醜いわぁ
398 :
デフォルトの名無しさん :2007/08/25(土) 16:05:19
HANDLE h = CreateFileMapping(); 既存じゃなかったとしてhに100っていうアドレスが返されたとする。 そのままもっかいh = CreateFileMapping();を実行。 既存だからGetLastError()がERROR_ALREADY_EXISTSを返すけどそれはいいとして hの値はどうなっているか分かるか?
まじチンパン
400 :
デフォルトの名無しさん :2007/08/25(土) 16:09:49
h != "まじチンパン"
ここは翻訳スレではありません。
的確すぎてわろた だめな奴は何をやってもだめ。何を言ってあげてもだめ。 お、おれは違うんだからね! カンちがいし(ry
人類の大半は取り敢えず人間をやめておくべきだ
>>398 もっかいのほうのCreateFileMapping()で200っていうアドレスが返されたとする。
するとhの値は200になっている。
何ていうか 夏だな
407 :
デフォルトの名無しさん :2007/08/25(土) 17:16:58
>>405 何で同じ100が返らないんだろう。
//statAを2回、statBを1回、そしてstatAのCreateFileMapping()の直後に
//GetLastError()がERROR_ALREADY_EXISTSを返すのはなぜですか?
if(statA){
h = CreateFileMapping((HANDLE)INVALID_HANDLE_VALUE, );
pstr = (PSTR)MapViewOfFile(h, FILE_MAP_WRITE, 0, 0, 0);
}else if(statB){
UnmapViewOfFile(pstr);
CloseHandle(h);
}
>>407 同じ領域を指すからといって同じ値が返るわけがない。
410 :
デフォルトの名無しさん :2007/08/25(土) 17:46:42
>>409 あっそう。
まあよほどのことがない限りはCreateFileMapping()は前回返した値に4を足したものを
返すみたいだった。
1回既存になるとその後もずっと既存になってしまう。
アンマップやらクローズハンドルが効いてないみたい。うまくやる方法はあるのだろうけど。
よくこんな奴相手にするな
自演じゃね?
夏か
>>413 アホじゃね?お前以外みんな分かってるし、苦労するのはお前みたいな低脳だけ。
他の人がうっかり書き込むのを待ってんじゃないのカナ?
これは酷い
>>413 いつも思うんだが、なんで低脳ってこんな都合のいい勘違いが出来るんだろうね
419 :
デフォルトの名無しさん :2007/08/25(土) 19:59:16
DLLの中でCreateWindowをして、そのウインドウで色々処理をさせようと思っています。 ですが、CreateWindowがうまくいかなくて困っています。 下記のコードなのですが、CreateWindowでパラメータthisをわたし、WinProc関数でthisを取ってこようと思っているのですが、 このthisポインタの値が取れません。lParamに正体不明の値(thisとは何の関連もない)が入力されていて、結局取れません。 これを取得方法を教えてください。 BOOL CTestCls::Func() { m_hWnd = ::CreateWindowA("test", "test", 0, 0, 0, 10, 10, NULL, NULL, g_hModule, this); return (m_hWnd != NULL); } LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_CREATE: { CTestCls* pTest = (CTestCls*)lParam; } break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } return 0; } 環境 VC++2005、WinXPPro
>>420 LPCREATESTRUCT pCreateStruct = (LPCREATESTRUCT)lParam;
CTestCls* pTest = (CTestCls*)pCreateStruct->lpCreateParams;
C++なら上はreinterpret_cast、下はstatic_castな。 もちろん両方reinterpret_cast派の人間もいるだろうけど。
久々に、大バカを見たw
初心者なんだろうから別にキャストを知らなくても不思議無いけど キャストを知らないレベルでC++でナマAPIでWindowingしようとしてるってのは 驚き
唯のうっかりミスじゃん。つまんね。
心配せんでも君の事じゃないよ。
pascalみたいに内部関数を許してる言語だと引数渡しなんてする必要ないんだよね
ここで有意義なレスを返すオマエラは大丈夫だと思うけど、 キャストの扱い方で符号落ち忘れや、 if判定結果の過信も多い事実。 侮れないんだよな。
そんな難しいこといわれてもわかんないの
そんな簡単なこといわれないとわかんないの
シェルでファイルを削除/リネームしたあとアンドゥできるけど、 アンドゥ可能かどうか取得する方法あったら教えてください。 アンドゥ可能になったときにnotifyするよう登録するapiってないかな
434 :
デフォルトの名無しさん :2007/08/26(日) 16:07:47
夢のようなキャストそれがドリームキャスト
>433 メニューの「編集」の一番上の「戻す」が灰色か黒かでわかる ついでにその「戻す」の上にマウスカーソルを持っていくと ステータスバーに「何をどう戻すのか」が表示される デフォルトでステータスバーOFFだったりするから秘境なんだよな あと途中でエラーになるとそれ以上前に戻れないとかひどすぎ
Vistaで、管理者権限で起動されても、制限ユーザーにダウンさせるAPIを教えてください。
管理者権限はそのようなものではない。 ユーザの機能制限をしたいなら、最初から管理者権限を与えないこと。
IsUserAnAdminとかでチェックして警告とともに自分自身をCreateProcessWithLogonWして死亡とか? 制限ユーザをどうやって指定するのかまではわからんけど
manifestでasInvokerではだめか? 後は437の言うとおりということで。
>>436 そんなことされたら管理者権限の意味ないじゃないか
インストーラが最後にhtmlを開くのに管理者権限じゃまずいって話はあるな
442 :
438 :2007/08/26(日) 22:07:17
>asInvoker そういえばそんなのもあったな orz
443 :
436 :2007/08/26(日) 22:10:57
短時間で多くのレスをありがとうございます。 マニフェストで強制的に権限を降格させる方法がないようなので、APIにあるのかと思ったのですが、 その方法そのものが用意されていないのですね。 昔作ったソフトがProgram Files以下にiniを作るので、管理者権限とそうでないときで、リダイレクトされたりされなかったりするので、 手抜きしようかと思いましたが、諦めます。 失礼しました。
asInvokerは、親プロセスの権限を継承するから、親が管理者権限だと子も管理者権限
だからFirefoxのソース見ろ インストーラやアップデータが最後にFirefoxを起動するとき権限降格やってる
>だからFirefoxのソース見ろ だから、はどこに掛かるんですか?
447 :
デフォルトの名無しさん :2007/08/27(月) 08:33:16
権限とかどうでもいいよ お前らそんな偉いのかよプログラムのスレだぞここは!!!
448 :
348 :2007/08/27(月) 08:53:24
>>380 遅れましたが
ありがとうございます。
がんばってみます。
450 :
デフォルトの名無しさん :2007/08/27(月) 13:56:22
俺インテルはいってるし
>>447 最初から
>>443 のような説明があればともかく、
>>436 の質問だと、意味がないって回答も仕方ないんじゃね。
>>436 "偽装"をキーワードにググると参考になるかも。
2chの過去ログではCreateProcessWithTokenWで成功したという書き込みもある。
ただ、自分自身のプロセスの権限を下げることはできず、
プロセスを分ける必要があるのと(これは自分自身を呼べば済むかも)、
iniファイルを置き場を直接修正した方が簡単だと思うので、手抜きにはならない。
452 :
デフォルトの名無しさん :2007/08/27(月) 15:49:38
>>445 わからないよママン 結局どうやってるんだい?
お前にはムリ、諦めろ。
ぷっスレ違い(腹イテェw)
分かる方いませんか?
お前以外全員
居ません
分かる方いませんか?
居ない
どうして分からないの? アホすぎる 諦めた方がいい
どうして答えが書けないの?
答えが書ける人間は、こんなことで手取り足取り教えるほど物好きでない。 手取り足取り教えるほど物好きな人間は、こんなことわからない。 俺は後者。
Firefoxは、asInvokerなexeから、requiqeAdminなインストーラをCreateProcessするだけ。
CreateProcessはマニフェストを見ないんじゃないのか
>>466 自分は455じゃないけど、445の説明では、
>インストーラやアップデータが最後にFirefoxを起動するとき権限降格やってる
そうなので、CreateProcessされたインストーラ内からFirefox起動するところで特別な
仕掛けがあるんじゃないの?
Vistaだとzip内から移動できるのな。 中からファイルが消えて焦った
xpでもできるべ。
CreateRestrictedToken使えば権限降格できるか?
合っているかどうか以前に、使い方がさっぱり分からんけど
>>466 ITunesもそんな仕組みだったような。
CreateProcessじゃなくてShellExecuteな気がするが
そう思えば、Vistaのエクスプローラーは、管理者or非管理者 どちらのアプリにもファイルをドロップできるよね。 FileVisorはこれができなくて少し不便だ。
474 :
471 :2007/08/28(火) 00:43:21
>>472 どうもありがとう。
結局、プロセスの起動は CreateProcessWithTokenW を使い、
そこに渡す制限トークンはデスクトップのshellのものを使うだけと。
最初、自分が想像してたよりはかなり簡単だった。
ただ、shellからトークン取得するのはかなり行儀がわるそうなので、
きれいに実装するなら、ここはCreateRestrictedTokenを使うべきなのかもね。
VISTA版エクスプローラーのAPI使用履歴をProcmonで監視してるけど、コピーファイル時のリードファイルとライトファイルが検出できん なんかの拍子にコピー時のリードファイル、ライトファイルは数日間、検出できたんだけどな フックはできなくても、フィルタドライバは正常に動作して欲しいんだけど 頭のいい人助けてくれ ベタだけど管理者権限周りは色々試したから
476 :
471 :2007/08/28(火) 00:57:58
自演された気がする…
>>473 VisualStudio2005にはドロップできねえぞ
>>473 VisualStudio2005にはドロップできねえぞ
>>474 CreateRestrictedTokenで作ったトークンだといろいろ問題がある
デスクトップが標準ユーザーでも管理者ユーザーの制限されたトークンに
なってしまうとか
UACが制限されたトークンであることを認識できなくてさらに昇格したくなったとき
ダイアログを出してくれないとか
あと詳しく追求してないけどCOMサーバーとの通信でも何か問題が起きるらしい
アー二回も書いちまった
>>474 > ただ、shellからトークン取得するのはかなり行儀がわるそうなので、
モジラの場合はこれが正しいんじゃないかな
現在のユーザの「デスクトップ権限」が欲しいわけだし
アー二回も書いちまった
>>474 > ただ、shellからトークン取得するのはかなり行儀がわるそうなので、
モジラの場合はこれが正しいんじゃないかな
現在のユーザの「デスクトップ権限」が欲しいわけだし
482 :
471 :2007/08/28(火) 01:15:30
>>479 ,480
指摘されてみれば確かにそのとおり。
別に正式とは関係なく、「firefoxでは」デスクトップの権限で動作するのが
正しいから現在のソースになってるってことね。
恥ずかしい。。。
483 :
471 :2007/08/28(火) 01:31:04
始めからFirefoxのソースを張ってくれたら済んだのになあ
暇人は多いからね、張ってやらないよ。
>>483 貼っても分かってないし、見つけられもしない分際で何言ってんの?
餌をもらえるまで口あけて待ってろよ
やっぱ自演してる人いるんだ… いくつか前のスレで、自己解決しましたと書こうとしたら、俺のレス番で「ありがとうございました」と書かれてて吹いた
自己解決しましたと書こうとしたらと書かれてて吹いた
他人のなりすましという可能性も まぁどっちにしてもあれだが
>>487 お前バカじゃねぇの。自分で自分に礼言って何が嬉しいんだ?
みなさま、申し訳ありません。
私がレス番間違えていました。
よく確認しなかったせいで、471を名乗ってましたが、実は468でした。
それと483は私ではありません。
たまたま勉強しかけてて興味があったので、しつこく
聞いてしまったのとレス番の混乱とがあって変なの沸かせて
しまったみたいです。
変なのはスルーしていただくよう、お願いします。
>>471 ,476
結果的にひどい自演になってしまったのはご指摘の通りです。
不快な思いをさせて申し訳ありませんでした。
必死だなw
自作自演は1人が複数いるように見せかけることで、 その逆(他人のレス番を名乗る)のは騙りとかなりすましって言うんじゃないの?
プログレスバーの真ん中辺りにパーセント表示とかの文字列を オーバーラップさせて表示したいのですが、方法を教えてください。
>>493 ご指摘の通りです。
書き込んだ後で何か違うと気づいたのですが、
なにしろあせっていたので、上のレスで出ていた言葉に
ひきづられてしまいました。
>>472 これはありがとうと言わざるを得ない
わざわざcvs使って別のソース群を落としてたらしい…
VBで次のようなプロシージャを作って定期的に変異するメモリを参照しています。 Private Sub MemCheck() Dim lpdwProcessID As Integer Dim hProcess As Integer Call GetWindowThreadProcessId(hwnd, lpdwProcessID) hProcess = OpenProcess(PROCESS_VM_READ, 0, lpdwProcessID) retA = GetProcessMemory(hProcess, retAIndexAddress) retB = GetProcessMemory(hProcess, retBIndexAddress) CloseHandle(hProcess) CloseHandle(retA) CloseHandle(retB) End Sub ここで、ちょっと分からなくなったので教えて頂きたいのですが retA及びretBに関してCloseHandleする必要はあるのでしょうか。 OpenProcessだけをCloseHandleすればいいのか、またタイミングとしては 上記で間違いないのか教えて下さい。 (GetProcessMemoryはReadProcessMemoryを使った関数です)
GetProcessMemoryって何?
500 :
498 :2007/08/28(火) 11:09:23
>>498 上にも書きましたが、↓の通りちょっとした関数です。
Private Function GetProcessMemory(ByVal hProc As Integer, ByVal Addr As Integer) As Integer
Dim dwRead As Integer
Dim res As Integer
If hProc = 0 Then Exit Function
Call ReadProcessMemory(hProc, Addr, res, 2, dwRead)
GetProcessMemory = res
End Function
501 :
デフォルトの名無しさん :2007/08/28(火) 11:15:49
フォルダ作ったりバルーンでヘルプが出たりする時、いろんなメッセージが 飛び交っていると思います。それをフックで見たいのですが SetWindowsHookEx(種類, HookProc, hInstance, 0); のように最期の引数は0でいいですか? フックの種類は何がいいですか?
VBやExcelでは、日付型をdouble型にも変換できるみたいですが、 同等な処理をC側でもやろうと思い、 とりあえずSYSTEMTIME構造体の内容を、 DATE型(IEEE 64 bit)に変換する関数を探しています。 実際、そんな関数あるのでしょうか? もしあれば、その関数名を教えていただきたいです。 また、Web上で参考になるサイトや資料を知っている方、 誘導をお願いします。
>>498 タイミングは問題ない
retA,retBに対してCloseHandleは不要
>>502 SystemTimeToVariantTime
506 :
498 :2007/08/28(火) 12:29:13
>>504 有り難う御座います。自分でも色々調べていたんですが
どうもOpenProcess後、色々処理をやった後本当に不要になった
時点でCloseすればいいだけみたいですね。
参考になりました。有り難う御座いました。
それCじゃなくてC#じゃないのか
508 :
502 :2007/08/28(火) 12:47:39
>>503 ごめんなさい。
質問文章が巧く伝わらなくって。
>>505 そのままズバりです、
ありがとう御座いました!
狐のソースってJava式コメントなのか
510 :
494 :2007/08/28(火) 15:59:56
ありがとうございました プログレスバー使えねえ・・・
511 :
475 :2007/08/28(火) 20:59:54
やっとわかった、でも華麗にスルーされたから秘密(* ´艸`)
そしてSP1で挙動が変わってまたこのスレに泣き寝入り
>>511 おせーよ。やっとウザイのが居なくなると思うと嬉しいよ
ちんこちんこちんこ^^
517 :
デフォルトの名無しさん :2007/08/29(水) 18:47:20
ここで聞くのは違うかもしれませんが、ListViewコントロールで、 アイコンをExplorerみたいに自由に配置できる機能はないのでしょうか? もしもExplorerもどきを作りたいなら、自分でコントロールを作らなければいけない?
518 :
デフォルトの名無しさん :2007/08/29(水) 18:53:25
ImageList
520 :
494 :2007/08/29(水) 19:18:44
>>516 そのリンクのどこを見ればよいでしょうか?
サブクラスにするなら
>>496 と同じ気がするのですが。
>>520 何も分かってないし、少ないページなんだから全部見ればいいだろ。
>>522 格子状に配置する方法しか見つかりません
526 :
デフォルトの名無しさん :2007/08/29(水) 20:02:21
節子それ外国語やないか!
だからどうした? 英語くらいアメリカ人でもぺらぺらできるぞ。
528 :
デフォルトの名無しさん :2007/08/29(水) 20:07:28
エゲレスの言葉なのにか?
>>525 読んだのですけど、やっぱり格子状にしか配置できないような。。
お前には無理だから諦めろ
テリーマンかよw
>>517 ドラッグ&ドロップでの移動の部分は自分で実装するしかないぞ。
535 :
494 :2007/08/29(水) 23:47:58
>>523 そのページを全部見ましたが、さっぱり判りません。
WM_PAINTで何をすれば良いんですか?
意地悪しないでずばり教えてください。
>>535 理解する能力のない貴方には無理です。
悪足掻きしないですっぱり諦めてください。
うは、日本語でおkとか思っている? ちょっと回り道して英語の勉強をするいい機会と思えばいい。 なに、中学校で1度はやっているんだから大したことはない。
>>494 プログラミングWindowsとか、Advanced Windowsは読んだことある?
539 :
494 :2007/08/30(木) 00:16:46
もうあきらめます。さようなら!
WM_PAINT プログレスバーを描画します。wParamがNULLでない場合、このコントロールは、値がHDCで、そのデバイスコンテキストを使って描画するとします。 うーん難しい
>>539 このスレにどんなことを期待していたかは知らないが、
まずマニュアルを読むというのは基本中の基本だぞ。
Win32 APIの場合、それにあたるのがMSDNライブラリ。
>>539 すくなくとも、
>>516 のページはカストマイズの方法について触れてない。
WM_PAINTについても単にデフォルトの挙動が説明されてるだけなので参考にならない。
プログレスバーのWM_PAINTを使えば、楽に出来るのは確かだが、その具体的な
実装がサブクラス化であり
>>496 の方法。
516は単にスルーしておけ。
543 :
516 :2007/08/30(木) 01:02:12
>>496 のページOnPaintでプログレスバーを自前で描画しているコードを
これで置き換えるだけ
DefWindowProc(WM_PAINT, (WPARAM)(HDC)dc, 0);
気づいてほしかったな。
>>542 ごちゃごちゃ書いてねーで実装示せよ
hdc = BeginPaint(hWnd, &ps); SendMessage(hProg1, WM_PAINT, (WPARAM)hdc, 0); EndPaint(hWnd, &ps);
デバッグモードで実行すると GlobalFree()のところで必ず止まるんだけどなぜ?
エスパー大募集中
WndProcにこんなの書いたらできた case WM_PAINT: hdc = BeginPaint(hWnd, &ps); SendMessage(hProg1, PBM_STEPIT, 0, 0); RECT rect; rect.top = 150; rect.left = 30; rect.bottom = 180; rect.right = 200; SetBkMode(hdc , TRANSPARENT); DrawText(hdc, L"ぬるぽ", 3, &rect, 0); EndPaint(hWnd, &ps); break;
馬鹿な質問ですみませんがWin32APIってCでもC++でも書き方同じですか? Cの書き方でもC++で使えるのは分かるのですが、C++でCの書き方してると カッコわるいかなと思うんで
むしろC++で書くのがかっこわるい
>>548 CでもC++でもWin32API書けないお前には関係のない話
551 :
548 :2007/08/30(木) 04:40:16
いえこれからC+++でAPI作ってやるところだよ お前らのためにな
552 :
548 :2007/08/30(木) 04:53:31
Win32APIぐらいいくらでもかけるわ おまえらと一緒にすんな
その前にC+++作らないと 100回生まれ変わってもお前には無理だけど
>>552 ここはWin32APIを書けるか書けないかの人のスレじゃなくて
Win32APIを書ける人のスレです。
Win32API の実装か・・・難しそうだな
556 :
502 :2007/08/30(木) 08:14:40
C++0xってどうなってんだろ? 多分、次々版でMSは採用なんかな?
502は死ね
558 :
502 :2007/08/30(木) 08:16:17
喜んで
560 :
デフォルトの名無しさん :2007/08/30(木) 08:40:07
レス指定殺人予告も逮捕理由にならなかったか?
誰も殺人予告はしてないと思うが。
自殺の強要
質問です。 VC++6, SDK 使ってます。 PropertySheet()でプロパティシートを作ったとき、そのプロパティシートが 作られる直前タイミングは PROPSHEETHEADER.pfnCallback (=PropSheetProc) の PSCB_PRECREATE で得られますが、閉じる(閉じた)タイミングはどうしたら 取得できるでしょうか? ムリポ?
564 :
デフォルトの名無しさん :2007/08/30(木) 10:17:39
>>564 マジデ?
(VCは使ってるけど)VCに依存する話ではないと思うんだが・・・
>>563 PSCB_BUTTONPRESSEDじゃダメなん?
>>566 d
comctl32.dll ver6 (XP)以降の機能ですね。
せめてw2kくらい対応してるといいのですが
XPになってPSCB_BUTTONPRESSEDが追加されたということは、つまり
それ以前には同機能が無かった、と読むべきなのか
568 :
567 :2007/08/30(木) 13:26:09
ごめん、ついWin32API以外にまで言及してしまった。 今回はWin95等を考慮し「Win32API」の範囲で実現したかったので、ひとまず断念します。 失礼しました。
>>567 あとはPSN_APLLY, PSN_QURYCANCELとか
あと
>>564 はMFCの質問と間違えたと思われ
確実なのはプロパティシートをサブクラス化してWM_DESTROY捕まえだろう
>>571 wsprintf(tcStr , _T("Kitty on your lap\nwPalam = %Xh") , wp);
>>572 いかんすっかり忘れとったw
ありがとうございました。
ブラウザやms-office系のソフトで マウスカーソルの下にあるテキストを取得するにはどうしたらいいでしょうか? 標準的なエディットコントロールではsendmessageでwm_gettextすることで取得できるようですが。。。
>>574 昔からのやり方でTextOutをフックするという方法がある
俺には無理だが
577 :
563 :2007/08/30(木) 19:33:58
>>575 >>563 です。
当初の希望は「プロパティシート」の閉じるタイミングですが、WM_DESTROY等は「プロパティページ」
が閉じるときのメッセージですよね。
ということで今回は、
開いた全プロパティページにPSN_APLLYが来る=プロパティシートが[OK]で閉じる時
と判断するようにして対応しました。
>>574 1.ウィンドウを列挙
2.PtInRect関数でウィンドウ内にマウスがあるか?
3.CharFromPos関数で一番近いテキスト
ごめんわからへん
>>574 Microsoft Active Accessibility の機能を使うとできるかもしれない。
MSDNのその項目で紹介されているテスト用ツール(AccExplorer等)を試してみるといい。
アプリ側で対応していないとどうしようもないが、
MSのアプリならある程度期待できるような気がする。
ちなみにカーソルの下という条件でなければ、 COM使ってDOMなりなんなりを読み取れる。
>>576 マウスとキーボードのグローバルフックは出来たので
もっと調べてみます
>>578 ありがとうございます
>>579 読み上げの機能みたいなやつ?
調べてみます
>>580 COMでWORDのファイルを開くということ?
調べてみます
わろた
DirectX および OpenGL の中で簡単なテキスト入力フィールド を作ろうと考えています。英語のみなら簡単に実装できそうなの ですが、日本語対応も考えるとさっぱりです。 できるだけ低レベルな Win32API を使って IME と対話したいのですが、 どなたか経験をお持ちの方はいらっしゃらないでしょうか? ヒントもしくはキーとなる API を教えてもらえば幸いです。
IMMで始まるぜ!
>>583 最近のDirectXSDKにIME対応エディットボックスのソース丸ごとついてるよ。
586 :
583 :2007/08/31(金) 17:19:32
587 :
デフォルトの名無しさん :2007/08/31(金) 17:34:01
msime.hくらい標準で入れとけって思う>>ms
VC.Netのスレではスレ違いなようでしたので、 こちらで質問させていただきます。 VC++6.0Sp6@win2000なのですが、 現在win32 Application、単純な"Hello World"プログラムで プログラムを作っており、 #include <commctrl.h> #pragma comment(lib, "comctl32.lib") と書いているのにInitCommonControls();が定義されていない識別子だと エラーメッセージが出ます。 このエラーメッセージが出る訳と対処法の方教えて下さい。
>>588 呼ばなきゃいいんじゃね?とか言ってみる。
ダイアログで使う分には、勝手に内部で呼ばれるだろうし。
エラーの原因自体はソースを見ないと判らないな。
InitCommonControlsは実際には何もしないAPIで、本当に必要なのはcomctl32.dllのDllMain InitCommonControlsをソース上でとりあえずつかっておけばcomctl32.dllがスタティックリンクされるって理屈らしいので comctl32がリンクされてさえいれば問題無いんじゃないだろか エラーの理由はシラネ
>>588 #include <commctrl.h>
#pragma comment(lib, "comctl32.lib")
の行を
#include "stdafx.h"
より前に記述したと予想。
もし、そうなら記述位置を後ろにずらせ。
プロジェクト設定で「プリコンパイル済みヘッダを使う」が有効の場合(デフォルト状態)、
#include "stdafx.h"
の前には何も記述してはいけない。
記述しても無視されるが、これ自体はエラーにはならないので注意。
WIN32APIって全部でいったいいくつくらいの関数があるん? MSDNとかわかりにくくていやなんで、 自分なりに使い方をまとめて保存しているんだが、 永遠に終わらない気がしてきた・・・。 自分が覚えるスピードより新しく追加されるスピードの方が速い気が・・・
>>591 後ろにずらすより、stdafx.hに書くべき内容だと思うがw
>>592 (´-`).。oO(あほは大変だなぁ・・・)
>>592 数はともかくマジレスするとカテゴリだけ覚えとけw
辞書は覚えるのじゃなくて引くものだぞ
大学受験のときに英和辞典をaからzまで順番に覚えていった俺・・・
何年前の何日は何曜日とか芸能人の誕生日とか覚えてるやつはいるから WinAPIを型から全部そらで覚えてるやつもきっといるんじゃね?
そんなの関係ねぇ
msdn2のAPIは、日本語化はされない? 古いmsdnは日本語化されているのに。
APIはまだいいんだが、OLEとか、ActiveXtとか、COMインターフェイスとか、よくわかんないな。 「次の時代はこれ」って言ってたのに、すぐにまた新しいのがでてくる。 .Netは信用していいんだよな。
>>600 msdn2のAPIも古いmsdn同様、一部日本語化されている。
603 :
デフォルトの名無しさん :2007/09/01(土) 00:50:06
一生懸命試行錯誤して自作した関数が 既にWin32APIにあったと知ったときの虚無感
しかし、その関数は要Win2kだったりすると、 少しは慰められるかもしれない。
Vistaまでしかサポートしないよ。んじゃ! っていうAPIとかCOMインターフェイスが多いので困る
win9x はもう見捨てていいんじゃない?
>>602 おお、そうなのか。てっきり.netだけ日本語化かと思ってた。
>>603 漏れはこんなの当然あるだろうと思って探した機能が
APIになかったときの虚無感の方が大きい
>>601 >OLEとか、ActiveXtとか、COMインターフェイスとか
特別何かが新しくなってる訳じゃない
強いて言えば名前だけ新しくなった
リストボックスにLB_GETTEXTはあるのにLB_SETTEXTがなかったとき
なみだがでますー
>>597 2008用のAPIはVista SP1でも使えるんだろうな
win32APIはvistaで廃止されるのです そうここの住人は死を待つのみ
LB_GETTEXTがあるから当然LB_SETTEXTもあると思うじゃないですか! こいつアホ
座して死を待つのみ
WIN32APIの死=MSの死
Win64API
でも当初ビスタではwin32廃止するっていってたよね
GlobalAllocとmallocってどう使い分ければいいんでしょうか?
mallocだけで大丈夫
>>622 GlobalAlloc使えと書いてあるAPIで使う
625 :
デフォルトの名無しさん :2007/09/01(土) 15:53:57
HeapAllocとかVirtualAllocとかもみんなmallocで統一しておk? もちろんそのAPIじゃないとだめって書いてある場合はそうするけどさ
そういう質問をしているレベルならmalloc()でいいんじゃね
なんでmsdn全部翻訳しないの? 日本のmicrosoftは何やってんの?
英語読めないプログラマお断り
最近じゃ文系よりも理系のTOEIC受験者が多いぐらいだからな
>>626 パフォーマンスに影響が出るような局面で無い限り適当でも害は無い
ただmemsetをめでるのもいいけどHEAP_ZERO_MEMORYフラグを忘れないであげてください
new deleteにしとけ
MSDNの英語読めないのはさすがにまずいだろ‥‥ 中3-高1程度の英語力(+技術系の英単語知識)があれば読めるだろ。あれ。
ごめん…
中2レベルなんです
学校行け
>>632 うちの会社の新人研修では「派遣さんは英語のマニュアルは読めないので必ずフォローし・・・」
なんて講師が真顔で説明してたけどw
技術的なことは日本語でも意味わからなかったりするから
ぶっちゃけ、英語よりも日本語のマニュアルの方が読めない。
それって翻訳失敗(自動翻訳とか)ってことではなくて?
ちゃんと人間が翻訳した本でもひどい文章になってるものはあるしなぁ
英文学とかで学んでた翻訳が技術文書翻訳してまともな日本語の技術文書ができあがるわけがない フライトシムの日本語マニュアルなんて翻訳無茶苦茶で英文マニュアルの方がはるかにわかりやすかった。
英語の技術書は、半分がジョークとか世間話だったりするような気がする
昔はウソもあったよ。MSDN
>>642 デイヴィッド・マーク・スペクター並みのジョークですか?
それはきついですね
戦うプログラマというほら吹き本?
>>645 なぁ勘助。
デビット・カトラーは産婆やめてMSに寝返ったんだよな。
自分が前いた会社を潰した人は潰しきくの?
648 :
デフォルトの名無しさん :2007/09/01(土) 20:54:27
どうやって潰したのさ?理由しだいだな
日本語は駄目な言語なんかね
650 :
デフォルトの名無しさん :2007/09/01(土) 21:28:06
特定のウィンドウが所有しているウィンドウハンドルを列挙する方法をご存知の方、教えてもらえないでしょうか? 特定のウィンドウの兄弟ウィンドウをGetWindowで列挙させて、そいつらのオーナーウィンドウが特定のウィンドウかどうか調べる。。って方法であってますか? それとももっと簡単な方法ってありますか?
>>650 そのものズバリのEnumChildWindowsじゃ不満なのかね?
652 :
デフォルトの名無しさん :2007/09/01(土) 21:37:31
>>651 EnumChildWindowsは子ウィンドウを列挙するものなんで使えませんでした。
653 :
デフォルトの名無しさん :2007/09/01(土) 21:40:16
>>652 に追加
特定のウィンドウが作成したモーダルダイアログは所有しているウィンドウだけど、子ウィンドウでないので、
EnumChildWindowsでは列挙できませんでした。
ウィンドウ全部列挙してオーナーを調べるしかないんじゃね?
655 :
デフォルトの名無しさん :2007/09/01(土) 22:08:48
>>654 ShowOwnedPopupsは内部的に所有しているウィンドウを列挙していると思うので、
所有しているウィンドウを列挙できる何か方法があるんじゃないかと思ったんですが...
ShowOwnedPopupsも全ウィンドウ列挙してるんでしょうかね?
子ウィンドウ、親ウィンドウ、所有者のウィンドウは内部的に管理しているが、 所有しているウィンドウは管理していないので取得するAPIも存在しない。
657 :
デフォルトの名無しさん :2007/09/02(日) 06:48:50
office onenoteのズームを外部プログラムから変えようとしているんですが、うまくいきません。 ツールバーのズームボックスのハンドルを取得して、WM_SETTEXTをセンドメッセージして、150%とか文字は 書き換えられるのですが、その後、それを反映させることができません。 スパイで得たズームボックスのメッセージをかなり忠実に再現してもだめです。 例えば、SendMessageで、WM_KEYDOWN,VK_RETURN,0x011c0001 WM_KILLFOCUS,NULL,NULL WM_IME_SETCONTEXT,NULL,0xc000000F EM_SETSEL,0xffffffff,NULL EM_SCROLLCARET,0xffffffff,NULL 等々だめでした。 どうすれば、外部プログラムからオフィス等のズームを変えられるのでしょうか。
keybd_event
それよりもCOMでオートメーションを使うほうが確実ではないか? Excel VBAならググればすぐ見付かったから、たぶんOneNoteでもできると思う。
GUIアプリを作ったときにprintfとかで標準出力に出力すると、コンソールも一緒に表示させてるときはそこに出るけどコンソール出してないときにprintfすると文字列はどこにいくの?
時空の狭間かな。
親プロセスに渡るか、闇に葬られる
デバッグ用にprintfで出力した文字列は(事象の地平線の向こう|時空の狭間|闇に葬られる)からリリース時に消さなくてもたいして害はないってことでしょうか ご回答ありがとうございました!
いや、フォーマット文字列のパースと入力の変換のコストが掛かるから (パフォーマンスを気にするなら)取り除いておいた方がいい。
リリースなのにOutputDebugStringからデバッグ出力吐き続けてる糞アプリもよくあるよね
ごめん…
わりとよくやってる ごめんよ
こっそり愚痴メッセージを垂れ流しているアプリがあっても不思議じゃないな。
イースターエッグみたいなもんだと思えば
>>667 普通は発生しないはずのエラーが発生したときとかのみその情報を出力してくれてるのはアリじゃね?
つか、俺はそうするようにしてる。
673 :
デフォルトの名無しさん :2007/09/02(日) 17:06:08
そういう時って普通ログに吐かないか?
>>672 >
http://www.nitoyon.com/vc/tutorial/debug/win32.htm --
OutputDebugStringは、デバッグモード・リリースモードに関係なく、デバッガが存在すれば文字列を出力します。
この関数を埋め込んだままアプリケーションを公開するとパフォーマンスが落ちそうですが、デバッガが存在しない
ときにはパフォーマンスはほとんど低下しません。また、多くの市販アプリケーションの出荷版にも
OutputDebugStringが埋め込まれたまま出荷されています。このようにしておけば、出荷後の環境で不具合が
発生したときに、どのような状態になっているかを発見できるからです。
--
勘弁してくれ。
恥ずかしながら知らんかった どう考えても解析に利用されるだけです 本当にありがとうございました
本当にありがとうでござるよ
OutputDebugStringで出力されたものって、開発環境のないPCでも見れるの?
678 :
デフォルトの名無しさん :2007/09/02(日) 18:58:17
見れるよ。そういうツールはある。
このスレの住人はDebugView標準装備だと思ってた さがせばほかにもいっぱいあるのね
VS2005 Proで実験 「スキーマ '(略) \Projects\Hoge\Hoge\Properties\resources.resx' をアンロードしています。」
682 :
657 :2007/09/02(日) 19:46:57
>>659 既に開いてあるオフィス文書を、COMを介して外部プログラムから操作するとなると、
共有メモリとかなんとかを使わなければならないんですか。
いいえ
FrqScr[].hwndにハンドルが格納されません。(MessageBoxで表示させると0になる、file3のhTempの場合は表示される。 「構造体のポインタをcallocでメモリ確保して、 添え字を付けて指定、したところに代入」 の動作が正しくできるかチェックしたら ちゃんと正しく表示されました。 根本的に間違ってるところがあるかもしれません。 言葉足らずだったらすいません。 次にソース貼ります。
685 :
684 :2007/09/02(日) 20:13:34
/ * file1 */ typedef struct _usrSetScrProp{ HWND hwnd; SCROLLINFO scrInf; }USRSETSCRPROP, *PUSRSETSCRPROP; ~~~~~~~~~~~~~~~~~~~~~~~~~~
686 :
684 :2007/09/02(日) 20:16:06
/* file2 */ static PUSRSETSCRPROP FrqScr;\ unsigned char i; // メモリ確保 #ifdef SM_FRQ_VAL FrqScr = calloc(sizeof(USRSETSCRPROP), SM_FRQ_VAL); #endif ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ case WM_CREATE: FrqScr[i].hwnd = CreateScroll(hwnd, (HMENU)SM_CH_FRQSCR_BASE+i,7 + i *80, 60 ); str_Temp = malloc(sizeof(HWND)); wsprintf(str_Temp, "%ld", FrqScr[i].hwnd); MessageBox(NULL, TEXT(str_Temp), TEXT(""), MB_OK); free(str_Temp); }
687 :
684 :2007/09/02(日) 20:16:56
~~~~~~~~~~~~~~~~~~~~~~~~~~~~ / * file3 */ HWND CreateScroll(HWND pareHwnd, HMENU hmenu, int x, int y ) { HWND hTemp; hTemp = CreateWindow( //スクロールバー TEXT("SCROLLBAR") , TEXT("") , WS_CHILD | WS_VISIBLE | SBS_VERT , x, y , 16 , 120 , pareHwnd , (HMENU)hmenu, hAppIns , NULL ); str_Temp = malloc(sizeof(HWND)); wsprintf(str_Temp, "%ld", hTemp); MessageBox(NULL, TEXT(str_Temp), TEXT(""), MB_OK); free(str_Temp); return hTemp; 連投すいませんでした
str_Temp = malloc(sizeof(HWND)); TEXT(str_Temp) この辺の意味がよくわからないんだけど
689 :
684 :2007/09/02(日) 20:31:45
TEXT()ってのがUnicodeに変換するやつみたいで、参考にしたサイトでは標準ってことになってた。 str_Tempはメモリ確保・・・って俺間違ってる HWNDじゃ駄目じゃん・・・文字入れるのに
ダメダメじゃんw何そのソース糞わろた もうプログラミングやめた方がいいよ
>>684 TEXTマクロの宣言をヘッダで確認してこい。
あとデバッグ出力させたいなら、CRTのデバッグルーチン使うなり
OutputDebugString使った自前の関数を用意しろ。
ちなみに、TEXT()と書くよりtchar.hをインクルードして_T()と書く方が楽だよ♪
アンダーバーうつの面倒くさいとかたまに思ったり
>>684 人にバグの相談する前に、熊のぬいぐるみに対して、
どういう処理をしたくてそのコードを書いたのか説明して頭整理しておけ
ってだれか言ってた
タイピングから練習した方がいいね
俺は大文字打つの面倒くさい
695 :
684 :2007/09/02(日) 21:21:32
>>691 調べたところBCC使ってるんでCRTは無理みたいです。
確かに_T()は楽ですね、ありがとうございます。
>>692 その言葉頭に入れておきます。
696 :
657 :2007/09/02(日) 22:56:18
>>658 キーボードイベントでなんとかやりたいことが出来ました。
>>659 ,683
COMで確実にやりたいところでしたが次の課題にしました。
ありがとうございました。
697 :
デフォルトの名無しさん :2007/09/03(月) 10:43:26
メールヘッダのData:をSYSTEMTIME等に変換するAPIを教えてください
データ?
699 :
デフォルトの名無しさん :2007/09/03(月) 11:04:00
DllのDllMainでGetProcAddressしているAPIをインジェクションする方法を知っておられる方、教えてください。 DllMainでGetProcAddressでポインタを取得されている場合、 ImportAddressTableの書き換えによるDLLインジェクションができないです。 LoadLibraryの後だとDLLインジェクションのためにImportAddressTableをかきかえても GetProcAddressのポインタに影響しないのが原因とおもっています。 そこでLoadLibraryExでDONT_RESOLVE_DLL_REFERENCESを指定してロードして、 その後、LoadLibraryExで取れたポインタからDOSヘッダ->オプショナルヘッダから エントリーポイントのアドレスを取得して、DllMainCRTStartUpを実行しましたが、 アクセス違反となります。この方法は無理っぽいです。 デバッガでみるとDllMainCRTStartUpのポインタはうまくとれて実行できているので、 なんかLoadLibraryではされている手順が自分のコードではできていないんだと思っています。
700 :
502 :2007/09/03(月) 11:13:29
701 :
デフォルトの名無しさん :2007/09/03(月) 11:27:23
>>700 いえ、たとえばメールヘッダの以下の形式を
Date: Fri, 2 Mar 2007 12:07:05 +0900
SYSTEMTIMEかまたは文字列の年/月/日 時:分:秒
形式にしたいです。
>>701 そういうのを自分でやるのがプログラマの仕事ですよと。
705 :
デフォルトの名無しさん :2007/09/03(月) 13:49:00
ペイントのようなお絵かきソフトを作りたいと考えています。 Win32APIとC言語、タブレットの筆圧を使う予定です。 自由選択による画像のコピー&ペースト機能も作りたいです。 お勧めのプログラミング参考書・サイトなどがありましたら教えてください m(_ _)m
707 :
705 :2007/09/03(月) 14:04:06
もう最高!♪
>>699 呼ばれるコードのほうを書き換えろ。
つーかインジェクトじゃなくやろうとしていることはフックに見えるけどな。
709 :
デフォルトの名無しさん :2007/09/03(月) 14:27:52
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
iiiiiiiillllll!!!!!!!!!!!!!!!!!!!!!iiii,,,,
l"""",,,,,,,,iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii,
|||||||||||!!!!!!!"""""""""!!!!!!!lll!!》
.i|||||~~~~ ___ ..!!!》!
巛/ ’,,,iiiiiiillllllll!!!!! iiiiiii,,,,,,,,, |
| """"≡ 。ヽ _ ""'|
.⌒”丶 . `_彡" ( °) |
(('.'). / " ⌒ 、.《 ~ヽ⌒' ヽ
>>706 屋上へ行こうぜ…
..'’、 ' ,,,!” ... ___) |
.ゝ ` ' ⌒_~ ⌒' | 久しぶりに…
| ~~ '___ |
.|.. ,,,,,二二二ミ, | キレちまったよ…
..| |
...|... "'!!!!!!!'" |
|、 ..|
..| へ ソ ....|
711 :
502 :2007/09/03(月) 15:08:10
712 :
デフォルトの名無しさん :2007/09/03(月) 15:09:49
ザ ラ キ ー マ !
713 :
557 :2007/09/03(月) 15:10:01
唱えた憶えはない
714 :
デフォルトの名無しさん :2007/09/03(月) 15:13:44
>>711 ザキ!ザキ!ザキ!ザキ!ザキ!ザキ!ザキ!ザキ!ザキ!ザキ!ザキ!
ザキ!ザキ!ザキ!ザキ!ザキ!ザキ!ザキ!ザキ!ザキ!ザキ!ザキ!
ザキ!ザキ!ザキ!ザキ!ザキ!ザキ!ザキ!ザキ!ザキ!ザキ!ザキ!
ザキ!ザキ!ザキ!ザキ!ザキ!ザキ!ザキ!ザキ!ザキ!ザキ!ザキ!
ザキ!ザキ!ザキ!ザキ!ザキ!ザキ!ザキ!ザキ!ザキ!ザキ!ザキ!
ザキ!ザキ!ザキ!ザキ!ザキ!ザキ!ザキ!ザキ!ザキ!ザキ!ザキ!
715 :
デフォルトの名無しさん :2007/09/03(月) 15:27:26
717 :
デフォルトの名無しさん :2007/09/03(月) 15:56:21
うるさいぞ豚共
/::::)(:::)(:::::::::::)(::::::^::::::::::\ (::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::\ /::::::::::/ノ::::::::ノ::::::::ヽ:人::::::::::ヽ:::::::::::::::) (::::::::::/ ):::ノ::::ノ ) ソ ヾ::::::::::::丶::::ヽ (:::::::::/ 彡 ノ ノ :: 彡:/)) ::::::::::) (::::::::::/彡彡彡彡彡 ミミミミミミミ :::::::::::) ( :::::::// ̄ ̄ ̄ ̄ヽ===/ ̄ ̄ ̄ ̄ヽ |:::::::::) | =ロ -=・=- ‖ ‖ -=・=- ロ=== |:/ ‖ / /ノ ヽ \ ‖ ヽ|ヽ |/ ヽ`======/ .⌒ ` ========ノ. ..| | .( .(● ●) )ノ ( ・ / :::::l l::: ::: \ .) ( // ̄ ̄ ̄ ̄\:\. .) .\ : )::::|.  ̄ ̄ ̄ ̄ |::: ::::(: /.. \ ::: :::::::::\____/ :::::::::: / ヽ ヽ:::: _- ::::: ⌒:: :::::::: -_ ノ \丶\_::_:::::_:::: :::::_/:::: / | \ \ ::::::::::: :::::::::: ::: :: __/ |  ̄ ̄\ 丶  ̄ ̄ ̄ ̄ ̄ ̄ ̄ / ̄ ̄
ドラスレ系の呪文か
しょうもねー書き込みすんな
ザラキ
DLLのドキュメントってどこかでダウンロード出来ますか?
プロセスIDからウィンドウハンドルを見つけ出すには EnumWindowsで全ウィンドウを探してGetWindowThreadProcessIdでピックしていくしかないの?
できます
729 :
727 :2007/09/03(月) 18:37:44
>>726 DLLのドキュメントって意味わかりません
どんな内容のものが欲しいのか?
>>726 dllの中身について説明しているものです。
言葉足らずですみません
User32とかのAPIのリファレンスのこと とエスパーしてみたがどうか。
MZとかPEの事だろ。 とりあえずMSDNくらいは読めよ。
return TRUE;
>701 バリアント経由で、ってのはどうよ?
>>739 俺もそれを考えたけど、残念ながら通らなかった。
.NETのDateTimeなら、タイムゾーン以外は書式指定で一発変換できるのだけど。
てことで、Win32APIレベルでは
>>703 が正解かと。
甘いぜタイムゾーン含めて一発変換だぜ
間に‘:’無くても変換できたっけ? まあ正規表現で置換すれば済む話なんだろうけど。
DrawText関数の第3引数は文字のバイトサイズじゃなくて、文字数? UNICODEの文字列を出力しようとして使ったら、後半に余計なものg
745 :
デフォルトの名無しさん :2007/09/04(火) 03:47:22
UNICODEはよけいなのつてるっしょ
746 :
デフォルトの名無しさん :2007/09/04(火) 04:10:28
今、VisualC++使ってます。 たとえば、123214332っていう数字があった場合、3桁区切りで123,214,332って表示しようと思ってる。 いい関数ない?
そういや日本の数字体系にあわせるよう 万の桁でコンマ入れようって運動が昔あったらしいな
コンマ日本の記号じゃなくね?
751 :
デフォルトの名無しさん :2007/09/04(火) 07:05:56
>>750 一応、作ったんですよ。
文字列変換して一度、配列を逆転させて、3桁区切りいれて、反転しなおす。
できたんですけど、美しくない。。んでこのスレで聞いてみました。
別スレで3ケタ区切りについてsetlocale関数を助言して下さった方がいたので、勉強中。
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
void main()
{
char *locale;
int a=12413513;
char str[256]="1341234214";
char buf[256];
struct lconv *lcp;
/* ロケールを日本語に設定 */
locale = setlocale(LC_NUMERIC, "ja");
printf("locale=%s\n", locale);
lcp = localeconv();
printf("%s\n", lcp->thousands_sep);
printf("%d\n", a);
printf("%s\n", str);
}
しかし、使い方がよく分からんっす。。orz
752 :
デフォルトの名無しさん :2007/09/04(火) 07:06:26
できねーから書いてんだよ!
GetNumberFormatを使わざるをえない
>>751 配列を逆転って…する必要ないだろ
文字列の長さでコンマの位置決められるんだから
756 :
デフォルトの名無しさん :2007/09/04(火) 07:48:02
757 :
751 :2007/09/04(火) 07:54:56
うるせーてめーら俺が配列を逆転させた意味すらしらねーくせーに
>>757 おまえ、誰だよwww
勝手に俺を語るな
760 :
デフォルトの名無しさん :2007/09/04(火) 07:58:21
俺こそがお前だ
>>747 サロゲート考えると、文字数じゃなくて、WCHARの数と思う。試したことないけど
762 :
デフォルトの名無しさん :2007/09/04(火) 08:01:12
763 :
699 :2007/09/04(火) 09:13:04
>>708 あれてるなかレスありがとう
よばれるほうをかきかえるということはGetProcAddressが呼ばれる関数だとすると、
書き換え先として偽GetProcAddressを用意しておいて、
元のGetProcAddressの先頭命令をCALL 偽GetProcAddress, RETにしておきかえる
元のGetProcAddressの実行コードはどっかにコピーして実行権限を付加して偽GetProcAddressから呼び出せるようにしておく。
でよろしい?なんかむつかしく考えてしまったような・・・。
フックをしているのはインジェクションを行うためにGetProcAddressとLoadLibraryをフックしておきかえたいからです。
DLL(A)がDLL(B)をLoadLibraryし、DLL(B)がDllMainでGetProcAddressしている先が、
インジェクションしたいAPIだった場合、LoadLibrary後ではImportAddressTableの書き換かえで
インジェクションできないので、DllMainより先にImportAddressTableの書き換えをするとかの方法を探しています。
これが解決できたらDllMainでIATから自力でアドレスを取得する自作GetProcAddressとかは
どう対応するのかとか考えていきたいです。
764 :
デフォルトの名無しさん :2007/09/04(火) 10:27:20
メールヘッダの↓を変換する方法を教えてください From: =?shift-jis?B?U2VhcmNo?=
エンコードにShiftJIS使うようなメールは無条件破棄でOK
メールでSJISってwwww 俺のところには1970/01/01付けでスパム送って来る奴がいるが 何考えてんのかと思う フィルタリングする分には楽だけどね
767 :
デフォルトの名無しさん :2007/09/04(火) 10:57:57
社長からの大事な指令なので捨てられないのです よろしくおねがいします
768 :
デフォルトの名無しさん :2007/09/04(火) 10:59:42
社長へ大事なスパムメールを送るので捨てられないのです よろしくおねがいします
769 :
デフォルトの名無しさん :2007/09/04(火) 11:01:16
ここはAPIスレ
そういうアピありますよね。おながいします ない?みんな俺を騙そうとしてるんだ。自分たちだけ独占したいからって
荒れるからやめてください。 そんなアピはございません。
772 :
デフォルトの名無しさん :2007/09/04(火) 11:18:22
おまえらしんでください
おまいら、仲良く汁!(´・ω・`)
api呼び出しをモニタリングする方法にはどんなものがありますか? microsoftのsupport tool, rohitab, KaKeewareのような。 VTUNEというのでもできるようです。
775 :
765 :2007/09/04(火) 12:56:39
Bエンコード + 文字コードShiftJIS だったorz
>>763 とことん馬鹿だな。
例えば、GetWindowTextを変えたければ、GetWindowTextのコードを書き換える。
テーブルなんてものは忘れてしまえ。
むしろOSを書き換えれ
>>776 元のコードは別のところに退避?サイズとかは勘?
先頭数バイトをコピーして最後に戻りをつけてやってそっちをあとから呼び出せばいいのか
>>778 ジャンプ命令のサイズ考えてあとは自分でどうにかしろ
コンボボックス(ドロップダウン)で Ctrl+n/Ctrl+p で↓/↑キーと同じ動きをさせるために、 コンボボックスの子供のエディットコントロールを処理するプロシージャを作っています。 WM_KEYDOWN を拾って処理はできたのですが、ビープが鳴ってしまいます。 0 を返しても 1 を返してもこうなるのですが、Ctrl+c を押したときのように 音を鳴らなさないようにするにはどうしたらよいでしょうか。
782 :
デフォルトの名無しさん :2007/09/04(火) 16:37:56
一時的にスピーカーOFF!!
天才あらわる!!!
スピーカーボリュームをミニマム!!
ビープはスピーカー関係ないだろ
net stop beep
ビープがなる前にマザーボードを叩き割ったら問題なし!
788 :
デフォルトの名無しさん :2007/09/04(火) 17:10:34
PC の電源OFF
789 :
699 :2007/09/04(火) 17:24:40
>>776 とことん馬鹿ですいません。助言をいただいたおかげで望みの実装ができました。
元の対象関数を別領域にコピーして
元の対象関数の先頭命令をインジェクションしたい関数にJMPするように書き換え
元の対象関数は別領域を呼び出せば動作するようにしました。
ありがとうございました。
PCの中にウレタンとか入れてさ、防音すればビープも気にならなくなるよ? まず、PCの静音化から始めるべきだろう。
これ一人でレスしてんのかな
そうだよ キチガイは意外としつこい
ビープ鳴るのは死亡した時ぐらいだろ
"ding" というか「一般の警告音」、Edit で Ctrl+o とかやると出る音か。
また自演が始まった・・・orz
ビープの鳴るときのメッセージをspy++
サウンド設定に依存するから間違いとは言い切れないな。
>>738 横からありがとう
手元に置いておいて損は無い資料だ
サウンド設定に依存しないから間違いとは言い切れる。
>>768 何この低脳アホじゃねw
社長に送ったらそれはスパムではない。 業務連絡だ。
>>796 C-p のときに 0x10、C-n のときに 0x0e の WM_CHAR が飛んできていました。
これを捨てるようにしたら音が出なくなりました。ありがとう。
>>548 APIって所詮外部関数だろ
CもC+++も関数の呼び出し方は同じ
+++が違ってくるのはクラス関数(メソッド)を呼び出す場合
これが理解できなきゃまずC++スレで叩かれてから来い。
XPのコマンドプロンプトでnet useをオプションなしで叩くと、 ネットワークドライブの一覧が取得出ますが、これと同じことを APIでやろうとして行き詰ってます。 基本的には WNetOpenEnum WNetEnumResource WNetCloseEnum で一覧を取得できますが、net useで表示される先頭のステータスが どうやっても取得できません。このステータスって、ネットワークドライブが LAN上からいないだけで「切断」と見えますが、WNet系のAPIでは 「ネットワークドライブの切断」で切り離した場合のみ接続されていないと 判断するようで、サーバーが死んでるなどの原因でアクセス出来ない状態という 状態は取得できないようです。 エクスプローラでマイコンピュータをブラウズしていると、上記の状態の ネットワークドライブは切断したネットワークドライブとして見えるので、 なにか方法はあると思うのですが。。。。。。
>>804 正にCOMインタフェースを通じてのメソッド呼出は、
CとC++でだいぶ違うよね。
子プロセスの終了待機はWaitForSingleObjectでいいことは分かったのですが 自身の外部からの強制終了時に子プロセスを終了させるにはどうしたらよいのでしょうか。
>>807 目的にもよるが、別に監視プロセスを立てるとか。
>>807 子プロセスのハンドルを持っておいて
プロセスに対して終了メッセージをポストすればいいのでは?
本当に強制終了させられたらそのプロセスは何もできんわな そのプロセスが死んだときに子プロセスが死ぬシカケがいる
JobObjectとか?
子が勝手に死ねばいい
用途を詳しく書いてないから何とも言えんが ターミナルみたいに子があらかじめ予想できないプログラムの場合 その手は使えないな
親プロセスのハンドルを子がもって、子に待機関数使わせるのじゃだめ?
子プロセスが、 終了用のイベントハンドルか親のプロセスハンドルを知っていれば、 待機関数でわかるんじゃね? WaitForMultipleObjects関数とかつかって
816 :
デフォルトの名無しさん :2007/09/05(水) 09:43:56
たまに、画面端とかに緑色のでか文字でOSD表示みたいなのを行うソフトが あるんですが、このような表示って何のAPIを使っているのですか?
普通にGDIじゃないの? 透明(つーか、何も描画しない)ウィンドウ作って文字を描けばいけると思う
>>816 の求める命題は、以下の3つのうちどれだ?
@.PCのパフォーマンスを計測する処理が知りたい。
A.デスクトップ、もしくは最前面を指定描画する方法が知りたい。
B.かっこいいポルナレフは何かすごいアイディアを思い浮かぶ。
>>816 PathToRegion
SetWindowRgn
>>817 ,818
レスどうもです。
>>818 2でしょうか。DirectXの全画面表示中に最前面に文字を表示させる方法が
知りたいです。
3は何を言っているのか理解できていません。
GetGlyphOutlineでフォントイメージを取得して、自分で縁取り加工後、 サーフェイスに転送して結果のイメージを描画。
今日は凄く詳しい人、多いな・・・
823 :
816 :2007/09/05(水) 12:20:42
ありがとうございます。 これだけ答えをいただければ・・・、なんとかやってみます。
やばい、このスレは天才が集まる場所だったんですか!!
自演乙
826 :
デフォルトの名無しさん :2007/09/05(水) 13:35:31
元々、ここはwin32apiの質問箱だったわけだし、元の流れに戻ったと見るのが自然だよな。
フォームを持たず、テキストだけを最前面に描画する事の出来る APIはないでしょうか。
フォームって.NET? テキストを最前面に書くのは普通にデスクトップのDC取得すりゃいいだけだけど 消すのはその下のアプリの役目だよ。
今なら普通そういうことをしたきゃレイヤードウィンドウだろう
ドリームキャスト!
834 :
デフォルトの名無しさん :2007/09/05(水) 16:08:17
836 :
デフォルトの名無しさん :2007/09/05(水) 16:30:48
嫌ですよぉ
じゃあ自分で作ればいいだろ
嫌ですよぉ
>>835 使いたいんぢゃなくて作りたい
で、どうやっているのか知りたい
理解で切るできないにかかわらずどういう実装なのか知りたい
テーブル書き換えが一般的
841 :
デフォルトの名無しさん :2007/09/05(水) 18:32:35
そんなぁ
そういうのの作り方はこんな所で不特定多数に話せる内容じゃないんで無理 スパイウェアが作れてしまう
843 :
デフォルトの名無しさん :2007/09/05(水) 18:54:28
もういいよ!
timeGetTime()より精度の良い関数があれば教えてください。 お願いします。
知らないんだったらレスしないでよ!
お前のことだろ
timeGetDevCaps関数で、ハードウェアのタイマ精度を取得し、 timeBeginPeriod関数でTIMECAPS.wPeriodMinを設定し、timeGetTime関数の精度を上げる。 最後に精度を元に戻す為、 timeEndPeriod関数でTIMECAPS.wPeriodMinを設定し、精度を解除。
849 :
844 :2007/09/05(水) 19:31:07
パフォーマンスカウンタ最強説
パフォーマンスカウンタはバグ持ちの環境もあるから、なるべく控えたい。
パフォーマンスカウンタはポーリングするにはコストが高いって聞くけど ゲームで60FPSを安定させるには、やむをえない方法だったりするの?
スレッドの処理が回ってくるタイミングが揺らぐのは、 タイマーを高精度にしても何の解決にもならない。 電車の運行管理をコンマ何秒でやることに何の意味があるのかと。
何の解決にもなるだろ、どれだけの環境でawaitが実装されてると思ってるんだ
>>854 ミリセカンド単位でしかコントロールされていないスレッドに、
QueryPerformanceCounterで得られた高精度な値を使って何をするのか、
その解決方法を具体的に説明してくれ。
FPSの管理がなんでスレッドなんだ
メインスレッド無しでFPSを管理するの? プログラムはどうやって動くの?
>>856 スレッドを云々はいいから、高精度タイマーでFPSを安定させる具体的な解決方法をどうぞ。
面倒くさいから、グダグダ逃げ回るのだけは勘弁してくれ。
逃げ回ってるっておまえの理解が足らないだけだろ
>>859 で
>>854 の発言が何であるのか、見ていた人間には別のことを理解したはず。
出せ出せ言っても絶対に解決方法は提示されないという、
無駄にスレが伸びて住人からうざがられるパターンにはまったためこの話は終了。
何というか、もうどうしようもないな。
yaneurao先生の登場を待つしかないな
粘着するわりには決してぐぐったりはしない奴っているよな
863 :
デフォルトの名無しさん :2007/09/05(水) 21:27:50
>>816 今なら普通そういうことをしたきゃレイヤードウィンドウだろう
>>830 VistaでDWM制御下にあると、デスクトップDCに描画するとゲロ重なんで注意。
DWM環境だとレイヤードウィンドウが圧倒的に速い。
指定した絶対パスを起点として、指定した相対パスの絶対パスを得る方法はありますか? _fullpathだと、現在の位置からという条件があるので(かといって_chdirはしたくない)
パスを自前で解析ならAPIいらず
"f:.."とかとんでもない相対パスが来たらどうするの?
\\?\GROBALROOT\Device\Floppy1\うんこ
おそらくShellAPIのPathCombineが求めるものだろうね。
念のため、相対パス判定を入れておけばより安全かな。
TCHAR basedir[] = "C:\\a\\bb\\ccc\\dddd";
TCHAR rpath[] = "..\\..\\x\\yy\\zzz.txt";
TCHAR fullpath[MAX_PATH];
if (PathIsRelative(rpath)) {
PathCombine(fullpath, basedir, rpath);
}
else {
lstrcpy(fullpath, rpath);
}
ただ、ShellAPIは
>>868 のような一部の形式のパス名を受け入れず、
それが原因でMAX_PATHを超えるパス名を扱えないという問題がある。
それを気にしなければ上記でよいと思う。
870だけど説明が変だった。 ShellAPIは868のようなパスを受け入れないのが原因でなく、単純に設計が MAX_PATHを上限としているだけだな。
>>870 わざわざTCHAR使ってるのに与える参照はcharなのは何故?
2005とかだと汎用テキストマッピングは型宣言だけでいけるの?
TCHAR使う人ってM$製品しか使ったことないんかね。。。
>>872 意味はありません、ボケてただけです。
文字列定数は_T()でくくる必要があります。
>>873 あの、ここ、Win32APIスレ、です。
何、その、しゃべり方、は。
俺と、おまえと、大五郎。
晴れ、時々、殺人
いそのぉ、野球、やろうぜ
声が、遅れて、聞こえるよ
あれ(パクパク)、大変だ(パクパク) 、仕様が遅れて出てくるよ(パクパク)
882 :
デフォルトの名無しさん :2007/09/06(木) 03:44:03
末尾にドットの付いたファイル名を作成することは無理なんでしょうか?
>>840 先生、メモリ内容をみてみたところテーブル書き換えではないようです。
rohitabはドライバもあるようでなんか違うことしているようです。
>>841 おれのこころを描写するのやめてください。
>>842 そのような理由で話してもらえないのですか。
ここででているHookとかInjectionとかの話もスパイウェア関連の話だから嫌われるのですね。
>>843 おれのこころを描写するのやめてください。
というわけで
>>774 PLZ
>>852 描画タイミングなんてDirectGraphicsがやってくれたと思うが
家ゲのプログラムとPCゲーのプログラムは違う
>>885 PCはリフレッシュレートが60Hzとは限らないので、fpsが固定の場合は
VSYNC同期では不十分。
そもそも環境がマチマチなPCの世界でFPSを固定しようというのが間違いの始まり。 あくまで基準値にしかならないんだから、問題なのはタイマー云々ではなく、ずれた場合の辻褄の合わせ方。 そうなるともはやAPIではなくロジックの話になるので、完全にスレ違い。
>>884 対象プロセスが一個ならデバッガとしてプロセス生成するかアタッチするかして、
シングルステップ実行でeipを常に監視して、
eipがEXE以外の領域に移動したらその瞬間が外部関数呼び出し
ってのを思いついた
>>774 のツール試してないし、思いつきだからたぶんどっか思い違いで達成できないとおもうけど
>>887 fpsを固定するためのAPIについての話は、スレ違いではないと思うが。
fpsを固定することの是非について話のはスレ違いだと思うが、
そんな話をしているのは887ただ一人。
fpsを固定するAPIは存在しないでFA 次の質問どぞ〜
891 :
デフォルトの名無しさん :2007/09/06(木) 20:16:35
次の質問どぞ〜
FlashとかJavascriptとかjavaとか動画とか、Tridentに丸投げじゃないのか? なんでプニル固有のバグが生まれるのか、 プログラム詳しい奴、推測でもいいから教えてくれ
Sleipnirってタブの挙動がおかしいよね ナビゲーションロックしたままアプリ再起動するとロック解除できなくなるタブがある 個人的にはよく使う機能だからかなりうざい
>>893 プニル固有のバグとはたとえばどんなもの?
再現手順がわかれば多少推測しやすいんだが
俺もSleipnirの印象は良くないな。 あれを標準のブラウザとして設定していると、ShellExecuteに URL渡しても開けなくなったり。
ここで質問していいか悩んでいるのだが・・・ VS2005でVC++を利用し、ADOからデータベースにアクセスしようと思うが、 その手の質問はここ? それとも、COM系に質問するの? 知っている方、板への誘導をお願いします。
死ね
903 :
900 :2007/09/07(金) 00:47:42
悔しかったの?頭悪い奴の典型的な行動ですね。
(笑)
よく言われる
(笑)っていつの時代やねん
(笑)
fpsを固定するにはどうしたらいいですか?
914 :
デフォルトの名無しさん :2007/09/07(金) 03:07:16
ヘイローとかどおよ?
ああああああああ
>>884 >>888 横槍すまん つくってみたけど遅すぎになった
WaitForDebugEventで待機してハードウェアブレイクポイントで順に実行してEIPみて
CALLのとび先を判定する実装
他に面白い実装案ないですか
文字コードの変換でConvertINetStringが使えるとわかったんですが、 C言語でどのように使うのいかがわかりません。 誰か簡単なサンプルでいいので教えてくれませんか? また、サンプルが載っているサイトを教えてくれませんか?
ググるといっぱい出てくるけど、どれもだめだった?
920 :
918 :2007/09/07(金) 12:53:33
変数の説明みたいなのはいくつか見つけられたんですが、 実際どのように使用するかみたいなのは見つけられなくて。 具体的なサンプルというか使用方法が知りたいんです。
ググってすぐにサンプル見つかるし実際試せてるけど、何がわからんのか
>>916 トラップしたいDLLのコード領域の実行許可ビットを落としておいて、
コールされたときの例外をトラップしてログを出力とか。
シンプルでしょ。
>>922 シンプルだ。デバッガのほうがSEHより優先されるのか。
同じことを意味しまるです。
アタッチしておけばDLLロードのタイミングもデバッガに通知できるから
結構キレイな実装かもね
>>916 やっぱりそうかー 時間のあるときに書いてみようかと思ったんだが
ともあれ報告サンクス
CreateFont でフォントに Wingdings を指定して画面やプリンタに出したいのですが; でません。どうやるとでるのでしょうか?
何をどうやってみたのか、それでどういう結果になったのか、書かない奴が多いな
何をどうやって:CreateFontでWindingsを指定 どういう結果:でません
そりゃぁCreateFontでWindingsを指定しただけじゃ、何も描画してないんだから出るわけない。 つまんないよ。
はなから回答は期待していない。 やっぱ自分でやったことなくても、文句言う素人だけか。
933 :
デフォルトの名無しさん :2007/09/08(土) 01:45:45
負け犬乙
>>932 よく分かったな
それが世の真理だ
ついでにいうと句点の位置がずれてる
>>934 どこがずれてる?
正しい位置をいってごらん?
>>932 お前の質問は1+1が分かりません、どうやったらできるでしょうかと一緒だ。
知らないんだったらレスしないで!!
____ /____\ /ィ赱、i_i_r赱ミ\ / ̄ ̄ ̄ィ'。_。ヽ ̄ ̄\ | / _lj_ } | しないで! \ 、{ ^' ='= '^' / l ヽ. `""´ ノ l、 _, ィ{ `' ― '´ }ヽ、
どちら様でしょうか?
質問者様です。
何で幼稚園児並にあほなの?
ママの愛情が足りなかったから
新生児の俺が幼稚園児並って天才じゃね
ふ〜ん
SYMBOL_CHARSETは指定してるか?
ママの愛情知らないんだったらレスしないで!!
ママの愛情教えて下さい(;ω;)
ママの愛情教えてくれないんだったらレスしないで!!
>>926 文字集合の指定が間違っているなんてことない?
Windgdingsってシンボルフォントのような気がするんだけど。
951 :
デフォルトの名無しさん :2007/09/08(土) 09:41:39
ままの愛情は歌舞伎町にあるらしい。いってみる
MSDNだけ〜
伝説のレスとしてテンプレにw
185 デフォルトの名無しさん 2007/08/20(月) 16:52:52
>>184 知らないならレスしないで下さい!ウザいだけです!
どう見ても騙りです。ありがたくない。
へぇ、アンタもママって言うんだ
増田ゆり子風なママンがいればなぁ
何を?
961 :
958 :2007/09/08(土) 21:44:01
失望した
>>960 やっぱ、立てた奴がテンプレ追加せんとなw
964 :
960 :2007/09/08(土) 21:59:54
失態だ みんなスマン テンプレ含め、立て終わるまでURL貼っちゃダメだな
>>964 次回と、彼女の前で失敗しなければいいんじゃない?
元気出せお
最近の1000行くまで誰も立てない現状から観ればしょうがないよ とは思ってないけどな とりあえず乙
次スレの最初からクライマックス感がいいかも
SEだが、徹夜なんてしたことない。
彼女なんて居ない
デスマなんて都市伝説
自称SE多いからなぁ
w
975 :
960 :2007/09/09(日) 14:34:33
960はワシが育てた
./\___/ヽ / _ノ||||ヽ、_ \ みんな、・・・・・・次スレの立ち上げ失敗して / o゚((●)) ((●))゚o \ ごめんなさいだお・・・・・ | 三 (__人__) 三 | \ ` ⌒´ / ./\___/ヽ / _ノ||||ヽ、_ \ もう・・・もうしないから許してほしいんだお・・・・ / o゚⌒ ⌒゚o \ | 三 (__人__) 三 | \ ` ⌒´ / ./\___/ヽ / ⌒ |||| ⌒ \ / ( ○)三(○) \ ウソに決まってるお | 三 ⌒(__人__)⌒三 | 全部演出なんだお! \ r┬-| / `ー'´
埋め WaitForSingleObject(スレ990, INFINITE); CreateThread(NULL, 0, 次スレ立て, 0, 0, &新スレURL);
>>978 別スレッドで回さないとスレ立てしかできないぞ
日記帳として使わせてもらう とりあえず腹減ったから、冷凍えびピラフをレンジでチンしてくる
させない
ピラフ食べ終わった ごちそうさま 冷凍食品っておいしいね
980の内部関数SeMicrowaveAccessをフックして常にFALSE返すようにした もう冷凍食品は使えませんです。。。
次食べるのは再起動後だから問題無い
>>982 ほどほどにな。
中国産の素材だからね。
こういうとこで、足をひっぱるシナには呆れる。
冷凍食品の裏に 販売者って書いてあるものと 製造者って書いてあるものがあるんだが 販売者って書いてある方は中国製なんだろうか…
エビピラフに本当にエビが入ってると思うのは素人
プログラムとは無関係な話になったときだけ喜々として語り出す馬鹿共は、 いい加減何とかならいのか?
次スレのほうが進みつつあるので、埋めているだけ でも、日記として1日分もつけられない予感w
カト吉の冷凍うどんはうまい! あれって全国展開してるんだろうか?
>>989 まーおまえも、言っても資本は体だ。
体調管理には気をつけろよ
Win32API質問箱から、過労死は出したくないよな
うめうめ
うm
996 :
デフォルトの名無しさん :2007/09/09(日) 23:39:36
糞スレ埋め
火の国熊本とんこつラーメンが食べたいんだけど、 どこにも売ってない!
おめこ
999 :
デフォルトの名無しさん :2007/09/09(日) 23:40:27
とんこつといえば久留米だろうが
1000 :
デフォルトの名無しさん :2007/09/09(日) 23:41:02
博多も可
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。