1 :
デフォルトの名無しさん :
2008/04/02(水) 10:21:31
4 :
デフォルトの名無しさん :2008/04/02(水) 10:22:49
5 :
デフォルトの名無しさん :2008/04/02(水) 10:23:03
6 :
デフォルトの名無しさん :2008/04/02(水) 10:23:27
特定のアプリからファイルを開くには、どうすればいい? ShellExecuteExだと、ファイルに関連付けられたアプリで起動するし。
特定のアプリのコマンドライン引数にファイル名を渡す
>>7 「開く」じゃ曖昧だよ。
何がしたいのかを書いたほうがいい。
10 :
デフォルトの名無しさん :2008/04/02(水) 19:36:38
既に取得済みのウィンドウハンドルでそのハンドル(ウィンドウ)が生きてるか死んでるかを 識別するAPIを教えてください
生きているの定義による。 IsWindowとかIsHungAppWindowとか。
> 997 名前:デフォルトの名無しさん[sage] 投稿日:2008/04/02(水) 15:07:18 > カテゴリ分けしてある API のヘルプが欲しいよ MSDNライブラリで、それなりにカテゴリ分けされてるが、それでは不十分?
14 :
デフォルトの名無しさん :2008/04/02(水) 19:56:07
>>10-11 ありがとうございます。
ばっちりですほんとうにありがとうございますた。
たすかりました。
いやもうほんとうに。
GetDC()やBitBlt()などを使ったよくあるウィンドウのSSを撮るプログラムを作ったのですが Vistaのエアロ環境で3Dゲームなどのウィンドウを撮ると 真っ黒な画面になります。 GetDC()にNULLを指定して撮ると3Dゲームのウィンドウが 最初に撮ったSSの画面のままで固定され同じものが撮れてしまいます。 どなたか解決法わかりませんでしょうか?
16 :
デフォルトの名無しさん :2008/04/03(木) 00:49:22
だってVistaだしw
>>15 DWMサムネイルAPI使えばいい気がする。
18 :
デフォルトの名無しさん :2008/04/03(木) 12:52:25
GetCurrentProcessのウィンドウハンドル版みたいなのは無いでしょうか。 自分自身のウィンドウハンドルを取得したいのですが。。
その「自分自身」をどうやって見つけてくるんだよ
>>19 えっとdllを他プロセスにフックして
dllからフック先プロセスのウィンドウハンドルを取得したいのです。
21 :
デフォルトの名無しさん :2008/04/03(木) 13:14:07
FindWindowとかじゃだめなのかい?
ウィンドウがたくさんあったらどうするんだろう・・・
23 :
デフォルトの名無しさん :2008/04/03(木) 13:23:02
能書きはいいからさっさと教えろ
またゲームチートか
>>21 GetWindowTextでタイトルは取得できますが
ウィンドウクラス名の取得方法がわからなくて。。(ノ_・、)
EnumWindowsすればいいジャマイカ
GetClassName
おまえらほんと役立たずだな
お褒めに預かり極悦至極
もうこねーよ! ばーか
31 :
15 :2008/04/03(木) 15:52:11
"GetWindowDC(GetDesktopWindow())"でやったら出来ました。
チート・ウイルス・キーロガー・スパイウェア こんなのばっかだな あれか。普通のソフトはもうみんな.NETなんかで作っちゃうから ド初心者かフック関係の質問しか来ないのな
33 :
デフォルトの名無しさん :2008/04/03(木) 16:59:24
とりあえず荒らしが2〜3名いるらしいというのは判別できた
と、荒らしが申しております
WindowsのAPI(ウインドウとかコントロールの扱いやGDI)は一通り覚えたので、DirectXも触ってみたいんですが、 DirectXも他のWin32APIと同じ感じですか?もっと複雑に、もしかしたらクラスとか使ったりしますか?
俄然使う
>>37 Windowsとどら焼きぐらい違う。
いや、そこまで違わんか。タイヤキとタイヤぐらいか?
まあそれはともかく、別物だよ。
>>20 ウィンドウを作ってるのはプロセスじゃなくスレッド。
スレッドはウィンドウを作る必要はない。だから
プロセスがウィンドウを持ってることを前提にするのが間違ってる。
逆にウィンドウを作ったスレッドやプロセスを調べる関数は
当然あるので(必ず存在するからね)、そっちで調べるのが良い。
質問させてください。 WS_OVERRAPPEDWINDOWなどのスタイルで、タイトルバーのあるウィンドウを作っていて、 メッセージループでgetTimeGetを使うことでタイマーを実装しています。 タイトルバーをクリックしながらウィンドウを移動していると、 メッセージループ内の処理が行われないといった現象を回避する方法ってありますか? 具体的には、↓のようなプログラムです startTime=timeGetTime(); while(msg.message!=QUIT){ if( PeekMessage (&msg,NULL,0,0,PM_NOREMOVE) ) { if( !GetMessage (&msg,NULL,0,0) ) { msg.message = WM_QUIT; } else {DispatchMessage( &msg );} } else{ if( (timeGetTime()-startTime)>3000 ){ MessageBox(hwnd,"ココ","caption",MB_OK); //移動が終わるまで //これが出力されない break; } Sleep(5); } }
getTimeGetに噴いた
シンディローパーの曲のようだ
43 :
40 :2008/04/03(木) 22:48:29
timeGetTimeでした>< はずかしぃ・・
DrawText → DrawTextEx なのに、TextOut → ExtTextOut 返値が BOOL で GetLastError かと思ったら、レジストリ系は返値が LONG、COM 系は HRESULT Kernel ハンドルの破棄は CloseHandle なのに User ハンドルは Destroy〜、GDI ハンドルは DeleteObject と名称がバラバラ しかも Kernel 系でも FindFirstFile だけは FindClose だったり WINMM 系は関数名が小文字で始まっていたり・・・ なんでこんなに統一性が無いのか気になって仕方がないんだけど知ってる人いる?
16bit時代からの互換性を考慮したから
>>32 その手のプログラムを作ること自体の是非はともかくとして、
その手のプログラムを作るなら人に聞かずにヤレと思うよ。
>>37 DirectXはCOM「もどき」で、MSがラッパーを用意してたりするし、
COMといってもオマジナイや定型文だと思ってもいいくらい。
>>44 直交性がないのはアレだが、混同しにくいという利点もあるぞ。
このスレはシステムプログラミングに明るい人が少ないか、 極度にネガティブなイメージを持ってる人が多いらしいので聞くだけ無駄なことが多い フックとかマルウェア技術に関してはぐぐーる先生のほうがよっぽど使える
>>40 それは現象ではなく仕様。
ウィンドウの移動中に、ユーザの他の操作を受付けるのはナンセンスだし、
基本は移動枠が出るだけで描画は一切行わないので、メッセージポンプを回す必要もない。
逆に、回してしまったら変なことになるぞ。
ウィンドウの移動を自前で処理すりゃ
メッセージポンプを回すこともできるが、
そんな気持ち悪いことをするのもなぁ。
>>48 マルウェア作成技術にはネガティブなイメージを持って当然だろ。
ちなみに、
悪さするプログラムを作った人間が逮捕され、
2chのスレでやり方を教えてもらったと言ったら、
教えたほうは幇助で逮捕されかねんぞ。
他プロセスにdllを注入して〜とかそういうのが多すぎ 質問するなとは言わんがスレの半分ぐらいがそんなのばっかりなんてどう考えても異常だろ 同じ奴が何度も質問してるのか?
悪さするプログラムを作っても一切に罪には問われません
>マルウェア作成技術にはネガティブなイメージを持って当然だろ。 そーなのかー その辺に自分とほかとの意識の違いがあるらしいことは理解した (個人的には、いろんなサンプルコード片を書いたり教えたりするけど、 それを第三者がどういう目的で利用しようが関係ないと思ってる) 「既出杉。調べれば判るだろ」ってのは同意だけどね
めんどくせぇからwizard bibleでも見てろって感じだな
ウザい頻出ネタまとめ 問) 他プロセスのコマンドライン文字列を取得するにはどうすればいいですか? 答) 次のどちらかで取得できる。 ・CreateRemoteThreadでGetCommandLineを送る。 ・NtQueryInformationProcessでPEBからReadProcessMemoryする。 問) フックしたプロセスでメインウィンドウのHWNDを取得するにはどうすればいいですか? 答) そのものズバリな方法は無い。 ウィンドウクラス名が分かっている時はFindWindow(Ex)する。 分かっていない時はEnumWindowsとGetWindowThreadProcessIdを組み合わせる。 問) 特定のプロセスの音量を制御するにはどうすればいいですか? 答) Vista買え。
ochinchin.h を omanko.cpp に include したのに童貞のままです。 どうしたらいいですか。
はいはいよかったですね
>>57 先っちょだけだからです!
じゃなくて、その ochinchin.h はあなたの物ではありません
やり方が間違っている。 まずお前のイチモツをDLL化する。ochinchin.dll そしてomanko.exeのプロセスにDLLインジェクションでochinchin.dllを挿入すればいい。
>>52 周囲の人間に聞いても教えてもらえない or 聞くのが憚られる
匿名ではない掲示板で聞いても教えてもらえない or 聞くのが憚られる
それで2chのこのスレに殺到する
ってことかもしれんな。
>>57 のことかーーーーー!!!
ってか親切に解説してくれているサイトを見るの方が
関連情報も一箇所にまとまってるから
よっぽど早く目的達成できるのにな
>>57-60 質問して断られて逆恨みして粘着してる人間がいるんだな。
>>56 こういうのはどうだ?
Q. 他プロセスのコマンドライン文字列を取得するにはどうすればいいですか?
A. 他プロセスにコマンドライン文字列を教えるためのインタフェースを設ける。
質問の主が後ろめたいことをやろうとしているのではなく、
複数のプロセスで協調動作するプログラムを書いているという仮定をしてさ。
他のプロセスが他人の書いたプログラムだって言うのなら、
その他のプロセスを自分でCreateProcessして、
その時のコマンドラインを覚えとけ、と。
>>63 うしろめたいってか、UNIX系だと簡単にコマンドライン取れるんじゃね。
よく知らんけど。
だったらUNIX系を使っとけ
Win32サブシステムではなくPOSIXサブシステムを使えばいいんじゃね? Interixの会社をマイクロソフトが買収してSFUとして無料で提供してるのを使えばいいんじゃね?
1ヶ月ぐらい前にウイルス作成方法を公開してた奴が逮捕されたとかいうニュースを見た気がする
裁判で有罪になるかどうかは別として、 自力で調べられないようなタイプのハッカーもどきは、 十中八九、簡単に足が付くようなやり方をするから、 あんまり関わらないほうがいい。
69 :
デフォルトの名無しさん :2008/04/04(金) 10:21:37
iniファイルを扱いたいのですけど WritePrivateProfileSectionつかうと同じセクションの内容を上書きしてしまいますよね 追加はどうすればいいのでしょうか
>>69 追加というのは、具体的に、どういうこと?
同一セクション内に同一のキーはダメだよ?
71 :
デフォルトの名無しさん :2008/04/04(金) 10:28:55
>>70 別キーを同じセクションに保存できないのです
説明下手でスマン
>>67 ウィルス作成では現行の法運用では罪を問えなかったので
著作権違反の疑いで逮捕した
>>71 WritePrivateProfileStringな
74 :
デフォルトの名無しさん :2008/04/04(金) 10:39:17
WritePrivateProfileSection > 指定された .ini ファイル(初期化ファイル)の、指定されたセクション内の > 既存のキー名と値を削除し、 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > 指定されたキーとその値のペアを書き込みます。
76 :
デフォルトの名無しさん :2008/04/04(金) 11:34:43
WinXPのタスクバーの自分のアプリ部分の領域に描画することは可能ですか? プログレスバーのように進捗を表示したりといった感じです。
タイトルのこと?アイコンのこと? まあどっちも可能
78 :
デフォルトの名無しさん :2008/04/04(金) 11:48:49
両方です。その方法を教えてください。
UNIXでも他プロセスのコマンドラインを取るのは素直にはできへんよ。
タスクバーの奴もボタンなわけだから フックで入って描画ルーチンをのっとる 下手くそなフックするとExplorerが落ちまくりになるけどNe!
タスクバーのフックならTClockのソースでも見るがよろし
Jane Styleは空のDLLを注入しただけで落ちるんだけどw 中でとんでもない事をしてそうで気になる
psでも引数が見えないのはある。 例えばsendmailとか。
forkで親はとっくにいないとかじゃなくて?
>>80-81 タスクバーなんてOSのバージョンが上がる度に構造が変わるような物を安易にフックすべきでは無かろう
進捗状況を出したいならメインウィンドウのタイトルを"10% 完了"みたいに変えればいい
87 :
40 :2008/04/04(金) 19:52:31
>>49 なるほど。
そういった仕様ということはあきらめるしかないですね。
参考になりました、ありがとうございます!
ISAPI用のDLLの中でファイルの属性を変更するために SetFileAttributes()を使いました。 その際、windows2000server、IIS5環境では問題なく動作したのですが windows2003、IIS6環境ではSetFileAttributes()が失敗します。 原因としてはどのようなことが考えられるでしょうか
途中で送信してしまいました。 また、代用となる関数、方法などありましたら教えてください。
GetLastErrorの戻り値は?
十中八九、アクセス権の問題だと思う。
92 :
デフォルトの名無しさん :2008/04/04(金) 20:46:58
EM_GETLINEを送ってもバッファに文字列が格納されないんですが、 int iLine = 1; char buf[256]={0}; *(WORD *)buf = (WORD)sizeof(buf); SendDlgItemMessage(hWnd,IDCEDIT,EM_GETLINE,(WPARAM)iLine,(LPARAM)buf);
SendDlgItemMessageの戻り値は?
94 :
デフォルトの名無しさん :2008/04/04(金) 21:36:47
>>93 戻り値はどうやって取得すればいいんですかね?
LRESULT er;
er = Send(ry;
こうですか?
MSDN見るなりググるなりヘッダファイルみるなりするナリよ
97 :
デフォルトの名無しさん :2008/04/04(金) 22:12:37
99 :
デフォルトの名無しさん :2008/04/04(金) 22:50:28
>>98 WPARAMで行を指定
LPARAMでバッファを指定
バッファの先頭2byteはバッファサイズを入れておく
足りませんか?
1. SendDlgItemMessageがSendDlgItemMessageW 2. 対象Editの2行目に1文字も無い
>>86 どうせアイコンは小さいのだから、
あらかじめアイコンを5パターンくらい用意して、
Shell_NotifyIcon で切り換えればいいと思う。
それはタスクトレイの話じゃないのか? タスクトレイなら動的にアイコンを描画してアイコン切り替えればいいだけだぜ。
タスクバー右クリック->ツールバー で一覧が出てくる WMPやらGoogleデスクトップ検索みたいに表示したいってことか? 俺はやり方知らないけどググれば出てきそう
>>102 × タスクトレイ
○ 通知領域
Win32スレでそういう間違った名称使うのやめとけ
メディアプレイヤーのProgIDとインタフェイス名とID(IID_Xxxxみたいなの)教えてください。 CreateWindowとAtlAxGetControlを利用したいのです。 Win32じゃないかもしれないけどお願いします。
>>105 OLE/COM Object Viewer
帰れw
108 :
デフォルトの名無しさん :2008/04/05(土) 07:09:53
モマエら よその国の人はどんどん進歩しているのに、日本人同士で足引っ張り合って 自滅するかも知れないと思ったことはないのか。 攻める先を取り違えるな。
>>104 つ Microsoft.com Japan サイトの検索
そこまで厳密にしなくてもいいんじゃね?と思った。
この件で誰を攻めるとか考えてる時点で終わりだ。 そんなのは無駄な時間だ。
アイコンが並んでいる部分はタスクバー上のタスクトレイの中の通知領域だよ XPではWindows9xの頃とタスクバーの実装が変わっていてタスクトレイと呼べるのか微妙だけど 互換性の為かShell_TrayWndというクラスのWindowは存在している
トレイはTrayNotifyWndの方だな このWindow構成を見るとタスクトレイというのは本来はタスクバー自体の事なのかもしれないな
タスクトレイは時計を含む領域だけど、 通知領域は時計は含まないってこと?
114 :
デフォルトの名無しさん :2008/04/05(土) 11:31:27
115 :
デフォルトの名無しさん :2008/04/05(土) 11:34:10
このスレて寒いレスするバカが常駐してるよな
>>116 痛い質問して、期待した回答が得られなくて、逆恨み粘着だろうな。
>>118 お前みたいなスタンスの人は、
マイクロソフトの有償サポートを使えよ。
何でここの人はやさしさが無いんだろうな。ゆとりがたりないのか?
俺は普通に答え取るがな(´・ω・`)
>>121 優しさがないのは、約一名の粘着して荒らしている人だけ。
なんで仲良くできないの!あなたたちは!
あと、自分を正当化ばかりしてる人ってまぁ、リアルでも2chでも多いよな。 自信があるのはいいことだけどさ。
>>16 のようなレスにいつまでも釣られるお前らの責任でもあるんだよ
2chのしきたりとか分かってない
言いたい事も言えないこんな世の中じゃ(ry
POISON!
>>108 モマエら
よその星の人はどんどん進歩しているのに、地球人同士で足引っ張り合って
自滅するかも知れないと思ったことはないのか。
攻める先を取り違えるな。
防衛省もUFO対策を論じるくらいだからやばいな
中華対策はしないのにな
スレを荒らすのヤメロ。 ちょっと自重しろ。
エクスプローラーのフォルダアイコンってどこから取ってくればええんでしょうか。 2kとxpで違ったりしますか?
>>133 マイクロソフトに「アイコンください」と言えばもらえるよ。
135 :
デフォルトの名無しさん :2008/04/05(土) 17:22:33
このスレの住人なら知っていますね、あの糞開発ツールのことを ・自分のプログラムのバグなのかコンパイラのバグなのかわからない ・他の仕事に応用できない糞開発ツールの独自世界を必死に学習している ・テキストエディタで書いたほうが効率的なのに糞UIツールを懸命に使っている ・糞開発ツールを批判すると「性格が悪いから糞ツールを批判するんだ」と言われる 糞だけど、政治的な理由で無理やり使わされているんですよね。 もう、あんな厨の作った糞ツールを我慢して使うのはやめましょう。 ・糞開発ツールを部下に押し付ける上司の命令は無視しましょう。 上司は糞開発ツールが使われる実績を作ることであの会社のごきげんをとっているのです。 ・糞開発ツールを使わせる上司の下では働けません、と上司の上司に直訴しましょう。 ・あの糞開発ツール提供会社には「おたくの糞開発ツールは話にならない」と突き放しましょう。 バグレポートなどしてはいけません。改善要求などもってのほかです。 あの会社はあなたたちのことをテスター/モルモットとしか思っていません。 ・あの会議で「糞開発ツールを使ったら生産性がxx%アップしました」 なんて話が出たら力強く机を叩き、会議室を出ましょう。 あの人たちは糞開発ツールをマンセーすることで立場を確保しているのです。 糞な開発ツールを糞だと言える、そんな当たり前の環境をみんなの力で取り戻しましょう。
>>106 そういえばそんなのあったの思い出した
さんくす
MCI_OPEN_PARMS mop; case WM_CREATE: mop = MCIOPEN(filename , MCI_DEVTYPE_SEQUENCER, hWnd); return 0; case WM_KEYDOWN: if(wp == VK_UP) mciSendCommand(mop.wDeviceID , MCI_PLAY , MCI_NOTIFY , (DWORD)&mop); else mciSendCommand(mop.wDeviceID , MCI_STOP , 0 , 0); return 0; case MM_MCINOTIFY: mciSendCommand(mop.wDeviceID , MCI_STOP , 0 , 0); mciSendCommand(mop.wDeviceID,MCI_SEEK,MCI_SEEK_TO_START,0); mciSendCommand(mop.wDeviceID , MCI_PLAY , MCI_NOTIFY , (DWORD)&mop); return 0; } 上記のような、midiファイルを↑キーで再生、他のキーで停止、曲の最後まで行ったらまた初めからループするプログラムを作ったのですが、 ↑以外のキーを押して曲を止めても、勝手に曲の初めから流れ始めます。 MCI_PLAYのMCI_NOTIFYを外してみると曲が止まったままにすることが出来たのですが、それだとループになりません。 ループするようにしたmidiを、停止することはできないのでしょうか?
>>138 MM_MCINOTIFYのwParam見れ
>>139 if(wp == MCI_NOTIFY_SUCCESSFUL) で、できました。
ありがとう。
>>139 を見て MM_MCINOTIFY wparam でググったら出てきましたが、
こういう〜に〜が格納されるという情報はどこから仕入れているんですか?
普通はMSDNだろう。 時々ウソ書いてるのと、オンライン版は重たいのが難点だが。
ありがとうございました。 英語勉強しないと;
ツールバーのボタンをクリックするごとに、そのボタンのアイコン画像が変化するようにしたいのです。 ツールバーを作成するときに // hwndTB : ツールバーウィンドウ HBITMAP hBMP = ::LoadBitmap(::GetModuleHandle(NULL), MAKEINTRESOURCE(ID_TOOLBARBMP)); HIMAGELIST hIL = ImageList_Create(16, 16, ILC_COLOR32 | ILC_MASK, 0, NUM_TBICONS); ImageList_AddMasked(hIL, hBMP, RGB(0, 255, 0)); ::SendMessage(hwndTB, TB_SETBITMAPSIZE, 0, MAKELONG(16, 16)); ::SendMessage(hwndTB, TB_SETIMAGELIST, NUM_TBICONS, (LPARAM)hIL); のようにして、マスクつきの画像を使うことにしていまして クリックのメッセージが飛んできたときに // hwndTB : ツールバーウィンドウ // iIcon : アイコンの番号 ::SendMessage(hwndTB, TB_CHANGEBITMAP, ID_TBBUTTON1, MAKELPARAM(iIcon, 0)); を呼んでアイコンを変更しています。 XP ではこれで問題ないのですが、 Vista では、前の画像が消えなくて、その上に新しい画像を重ねたような表示になります。 (透過マスク付きなので、前の画像が上塗りされない) 何か使い方を間違えているのでしょうか?
VC6で自分のプログラムが組み込んだコンポーネントにキー入力を渡したくて いろいろ試行錯誤してまつ。BasicでのSendKey的なイメージ。 ActiveXコントロールにtranslateAccellatorのメソッドがあったので、 以下のようなMSG構造体を作って引数として渡す方法で実験してみた。 message <= WM_KEYDOWN wparam <= VK_RIGHT するとActiveX Control側では、キーボードの現在の修飾キー状態を読み取ってしまい、 コントロールキーが押されてると、Ctrl+右ボタンになってしまう。 現在の修飾キーの状態にかかわらず、ActiveXに「右ボタン」だけを渡すには どうすればいいですか?
SendInputでも使えば
147 :
デフォルトの名無しさん :2008/04/06(日) 13:20:24
CreateFileの最後の引数って(別に指定する必要が無い場合)NULLを指定するの?それともINVALID_HANDLE_VALUE??
なんでNULL(0)とINVALID_HANDLE_VALUE(-1)があるの?
MSの開発者がトンマか、喧嘩してたか、ハンドル0が有効な場合があるか、じゃね?
無効な値が NULL か INVALID_HANDLE_VALUE かで型名を変えればいいのに。 同じ型に別名与えるだけでいいんだからさ。
Win32とかMFCって互換性に縛られすぎてて汚い .NETFrameworkのクラスライブラリはVB6のソレを焼直した感があってこれまた中途半端 MSはもっと直感的で分かりやすく作れないものなの?
1からクリーンに作って普及したものってあまり聞かない気がする。
WPFはそこそこ
>>153 どっちも CloseHandle でいいじゃないか
WINAPI と APIENTRY と CALLBACK が同じものだったりする感じで。
PASCALは
Vistaのソースコードゲットした すげーでけーよw
そういえばHalfLife2のソースどこいったっけ・・
俺が持ってる
俺も預かってやってる
XPとVistaのソースコードを手に入れたので、試しにXPにAeroGlassを移植してみた俺が来ましたよ
一人で移植できるような規模なのか Microsoftは五年かかったのにな
>>163 ならVistaのDirectSound HALを復活させられるに違いない。
とりあえずEAX2.0までのエミュレーションコードも入れといてね。
ぶっちゃけソースほしいわ ReactOSとwineとカーネルデバッガから辿るのは結構しんどい
デバッグシンボルを落としてきてdumpbin /disasmでリバースエンジニアリングすればいい ぶっちゃけこれで十分
フィルタドライバ作ったことあるひとがいれば教えて欲しいんだけど、 標準で定義されているハード情報取得するときのコントロールコード をDeviceIoContorol()にわたして、そのときに返ってくる値を フィルタドライバのなかでうその値に変換して戻せる?
日本語でおk
リバースエンジニアといえば XP の CommandLineToArgvW は argv[argc] に NULL を格納しようとしてし忘れている感じがした記憶がある。
>>170 それはきっと前世の記憶だ。さぁ、今すぐMSに行ってバージョンアップしてきなさい。
>>170 2000のやつも忘れてた気がする
まあCランタイムの__argc/__targvを使うかUnderTheHoodのやつからパクってくればいいだろう
俺の場合リバースエンジニアして非公開APIを使いまくっていたソフトが
Vistaになって大多数の非公開APIが廃止されたせいでエラーが出て起動しなくなってて泣いた
そういうことになるから非公開なんじゃないのかw
>>146 即レスどうもありがとう!徹夜プログラムで確認中に寝落ちしますた。
でうまくいかなくてまだ確認中なんだけど、sendInputは、TranslateAccellalatorと違って、
送り先のコンポーネント(hWndなど)を指定することができない。これが原因と関係するのかなあと。
やっぱりWM_KEYDOWNのMSG構造体を作る当初方針でがんばるのが必要なのかな。
>>173 だってさ、95〜XPまで問題なく使えたんだぜ? いきなり廃止するとは思わないじゃない
でも互換モードでXPSP2にすると普通に動くあたりがMSらしい
きっと古いMS製品も動かなかったのだろうw
シンボル取ってきて見てみたらAPIの前にRETIRED_とか付いててワロタ
互換モードでやることの中には、古いファイルを使うなんてこともなかったっけ?
>>175 洒落が聞いてるなw
Vistaにするにあたって、整理したのかねぇ。
で、古い非公開APIは別の所にまとめたとか。
そういうスーパーハッカーみたいな技術はどうすればつくんですか
DLLを覗けばいいんじゃね
>>174 自己レスです。送り先指定がないので自アプリのトップへ送ると固定されてるのかなと思ってたけど
考えてみたら、XKeymacsみたく、外部アプリへキーボード入力を送り込むアプリもあるので、
そういう制限はないはず。なのでよくわからんが、Xkeymacsのソースを解析中。
そもそも単にキーボードカスタマイズの自由度を広げるためにやってたんだが、深みにはまりそうな予感してきたw
>>180 だれも気にしてないと思うけど、知識共有になるかもなので、うまくいったコードおば。
void Hander_For_Ctrl_F() {
MSG oMsg = { m_hWndObj, WM_KEYDOWN, VK_RIGHT, 0, 0, 0 };
BYTE cKeyStates0[ 256 ], cKeyStates[ 256 ];
ZeroMemory( (void *)cKeyStates0, 256 );
GetKeyboardState( cKeyStates );
SetKeyboardState( cKeyStates0 );
m_pAxObj->TranslateAccelerator( &oMsg ); <= 修飾なし右ボタンをActiveXへ
SetKeyboardState( cKeyStates );
}
ActiveXにそれ用のコマンドがなかったので、偽装キー入力で対応したんだが、
キーボードのEmuは奥が深い…。というか泥臭い。なんかあとからバグりそうねw
>>178 デペンデンシー・ウォーカー眺めてると楽しいよ。
指定のウィンドウにWM_DROPFILESを投げるとき、 DROPFILES構造体のために確保した領域は 投げてからすぐ解放してしまっていいのでしょうか? サンプルを探したら、しているものといないものがあって 判断に迷います。
WM_DROPFILESそういう使い方をするもんではない 思うに、COMのOLED&Dと勘違いしてないか?
>184 では、ウィンドウにファイルをドロップするには何のメッセージを使えばいいのでしょうか?
>>183 別のプロセスに送るなら、すぐに解放しても構わないはず。
>>184 そういう使い方"も"出来る訳だが
知らないのか?
>>183 対象アプリがDragFinishで開放するからいらないんじゃないの?
知らないならレスしないでください
知ったか厨うぜえ 勘違いしてるのはお前だろw
誰が誰に言ってるのかも書いてクレヨン
とにかく知らないクズはレスしないでくださいよ。うざい
お前らレスアンカーぐらいつけろ
193 :
デフォルトの名無しさん :2008/04/07(月) 15:20:28
だから知らないならレスするなよクズ
197 :
デフォルトの名無しさん :2008/04/07(月) 15:29:49
VistaでもWin16アプリって動くの?
オマエモナー
これまた懐かしい
(・∀・)ジサクジエンデシタ
もう、ぬるぽ
わっしょいわっしょい
206 :
デフォルトの名無しさん :2008/04/07(月) 17:51:02
ファイル又はメモリ内のデータを圧縮するAPIと解除するAPIを教えてください
zlib
208 :
デフォルトの名無しさん :2008/04/07(月) 18:54:51
cabinet.dllの簡単な使い方を教えてくださいよ
知らないならレスしないでください に一致する日本語のページ 約 141,000 件中 1 - 100 件目 (0.69 秒)
>>206 RtlCompressBuffer / RtlDecompressBuffer
211 :
デフォルトの名無しさん :2008/04/07(月) 19:14:15
>>209 お前
>>184 だろ
知らない癖に主観で嘘を書いたら叩かれて当然
そんな当然の事も分からず被害者ヅラするぐらいなら最初から書くな
212 :
デフォルトの名無しさん :2008/04/07(月) 19:16:36
>>210 すんません、それぐぐっても悲しいくらいにヒットしないんですが
それって簡単なんですか?
214 :
デフォルトの名無しさん :2008/04/07(月) 19:33:02
>>213 あ、これは失礼しますた。
WEB全体からぐぐるとある程度でてきました。
>>214 ∧∧
ヽ(・ω・)ノ ズコー
\( \ ノ
、ハ,、  ̄
 ̄
つ Spy++
>>217 どうもありがとうございます。
その発想はありませんでした。
Windowsプログラミング用にtypedefしたデータ型の変数を扱うときは Cの標準ライブラリを使うかで悩んだりするけど、他の人はどうしてる のかな。 例えばWindowsプログラムには、文字列用にいろいろなtypedefした型が あるけど、実際には同じくcharの配列だしsprintfとかstrlenとかも使え るだろうが、それは反則とみなすのか。 wspritnfとかlstrlenのようにWindows用の関数があればいいけど、それ がないやつは困りそうだ。あったとしても、MSDNで調べて理解して解決ま で持っていくのも大変そうだな。 ところでファイル入出力も、fputs、fprintf、fgets等に似たWindows用 の関数もあるんでしょうか。あるかないかだけ聞ければいいです。
_tcslen とか、文字系の関数には全部 TCHAR 用の関数が用意してあるでよ。
それってVCの独自拡張じゃないのか?
ウインドウに描画はするけど、クリックしたら下にあるウインドウにメッセージが届くようにするにはどうすればできますか?
俺様拡張よりはマシだろう。 VC以外のコンパイラを使うことも考慮するなら、 VCのTCHARマクロと互換性のあるものを別に作って使えばいいと思うよ。
tchar.hなんてWindows用コンパイラなら標準みたいなもんだろ
ていうか、C標準にwchar_tが導入されたときに、TCHARマクロのようなものも標準化されなかったんか?
>>221 そもそも Windows プログラミングをしようってんだから
TCHAR 使うのは普通だろ?
いい加減9xは切り捨ててwchar_tで書けばいいと思うんだ
VC特有を嫌うくらいなら、 wchar_tがWin32APIのWCHARと互換性があるという仮定は、 すべきではないだろう。 gccではwchar_tが32ビット幅だったりするしな。
229 :
デフォルトの名無しさん :2008/04/08(火) 09:15:12
>>229 マニュアルとかのドキュメント作成のために画面キャプチャが欲しいっていうのなら、
リモートデスクトップとかVMwareとか、そういうのを使うといいよ。
231 :
229 :2008/04/08(火) 11:33:56
>>230 すみません、プログラムでなんとかできればと考えております。
>>231 とりあえずGetDC失敗した後GetLastErrorで原因を探ってみてはどうじゃろ。
さすがにサービスアプリを作って試してみるのはめんどくさすぎるw
sexeを使ってみ。
>>233 知らないのに無理に答えようとしてガンバル必要はないぞ。
236 :
デフォルトの名無しさん :2008/04/08(火) 12:18:27
237 :
デフォルトの名無しさん :2008/04/08(火) 12:19:51
知らないならレスしないでください
また荒れてるのかw
そんなもん知ってる奴なんて作者とMSの人間ぐらいだアホか
>>228 gccで一括りにしてはダメ。Windows用のgccはwchar_tが16ビット。
ふつうにできるやん
メールやん
shlwapiのHashDataって、OSやDLLのバージョン違ってもアルゴリズム同一と保証されてる?
英語版MSDNの検索がタイムアウトしまくって使い物にならん
>>244 されてないと思うよ。
NT4.0の頃のIEの暗号化が標準か高度かによって違っていただろうしね。
CryptoAPIを使うことは考えてみた?
244です。
>>246 あー。いや暗号強度とかはあんまり関係なかったんです。
データ管理に128bitのハッシュが必要だったんだけど、ソースをあまり増やさないで欲しい
というんでMD5ルーチンが使えなかった、でこれを利用したかった。
ポータブルなデータではないんで絶対同一であることが必要でもないんだけどちょっと気になったので。
MD5ルーチンってどっかのDLLが持ってたはず SDKヘルプで出てきたし
MSDNライブラリのネット版がクソ重くて見れないんだけど嫌がらせか?
英語版もさっきそんな感じだったなあ 今は復帰してるが Windows Filtering Platform超ワケワカンネ
ファイアウォールでも作るのw?
>>245 >>249 独り言やめれ。
MSDNライブラリくらいローカルのHDDにインストールしろよ。
独り言じゃないよちゃんとお前がきいてるじゃないか
MFCのCDC::DrawText()についてなのですが、 内容自体はAPIのDrawText()そのものなので、 こちらで質問させていただきます。 ワードラップをオフにした状態で常に右端で折り返したいのですが、 それを実現するフラグ指定はあるのでしょうか。 dc.DrawText("あいうえおかきくけこさしすせそ 1234567890 1234567890 1234567890", CRect(0, 0, 150, 150), DT_WORDBREAK); DT_WORDBREAKを指定すると、日本語の部分は右端で折り返させるのですが、 半角の部分はスペース位置でワードラップしてしまいます。 DT_WORDBREAKをオフにすると折り返しすらされません。
叩かれた
>>184 が逆に叩く側に回って荒らしてるようだな
分かりやすい奴だ
>>248 MD5Initってのが出てきたが
>Requires Windows XP or Windows 2000 Professional.
ってのが
>>244 の希望に沿ってない気がする
>>257 出てきたって・・・おい
知らないなら調べてまで答えるなよ。
知ったかぶりの知識はいらない。
ちょっと調べて得られる情報なら本人だって既に知ってるだろ。
Win95OSR2、NT4.0以降でサポートされてるCryptoAPIを使え。
実際の処理を行うプロバイダがインストールされているかは別の話しだが。
2000・XP以降対応で何が不満なのだろう・・・ 今更サポート切れてる9xなんかに対応する必要なんて無かろうに
CALG_MD5ならMicrosoft Base Cryptographic Providerでサポートされると書いてある IE3が入っていればWin95でも問題ないと思う
>>228 ところがCygwinやMinGWのgccはwchar_tが2バイトでビルドされているので、
WCHARとwchar_tが等しいという仮定はここでも通用する。
日付が変わるまで書込み禁止
>>261 そういうのを、たまたま一致している、というのだよ。
どんまい
ける
267 :
263 :2008/04/08(火) 16:15:30
お前ら1回死ね
>>255 英語圏では単語の途中で改行されるのを嫌うから、なるべく区切り文字で改行するようになってるんだと思う。
269 :
229 :2008/04/08(火) 16:30:50
>>232 GetLastErrorでは何も返ってきませんので、
GetDCでエラーが発生しているわけでは無いみたいです。
ただGetDCで返ってきたHDCからHBITMAPを作成しても真っ黒です。
ちなみに通常の状態ですと、
取得したHDCからHBITMAPを作成で正常にキャプチャできています。
>>264 CRTDLL.DLLやMSVCRT.DLLにあわせるためであり必然です
もうXPに帰りたい… 実行に管理者権限が必要かどうかぐらい書いとけカス
272 :
デフォルトの名無しさん :2008/04/08(火) 17:16:45
帰ればいいだろ わざわざVista使ってストレス溜めて何の得になるんだ?
俺ビスタだぜ? お前XPなの? m9(^Д^)プギャーーーッ ってしたいため
XPなら何に管理者権限が必要かどうか区別する必要が無いなんて事は全く無いが
必要があるってことは無いが無いってことも無い事は無いか必要ってこともあることは無い
>>270 合わせる必要なんかないだろ。
ていうか、gccはGNUのC標準ライブラリを使うんじゃないか?
MSVCRT.DLLを使うのは行儀が悪すぎる。
VistaってUser/PowerUser権限をWindows2000見たいな感じで使うこと出来ないの?
はい
そりゃ悲惨だね・・
はい
>>276 MinGWinはデフォルトでMSVCRT.DLLを使うよ
>>277 2000みたいな感じってのがよくわからないが、グループや特権の割り当ては2000と同じようにできるよ
Administratorsが必要なときに自動的にrunasみたいなダイアログが出るところは2000と違う
>>276 W系APIが16ビット前提なんだから、合わせるのは当然でしょ。
gccでデフォルトで glibc を使うプラットフォームはむしろ少数派。
UACなんて無効でおk
つまりUser権限で常用して必要なときはRunasってな使い方がVistaでも出来るって事?
Win32 API を使う漏れらがちゃんと気を付けて、たとえば無暗にHKLMとかHKCRに
もの書いたりしないようにしてゆけば、
>>287 みたいな使い方もどんどん楽になってゆくよね
・・・・無理だけどさ。
サービスなんかやめて setuid ビット採用してよ >> Windows
runasでバッチ作るくらいで勘弁してあげたらw
>>249 MSDNネット版、やたら重いよね。Webのデザインが変わってから重くなったイメージ。
勘弁してほしいよな。
>>285 合わせるのが合理的ではあるが、絶対に合せなければならないというわけではないぞ。
>>291 MSDNライブラリくらいローカルにインストールしろって。
オンライン版よりも少し内容が古くなるったって、それが問題になるような仕事してんのか?
>>291 おれは今のMSDNのほうが使いやすいな
あとは検索の糞っぷりと左ペインの使いづらさをどうにかしてほしい
>>292 Windows SDKを検索すれば状況が理解できると思うよ
296 :
デフォルトの名無しさん :2008/04/09(水) 10:25:02
知らないならレスしないでください
297 :
デフォルトの名無しさん :2008/04/09(水) 10:28:10
もしかしてスレ違いかもしれませんが… エクセルビューアのウィンドウクラス名はなんですか? どなたか教えてください(>_<)
298 :
デフォルトの名無しさん :2008/04/09(水) 10:33:46
>>297 エクセルビューアが何なのか知らないけど、それを持ってるなら
起動してspy++で見ればわかるよ。
299 :
デフォルトの名無しさん :2008/04/09(水) 11:14:48
>298 調べることができました! ありがとうございます!
>>183 WM_DROPFILESはPost側で確保してGet側で解放する仕様なので作ってPostMessageしたらそれで終わり
もちろん(まずないはずだが)PostMessageが失敗したときには自前でGlobalFreeすること
302 :
デフォルトの名無しさん :2008/04/09(水) 16:12:59
お前らそんなに
>>184 を責めるなよ!
どうせお前らも同じく無知なんだから
×お前ら ○俺ら
×俺ら ○俺
306 :
デフォルトの名無しさん :2008/04/09(水) 17:30:44
ビットマップの特定の色を透過させるにはどうしたらいいでしょうか。
TransparentBlt
TransparentBlt
最も最近作られた子ウィンドウを取得する方法ってないかな?
312 :
311 :2008/04/09(水) 17:57:03
「最も最近」って何だよ俺 orz
×俺 ○俺ら
×俺ら ○お前ら
ダイゴロー
GetYoungestChildWindow
どういたしまして
Youngestって何だよw せめてLatestぐらいにしとけ
320 :
311 :2008/04/09(水) 19:03:44
本当お前ら面白いなw 諦めたほうがよさそうだ。別の方法を探ります
もう春休みは終わったはずなのに何というカオス・・・
I am NEET!
323 :
デフォルトの名無しさん :2008/04/09(水) 19:41:16
>>320 GetWindowLongで我慢しろブタ野郎!
は?
325 :
デフォルトの名無しさん :2008/04/09(水) 20:11:42
WM_PAINT メッセージを発行する Win32APIって何だったでしょうか?
UpdateWindow
InvalidateRectじゃなくて?
漏れは GetMessage だと思うんだ
Win32APIなんぞ久しいが InvalidateRectは領域を無効化することで再描画させると記憶してる
GetMessageじゃなくSendMessageとかPostMessageではなくて?
332 :
デフォルトの名無しさん :2008/04/09(水) 20:29:22
知らないならレスしないでください
議題:なぜこのスレはゆとりほいほいになったのか
知らないならレスしないでください という言葉を無敵だと思ってるから
GetMessageを呼びだしたスレッドに属するウィンドウに無効領域があり、 他にウィンドウメッセージが無ければ、その時点でWM_PAINTが生成される。
>>331 ウィンドウメッセージのキューは単純なFIFOではないのよ。
わかりやすいのはWM_TIMERかな。
たとえば100msec毎にWM_TIMERが送られてくるようにして、
わざとメッセージポンプを数秒間止めてみて、再開後にどうなるのか、
ちょろっとプログラムかいて試してみ。
WM_PAINTも同様。
>>311 なかなか面白そうな質問なんで調べてみたがなかなか無いな。
フック使えば出来るが個人的にフック嫌いだしなー。
>>337 意外だな
このスレはフック大好き人間だらけなのに
ま、解決策をすぐフックに持っていく短絡思考な回答者は嫌いだが
フック大好きなのは質問者という事実
好き好きフック船長!!!
質問者以外もフック大好きだろ
>>48 とか
>>80-81 とか
個人的に次々々バージョンぐらいのWindowsからSetWindowsHookEx/CreateRemoteThreadとかは
Vistaの64-bitドライバみたいに未署名モジュールは使えなくすればいいと思っていたりする
>>341 そんなことになったら、自作ヘボソフト介助ツールが使えなくなるじゃないか!
世の中にはいいソフトなのにフロントエンドが腐ってる物が多いんだぞ
>>338 Winのフックってシステム的に美しくないじゃん。
フックを使ったら負けだと思ってる (大学生 21歳 嘘)
フックでウインドーズをファックするわけよ。
>>342 他プロセスに簡単に介入できる現状の方が問題だろ
どうしても自作ソフトでフックが必要なら、デジタル署名を取得するか
自分しか使わないならレジストリ設定や起動オプションなんかで無効化してしまうか
仮想PCで飼えばいい訳でだな
それに次々々バージョンなんてあと10年ぐらい先の話だろう
case WM_NOTIFY: lpSChange = (LPNMSELCHANGE)lp; if((lpSChange->nmhdr).hwndFrom != hMon || (lpSChange->nmhdr).code != MCN_SELCHANGE) return FALSE; MonthCal_GetCurSel(hMon, &st); wsprintf(szBuf, _T("%d年 %02d月 %02d日の予定"), st.wYear, st.wMonth, st.wDay); SetWindowText(hStatic, szBuf); wsprintf(szApp, _T("%d-%02d-%02d"), st.wYear ,st.wMonth, st.wDay); MyShowPlan(hEdit, szApp); SetFocus(hEdit[0]); } return FALSE; } 猫でもわかるの本で勉強しているんですが (lpSChange->nmhdr).hwndFrom この->の意味がいまいち良くわからないんです。 検索しても解説しているのが見つからないので質問させていただきました。 誰か御教授頂けると嬉しいです(><)
>>346 まずはその本を窓から投げ捨てた上で油をかけて燃やせ。
話はそれからだ。
あとスレ違い。
operator ->()は構造体へのポインタから構造体のメンバにアクセスするための演算子。
不法投棄の上に放火
>>347 バージョンの誤差さえ何とかすれば結構いい本だと思ってたんですが、、ダメなんでしょうか(´・ω・`)
->のこと大体把握できました、ありがとうございます。
そしてスレ違いすいませんでした。
>>350 ちゃんと理解していなくて、なんとなく動いているプログラムを量産する、
いないほうがマシなプログラマを育成するタイプの本だな。
もちろん、作者の人の行為自体は馬鹿にできないが。
APIリファレンスとしてはいいと思う
英語版MSDNでも読めばいいじゃない
いや、馬鹿にできるよ。 猫のせいでどれだけ糞コードが世に出回ったと思っているんだ。
猫はやりたいことに必要なAPIとかググるキーワードを見つけるために 使うんだったら分からなくもない コード自体はどうしようもないほどに糞
てか->はC言語の問題でAPI使ってどうこう以前の問題
10年ぐらい前はGoogleなんて無かったしWin32APIの日本語での情報も少なかったから多少は役に立ったとかそんなとこだろ 今となっては正直無くてもいいと思う まあ最近は適当に検索すると.NETばっかり出てきて鬱になるがw
この辺で話題を変えておこうか
XPスタイルのタブコントロール上のトラックバーコントロールの背景色をきちんと描画するにはどうしたらいいんでしょうか? EnableThemeDialogTextureを適用したダイアログに乗せる方法だと、 そもそもダイアログの背景にグラデーションがかからないのでダメでした。 トラックバーコントロールのWM_CTLCOLORSTATICで、DrawThemeParentBackgroundを呼び出す方法だと。 ウインドウが隠れてから復帰するときにトラックバーコントロールが消えてしまいダメでした。 もう完全に詰まってしまった感じなのですが、トラックバーコントロールを独自実装する以外で何か良い方法はないでしょうか?
DrawThemeParentBackgroundを呼び出す方法で、 ウインドウから隠れて復帰するときだけデフォルトウインドウプロシージャを呼び出すようにすれば、 一応きちんと描画されるのですが、判定が難しく、あまり確実な方法ではないので、他の方法はないでしょうか。
激しく泥臭い方法だけど一応できたっぽいかもしれません。
>>360 の方法をどうにか詰めて、
WM_CTLCOLORSTATICが呼ばれる前にWM_ERASEBKGNDが1回呼ばれた時は、
タスク切り替えでウインドウが隠れてから復帰なので、
このときにデフォルトウインドウプロシージャを呼び出さないと、
トラックバーコントロールが消えてしまうので、
デフォルトウインドウプロシージャを呼び出す。
WM_CTLCOLORSTATICが呼ばれる前にWM_ERASEBKGNDが2回呼ばれた時は、
タスクの最小化から復帰したときで、
このときはDrawThemeParentBackgroundを呼び出さないと、
背景がおかしくなるのでDrawThemeParentBackgroundを呼び出す。
としたら、どうにかできました。
ただ、このやり方はあまりにも泥臭く、不確実な感じがするので、
引き続き、他の方法がありましたらよろしくお願いします。
カスタムドローで全部描いちゃえ
363 :
デフォルトの名無しさん :2008/04/10(木) 18:30:36
いやオナニードローだ!
_CrtDumpMemoryLeaks関数などを使用してメモリリークをチェックしているのですが、 WinMain関数より前で確保されたメモリ領域が解放されない現象が発生しています。 自分で用意しているグローバル変数のコンストラクタ内では メモリ確保に絡む処理は行なっていません(いないはずです)。 このメモリリークがどこで発生しているか調べる方法はないでしょうか?
_CrtSetBreakAllocとかあったはず。 APIじゃないけどね
msvcrt.dllがKnownDLLsだから理論上はCランタイム関数もWin32APIということになる
>>364 それはVCの話であって、Win32APIの話ではないよ。
> WinMain関数より前で確保されたメモリ領域が解放されない
_CrtDumpMemoryLeaksが指摘してくる、ということ?
メモリが解放されなくて困っているのでなければ、
WinMain関数に入ってすぐの時点で、
_CrtMemCheckpoint を使ってスナップショットをとり、
WinMain関数からreturnする前に自分で、
_CrtMemDifferenceや_CrtMemDumpStatisticsを
呼んで、そのスナップショットとの差分をチェックしよう。
>>365 すいませんWin32でしか使えないというようなことが書いてあったので
ここで質問してしまいました。
その関数は使用してみたのですがWinMain関数の先頭で呼んでも
ブレークしてくれず、確保番号も若かったので
WinMain関数より前に確保されたメモリ領域なのではないかと推測しました。
何よりも先にその関数を呼び出すようなことは可能なのでしょうか?
>>369 >_CrtDumpMemoryLeaksが指摘してくる、ということ?
そうです。
その方法を試してみます。
ややすれ違いですが詳しい人が多いので質問させてください。 いわゆるIEコンポを利用しているプログラムのIEサーバウィンドウが 実際にアクセスしているURLを調べるにはどうすればいいでしょうか? ウェブ検索してみるとSPY++で調べたと思われる記述を見つけましたが あれこれためしてみても私にはその方法がわかりませんでした。 表示内容とプロセスが掴んでいるリソースを見れば想像つくものも ありますが、今回の件ではよくわからなくて困っています。 ※すれ違いが許容範囲を超えてるなら誘導頂けると助かります。
>>371 一時的に見たいだけなら、これが一番簡単だと思う。
・ローカルプロクシサーバを建てて、IEのプロクシに設定。
・アクセス後、プロクシのログを見る。
>>372 同じようなもんだが、Fiddlerを愛用してる。
一応MS製だし、簡単なので。
>>371 ネットワークのパケットをモニタするのがいいんじゃないの
EtherealとかMicrosoft Network Monitorとかいろいろある
376 :
デフォルトの名無しさん :2008/04/10(木) 22:09:04
>>371 トップレベルウィンドウ→子ウィンドウとクラス名が"Internet Explorer_Server"のものを探してハンドルゲット
見つかったウィンドウにWM_HTML_GETOBJECTを投げてオブジェクトを得る
ObjectFromLresultを使ってIHTMLDocument2のインターフェイスポインタゲット
IServiceProviderのインターフェイスをクエリしてQueryServiceでIWebbrowserAppとIWebbrowser2を指定してIWebbrowser2のインターフェイスポインタゲット
get_LocationURLでURLを得る
どう?w
>>376 部外者だがなかなか使えそうな情報サンクス
おまいらくらいハイレベルな質問するにはどのくらい勉強すれば良いんでつか。
>>377 あ、HTMLDocument2::parentWindowでIHTMLWindow2取得してからIServiceProviderクエリだったかも
その答えは風に吹かれているのさ
383 :
371 :2008/04/11(金) 04:18:24
多くのアドバイスありがとうございます。 URLとかきましたがコンテンツの元がインターネットなのか PEのリソースなのか、レジストリなのかローカルファイルなのか コードに埋め込みなのかはたまたそれ以外なのかわかりにくいのです。 まだ良く見てないのですが後で読み直してけんきゅうしてみます。 ありがとうございました。
384 :
371 :2008/04/11(金) 05:11:49
385 :
364 :2008/04/11(金) 11:03:50
自己解決しました。 new演算子をオーバーロードして、そこで_CrtSetBreakAlloc関数を呼ぶことで 確認出来るようになりました。 問題の確保場所はグローバル変数のstd::mapのコンストラクタ内でした。 とりあえずグローバル変数をやめることで対処しました。 スレ違い失礼しました。
↓ズコーのAA
>>385 他人事だからどうでもいいけど、その行動は馬鹿にされるから
匿名じゃないところでは人に話さない方がいいよ
388 :
デフォルトの名無しさん :2008/04/11(金) 12:33:55
親ウィンドウのメニューの非表示が押されたら モードレスダイアログを非表示にしたいのですが、 ShowWindowを使っても出来ないのですが… ちなみに 親のWM_INITDIALOGでモードレスダイアログを表示しています。
389 :
デフォルトの名無しさん :2008/04/11(金) 12:45:38
ひゃっふwwwww 自己解決wwwwww
390 :
デフォルトの名無しさん :2008/04/11(金) 13:14:45
事故解決しますた
一つのウィンドウを5等分して5個のクラスが担当領域を描画をそれぞれ行おうと思うのですが クラス内部にstaticなメモリHDCを用意して共有し、最後に表HDCに転送する形で描画しようと考えてるのですが この場合、描画処理は排他的にした方が用意のでしょうか?
392 :
デフォルトの名無しさん :2008/04/11(金) 18:54:21
用意くはないかもな
>>391 ですが日本語でOKすぎるorz
何とか察してください
387のどのへんが恥ずかしいのか、よくわからないので だれかおじさんにこっそり教えてくれないか
387→385です orz
Hookについて質問です.
http://ruffnex.oc.to/kenji/text/api_hook/ このサイトをベースに勉強しました.
その過程で下記の2点の疑問が出てきました.
1.
SetWindowsHookExは, あくまでメッセージキューを持ったスレッドのみに
関連付けられるのですよね?
2.
上記サイトでは, LoadLibraryとGetProcAddressを常にフックしていますが,
アプリケーションの組み方によっては有効でない気がします.
というのは, ウィンドウを表示させるようなアプリケーションを作るとして,
メッセージループに入る前にInitial処理としてLoadLibrary及びGetProcAddress等を
行うことが多いかと思います.
となると, Initial処理の二つの関数はフックされずに正常なアドレスを返してしまいますよね.
この問題って通常どうやって対処するものなのですか?
それとも, 上記の様なことを行うのは珍しいとして, 気にしないものですか?
2。 だいたいのプロセスでフックが効けばいいんすよ! ってわけにいかないのなら気になるでしょ? 判りやすいのが親プロセスのCreateProcess系をフックしてエントリーポイント到達以前にDllをロードさせる方法 エントリーポイントを自己JMPに書き換えてループしてる隙にスレッド立てて読ませる エントリーポイントをJMPに書き換えてJMP先で読ませる IATを書き換えてローダにロードさせる 後者2つはそれぞれgdi++/detoursで実装が読める
399 :
397 :2008/04/11(金) 21:10:23
>>398 さん
不勉強な故, 見当違いな質問だったら申し訳ないです。
"親プロセスのCreateProcess系をフックしてエントリーポイント到達以前にDllをロードさせる"
とありますが, これはHookプロセスをどのプロセスよりも前に起動する必要がある
ということになりますか?
また, SetWindowsHookExを使ってしまうとメッセージキューでのDLLロードになってしまうので, 使わない方がベターですか?
なにがしたいのかわからないし、どのプロセスよりも前に、とかベターですかといわれても困る 方法と特徴を調べて目的に合う方法をとればいいんじゃない? 全プロセスが対象! ってのならユーザモードの仕事じゃないとは思う
>>400 すみません. 抽象的な話で進めようとしていました...
目的は,
デバッグとして, 自作アプリケーション(不特定多数)からイーサネットに流しているデータを読む.
ただし, 極力, 自作アプリケーションはHookを意識したくない.
(LoadLibrary, GetProcAddressを禁止する等を行いたくない)
というものです.
Hookプロセスは常駐型にしようと思っていますが,
被Hookプロセスはメッセージキューを必ずしも持つとは限りません.
そこで, SetWindowsHookExは使えないと考え, 別の方法を探しました.
http://japan.internet.com/developer/20050830/26.html#section_2 上記アドレスの方法をやってみたのですが, プロセスIDから引っ掛けて
フックを行うようになるので,
この方法ではLoadLibrary/GetProcAddress系がダメだと考えて手詰まり状態になりました...
>>401 自作アプリが対象なら、外部からインジェクションしてフックするのではなく、
それぞれの自作アプリからフックDLLを明示的にLoadLibraryしなよ。
フックの質問する人って、どうして不適切な手段を選ぶんだろうな。
フックならジェイソン尾妻に教わるといい
またフックか 検索すりゃ腐るほどでてくるだろ
>>402 アプリケーションがフックDLLを取り込むという意識が入り込んでいる為, その手法だと目的に反してしまいます...
また明示的に行うと, GetProcAddressにより正しいアドレスを取得できてしまう為,
それらの関数を禁止しなければなりません.
デバッグの時のみリンクを行ってHookさせる手法がシンプルだとは思いますが, 極力違う方法も検討したいのです.
(勿論, 他の方法を検討した結果, その手法がベストであればその手法を選択すると思います.)
>>406 #ifdef _DEBUG
LoadLibrary(_T("mydebughook.dll"));
#endif
こんなのをWinMainの先頭に入れとけばいいじゃないか
> また明示的に行うと, GetProcAddressにより正しいアドレスを取得できてしまう為 自作アプリなら "GetProcAddressでアドレスを取得しているか" なんて分かるだろ で、必要に応じてGetProcAddressもフックするか、関数の先頭をJMP命令に書き換える方法を使えばいい > 被Hookプロセスはメッセージキューを必ずしも持つとは限りません これも自作アプリなら分かるだろ スレッドを作った時やコンソールアプリはPeekMessage(NULL, NULL, ...)でもしてキューを作ればいい なんか自作アプリと言ってる割には情報が不確か過ぎるが、本当に自作アプリをフックしたいのか?
>>395 グローバル変数等静的なオブジェクトのコンストラクタ内など、
WinMain() や main() の実行よりも前に確保されたメモリは、main()関数終了前など早めの段階では
未だ解放されていないため、その辺で_CrtDumpMemoryLeaks()が呼び出されるとリ―クとして報告されてしまう。
実際には「まだ」解放されていないだけでリークではないのだけれども。
MFCを使っていないなら、_CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF )とすれば、
諸々完了した正しいタイミングで自動的に_CrtDumpMemoryLeaks()を呼び出してリークのチェックを行ってくれる。
MFC は ExitInstance あたりで勝手に_CrtDumpMemoryLeaks()を呼びだすので、MFCを使用したコードの倍には
こうしても正しい結果を得られない。
こんな説明ではどうだろう。
>>401 確か起動する全てのプロセスに指定したdllをロードさせるためのレジストリキーがあったと思う。
なんていったっけっかな・・・
AppInit_DLLs? これは全てのプロセスじゃなくてuser32.dllをロードするプロセスのみだが。
そっか。ありがと。 んではダメだなぁ。
全てのプロセス・・・? 自作アプリのみのフックじゃなかったのか つうか自作アプリなんて真っ赤な嘘で、本当はチートツールでも作りたいだけだろ
SetWindowsHookEx使いたくなかったら、リモートスレッドくらいしかないな。 もちろん外部からアドレス計算して書き込む事も可能だけど面倒だね。 SetWindowsHookExが楽なのは、権限無視して潜り込める事だ。 ネットワーク限定だと、ファイアーウォール等の実装と同じ方法で覗けた気もするけどやり方忘れた。 XP以上辺りからOSでそんな機能が用意されていたような。 他には、葱のような実装か。
>>414 権限は無視されないだろ
そんなことできたらUsers権限でサービスとかもフックできることになるしセキュリティもへったくれもねー
裏画面の操作について質問です mDC = CreateCompatibleDC(hDC); で互換DCを取得し、mDCに対して文字の表示などの操作を行った後 表画面にmDCを転送したいのですが 転送はBITMAPなどと同じようにBITBLITで転送でよいのでしょうか? 色々試しているのですが何も表示されません
>>417 キモいフックネタが続いてる時に君のような質問を見るとホッとするよ。
小学校の頃騎馬戦をやったのだが人数が合わなくて自分の騎馬だけ女子が上に乗ることになった 最初は上に乗る女子も恥ずかしかったらしく男子の腕にお尻をつけないようにして戦っていた でも次第に騎馬の体勢が崩れてきて右側を支えていた奴がこけてしまったので 上に乗っていた女子は左側を支えていた自分の右腕にまたがるような格好になった 自分も右腕だけで支えるのはきつかったがなんとか崩れないように右腕で女子を上に押し上げていた するとその女子は 「あっ・・・まって・・・ちょっと・・・あっ・・・あたってる・・・あたってる・・・あっ・・・」 と自分の右腕を挟みこむようにして腰を捻った。 小学生の自分に「あたってる」のが何なのか分かるはずもなく、 「今はまだがまんして!」 と訳も分からず励ましていた。 女子は「う、うん」と頷いたきり前を見据えてこちらを見ようともせず、力んだ顔をしている。 横から敵の騎馬が突進してきた。 旋回しようとするがバランスが崩れてしまい、右腕を思いっきりその子の股間に押し付けるように 突き上げてしまった。 「ひゃぅんッ」と声が漏れた。 なんだ?今の 見上げると真っ赤な顔とした女子と目が合った。 その喘ぎ声の理由を知る由もなく、「痛かった?」と尋ねると、 何も言わずにフルフルと首を振った。 「よし!このまま攻め込むぞ!」と隣の友人が叫んだ。 俺もそれに乗じて二人で前方へ疾走する。 が、当然それには上下運動を伴い、上に乗る女子の股間は何度も俺の右腕に押し付けられる。 「んっんっんっ・・・」 振動に合わせて彼女の鼻にかかった息が漏れる。 俺は小学生なりに何か淫靡なオーラを感じ取っていた(恐らく友人もだろう)が 勝負中に立ち止まるわけにも行かず、相変わらず女子に上下運動を与え続けていた。 しかし次第に彼女の「んっんっ」が「んっあっふっ」と声音を帯びてきた。 俺の頭に乗せていた手に次第に力がこもり、ギュウとつかんでいるのが分かった。 しかしここでアクシデントが。友人が足を捻り、転びかけ、体勢を立て直すために踏ん張ったが、その時に彼女の股間に最大の衝撃を与えてああ30行だ
>>417 DC には何も描画したり表示したりできない。
したがってもちろん描画結果も格納されない。
ビットマップやプリンタに描画したり表示したり「するために」DCを使う、というだけ。
417 のやりたいようなことをするためには、CreateCompatibleBitmapでビットマップを作り、
それに (適切なDCを用いて) 描画しておいて 、BitBlt でそのビットマップを表示すればよい。
オフスクリーンビットマップやメモリDCでググればサンプルは多数見つかるだろう。
>>421 色々調べてやってみたのですが
mDC = CreateCompatibleDC(hDC);
bitmap = CreateCompatibleBitmap(mDC ,800 ,600);
SelectObject(mDC ,bitmap);
HBRUSH brush = CreateSolidBrush((COLOR_BTNFACE+1));
SelectObject(mDC , brush);
PatBlt(mDC,0,0,800,600,PATCOPY);
BitBlt(hDC, 0, 0, 800, 600, pHDC, 0, 0, SRCCOPY);
この処理をすると背景が黒字に灰色の点が点々と表示されるようになってしまいましたorz
CreateCompatibleBitmapの第一引数をhDCにしてみる
>>422 CreateCompatibleDCで作られたメモリDCには初期状態で1*1の
モノクロビットマップがセットされている。
CreateCompatibleBitmapでそのDCを指定してしまうと、
モノクロのビットマップが作られてしまう。
っていうか、それ以前の問題として、そのBitBltのところのpHDCは
どこから出てきたんだ?
426 :
デフォルトの名無しさん :2008/04/12(土) 05:56:19
知らないならレスしないでください
>>425 phdcは古いコードの名残で誤植でした
とりあえず塗りつぶしまでは上手くいきました、ありがとうございます
PatBltで背景を塗りつぶすときウィンドウ標準の灰色で塗りつぶしたい場合は
ブラシで直接色を指定しか方法はないのでしょうか?
GetSysColorBrushならシステムカラーインデックスで指定できるけど
>>409 なる。でありがとう
非MFCであれば、あえて_CrtDumpMemoryLeaksなどを使わなくても_CrtSetDbgFlagで正しい結果が得られる
むしろmainとかの段階では得ることができない。
にも関わらず_CrtDumpMemoryLeaksで頑張ろうとしているうえ
対策としてプログラム構造まで変えてしまったのが364 ってわけか
良くあることだけど確かに恥ずかしいね 超がんばれ
クラスのインスタンスをグローバル変数にしてはいけない、というのはC++の常識よ。 メモリリーク云々の問題に関係なく、グローバル変数にするのはやめるべき。
クラスのインスタンスに関わらずグローバル変数を使う事自体が邪悪なのは常識だが、 クラスのインスタンスに限って邪悪とするのは非常識。
434 :
デフォルトの名無しさん :2008/04/12(土) 13:01:28
WIN32SDKでモードレスダイアログに親ウィンドウが隠れてしまうのですが、 親ウィンドウを最前面に表示させるにはどうすればよいですか?
グローバル変数駄目っていっても 標準関数の中で使われてないか? 結局内輪でルール統一できれば問題ないよ。 プログラム上のどこでも使う変数や構造体を関数にわざわざ 渡していくことはナンセンスだ。 ひとつの変数をいろんな用途に使う方がよっぽど邪悪。
クラスのインスタンスをグローバル変数にしてはいけないのは、
それが、main関数に入る前に他の関数を呼び出すこと、だから。
>>435 > プログラム上のどこでも使う変数や構造体を関数にわざわざ渡していくことはナンセンスだ。
> ひとつの変数をいろんな用途に使う方がよっぽど邪悪。
明らかにダメなやりかたと比べてマシだというのは、ナンセンスだと思う。
POD 型のグローバル変数も関数の戻り値で初期化可能だろ。C++ では。
グローバルじゃなくてstatic なメンバ変数でもそうだしねぇ。
>>435 グローバル変数使ってる標準関数は軒並み糞だと言われている。
乱数列2つ使いたいのに使えないよこの糞がとか、
strtok をスレッドセーフにしてくれよこの糞がとか。
すいませんが APIと何の関係が?
GetDesktopWindow();の戻り値を CreateDialogに指定してみたたら親ウィンドウを最前面に表示出来ましたが、 親ウィンドウから文字列をモードレス側のリストビューに追加出来ません。 何故ですか?
それは 朝食にパンを食べたら、雨が降りました。何故ですか、 と聞いているようなもんだよ。
状況説明は詳細に。
>>437 可能かどうかと、やるべきかどうかは、別問題。
>>444 コンストラクタ/デストラクタ内で変な事してなけりゃ同じことだろ。
クラスがどうかとか無関係。
>>442 私が提示している情報以外に必要なものを教えて下さい。
仕様。
>>445 変なこと、ねぇ。
たとえばnewを使うとか、な。
new とか別にいいだろ・・・。
450 :
デフォルトの名無しさん :2008/04/12(土) 13:59:53
グローバルで問題になるのは 他の翻訳単位内にある初期化の必要なグローバル変数に依存する 処理を記述する(初期化前に使ってしまうかもしれない)ってところだな。 逆に言えば、それさえしなけりゃ大した問題は無い。
>>449 newが投げた例外をmain関数でもcatchできないのはマズいだろう。
>>452 その場で catch して abort しろよ・・・。
どうせ abort するしかないんだから catch できなくても大した問題ではない。
元の発言の常識によれば、 static std::vector<int> hoge(100);もダメ、 struct Point { int x,y; Point(int x_, y_) : x(x_), y(y_) {}; }; で、 static Point ptZero(0,0); もダメか。 こんなのも全部シングルトンにすんのかw
スマン static は良いのか・・・
シングルトンは初期化のタイミングをずらしたグローバル変数に過ぎない。 少ないに越した事は無いが、利便性を考えると欲しい事はあるな。
NTFS以外のファイルシステムも使えるから保証はないよな。
まとめてC++スレに移動してくださいです。。。。
本格的に邪魔
>その場で catch して abort しろよ 何そのグローバル変数で配置されることを前提の実装
462 :
デフォルトの名無しさん :2008/04/12(土) 15:10:12
どうせ二人ぐらいが言い争ってるだけだろ 次はgotoネタか?
breakもcontinueもifもgotoの一種だよな
だ ま れ
い や だ
死ね
死 に た く な い
>462 2人ではなく病気の彼1人だろ
469 :
デフォルトの名無しさん :2008/04/12(土) 17:59:32
最近の自演は高度化してるな
従順な奴隷のように、期待した通りの回答を得られないと 逆恨みしてスレに粘着して荒らすなんて、もうね。 プログラミングを勉強する前に、勉強すべきことがあるでしょうに。 ま、コミュニケーション能力が低いまま就職して、痛い目にあえばいいんだよ。
>>470 知ったかで回答して周囲から叩かれたのをまだ根に持ってるようだな
どう考えても粘着しているのは「知らないならレスしないでください」と言われた回答者です。 本当にありがとうございました。
あなたの代わりにMSDNで調べてあげるスレ ってのを作って分離しようよ
477 :
デフォルトの名無しさん :2008/04/12(土) 19:37:18
ピクチャーボックス再描画について質問です. 状況は次の通りで, 2.の消える問題を解決したいです. 1. 他のウインドウが重なっても, 重なっているウィンドウを移動させると 隠れていた部分が再描画される. 2. 他のウインドウが重なっていて, 重なっているウィンドウを終了させると 隠れていた部分が消える. やっている処理はこんな感じです. 1. 裏画面に表示データをセット → InvalidateRect 2. WM_PAINT処理では, BeginPaint → BitBlt → EndPaint 何をトリガーに再描画指示を出せばよいか, アドバイスお願いします.
>何をトリガーに WM_PAINTじゃね? 最近(Vista)のアエロじゃ発生しないらしいけど
>>478 > 何をトリガーに再描画指示を出せばよいか
その発想が間違ってる。
表示内容が変ったらOSに伝える
再描画タイミングはOSが判断する
WM_PAINTが適切に送られてこない、あるいは、
BeginPaintで適切な領域が指示されないために、
正しく表示されないのであれば、
OSに不適切な値を渡していると思われる。
アエロ…………プクク(笑)
>>478 ウィンドウを内容を表示したまま移動 → WM_PAINTを何度も受け取るので多少失敗していても気がつかない
だったりして。
483 :
デフォルトの名無しさん :2008/04/12(土) 20:25:32
WM_PAINT以外にも描画しないといけないメッセージがあるけど、 それ関係ない?
NTFSのアクセス権チェック方法として、ACEを取得する必要があるのがわかったのだが、 自身の権限と取得されたACEの中で一番有効なACEと比較しなければならないとおもうのだが、 どのACEが有効となっているかの判断はどうすればよろしいでしょうか? ※関連:GetFileSecurity、GetSecurityDescriptorDacl
>>478 ピクチャーボックスってVBか.NETの事か?
それともStaticコントロールをそう呼んでるのか?
いずれにしろピクチャーボックスなんてコントロールはWin32には無い
Staticコントロールに描画したいならSS_OWNERDRAWスタイルにしてWM_DRAWITEMに応答しとけ
なんかおまいらひまだな。。。。 最近ニュースで話題の学校裏サイト状態w でも、ほんとはここはWin32APIスレですよ。
>>481 Aeroをローマ字として読むとアエロになるから別におかしくないだろ
無知は黙ってろよ
Googleはゴーグルって読むんだよ 無知は黙ってろ Yahooはヤホーって読むんだよ 無知は黙ってろ gooはゴーって読むんだよ 無知は黙ってろ
煽りも煽られもいらないっす
自作アプリで状況に応じて、BS入力の可否を制御するプログラムを作ってるところで、 少し聞きたいことがありまつ。 Viewで処理前にWM_CHARをとらえて、それでBSおよびCtrl+BSを禁止する方向で BSの場合は、VK_BS(0x09)で検知できた。<= OK BS+Ctrlが捕えられなかったので調べると、wparamに0x7fが入ってた。 <= これが不思議 0x7fを調べるとVK_F16。まずF16なんて使ったことないしF16ってなんなの?押せるの? 0x7fって昔の記憶ではDELETEボタンだったなあと思いつつ、それとは何か関係ある? 0x7fで処理してしまえばそれでプログラム的にはOKなんだけど、 詳しい人もけっこういるので質問させて。
WM_CHARだと仮想キーコードではなく、 ASCIIとかの文字コードだと見なすべきだと思う。 そういう意味では0x7f = DELに1票。 VK_BACK = 0x09もASCIIではBSだし。 仮想キーコードが出てくるのはWM_KEYDOWN/UP系だよ。
あああ、そうだった。VKで処理しちゃだめだったね。 どうもありがとう!
491さんにごめんなさいな追加カキコ。 VK_BS(0x09)って書いたけど、厳密には0x08でした。 ASCIIでももちろん0x08です。
質問 SetRectの存在意義がわかりません
昔、1バイトでもコードを減らしたい時代があったのだよ。
今でも組み込みとかでは1バイトでも減らそうと努力してる
涙ぐましいな
SetRect はコンパクトにまとまって分かりやすい事無いか?
無い
500 :
478 :2008/04/12(土) 23:23:48
>>485 にあるように変更して無事に目的を達成できました.
レスしてくれた皆様, ありがとう.
どういたしまして 何も答えてないけど
502 :
デフォルトの名無しさん :2008/04/13(日) 00:35:04
PCにFPUがあるかどうか調べるAPIはありますか
すごーく馬鹿な事を聞いているぞ。お前 落ち着いてシャワーでも浴びてFPUについてググってみれ
IsProcessorFeaturePresent
DOS窓用に作成したプログラムをwindowsへ移植しようと ソースファイルを別のプロジェクトにコピーして使用したら '/DUNICODE' がプリコンパイル済みヘッダーに定義されていますが、現在のコンパイル処理には定義されていません。 '/D_UNICODE' がプリコンパイル済みヘッダーに定義されていますが、現在のコンパイル処理には定義されていません。 '/D_DLL' がプリコンパイル済みヘッダーに定義されていますが、現在のコンパイル処理には定義されていません。 というエラーがいっぱい出てきてしまったのですがこれは何なのでしょうか? 今までは問題なく動作してたのですが・・・
プリコンパイル済みヘッダを消せばいいんじゃないか?
環境スレに行った方がいいと思うが。
ぷリコンパイルヘッダを読み込む#include画無いんじゃないかな。 プロジェクトのプリコンパイルヘッダの項に指定されてるヘッダをcppで#includeしてみそ
511 :
デフォルトの名無しさん :2008/04/13(日) 12:19:30
ぷりコンパイル
ぷリコンパイル
GetWindowTextW()でエディットコントロールから Unicodeで文字を取得したいんですがうまくいきません 取得した文字(例えばABC123)と _T("ABC123")をwcscmpで比較すると一致しませんでした Unicodeで英数字を取得する方法はありませんか XPSP2,VC2008です
>>513 デバッガで変数に格納されてる文字列を見比べて見れ
>>514 ありがとう
取得した文字のNULの前にごみがついてることがわかりました
解決できそうです
_T使うならW使うなという話ではあるが
NULの前にごみって・・・ どう考えても改行コードだろそれ
>>517 はエスパーか・・
初歩的なミスで申し訳ない
Vistaで追加されたAPIの一覧表みたいなのは、MSDNサイトのどこにありますか?
>>520 ( ゚д゚) ・・・
(つд⊂)ゴシゴシ
(;゚д゚) ・・・
(つд⊂)ゴシゴシゴシ
_, ._
(;゚ Д゚) …!?
ほんと、何処見てたんでしょうね・・・(Functions by Categoryの中探してたところで力尽きました)
directXスレと迷いましたがこちらで質問です。 DirectSoundで再生したサウンドの終了を検出するために イベントオブジェクトを使うのですが、 WaitForMultipleObject関数って、イベントがシグナル状態になるまで 制御が帰ってこないんですよね。 作っているのはゲームで、音が終了したら何かしたい、 終了するまではゲームを進行したいというわけなんですが わざわざイベントをチェックするためのスレッドを作るしかないんでしょうか。 「指定したハンドルのイベントが現在どっちの状態か取得する関数」 なんてものがあれば、解決するんですが。 (毎ゲームフレーム毎にそれを呼んでチェックすれば済む)
アクティブウィンドウの選択中のテキストを取得するにはどうすればいいですか? ウィンドウのアプリケーションによって取得方法をたくさん用意しなきゃ駄目ですかね? あと、キャプチャソフトに良く有るように画面上で矩形範囲を指定して、その範囲内に あるウィンドウのテキストを取得する場合はどうすればいいですかね?
矩形内ってのはどういう仕様にするかって点で少し面倒だな。 複数のウィンドウが入る場合があるから。 ある点にあるウィンドウは ChildWindowFromPoint を デスクトップウィンドウから始めて何度も適用すれば取得できるのかな? やったことないから分からないけど。 あとはそれがエディットボックスなら(ウィンドウクラス名で判定できるか)、 普通に取得すりゃええんでないかな。
> たぶん522 ( ´,_ゝ`)プッ
>>522 WaitForSingleObject
使い方はMSDNライブラリで。
>>523 最初から名前欄にレス番号を入れる必要ないよ。
おかげで522である俺がいきなり別の質問したみたいじゃないか。
528 :
522 :2008/04/13(日) 20:55:25
>>526 コピペミスです。Singleを意図してました。
というか、SingleでもMultipleでも質問の意図するところは同じなんですが…
あー、もしかして、タイムアウトを0ミリ秒に指定すれば済む、ってこと?
>>528 > あー、もしかして、タイムアウトを0ミリ秒に指定すれば済む、ってこと?
聞く前に、まずはMSDNライブラリ見ろって。
530 :
522 :2008/04/13(日) 21:02:17
失礼しました。 ずっとMultipleで検索してたからMSDNもヒットしなかったのです。 というわけで解決です。恥ずかしい。
531 :
522 :2008/04/13(日) 21:09:11
余談。 ヒットしないのがそもそもおかしいわけで…良く見てみたら どっかのコピペだったので、最後のsが無かったからヒットしなかった模様。 それくらい、ヒットして欲しいなぁMSDN。
>>531 キーワードに
WaitForMultipleObject
を入れれば、
WaitForMultipleObjects
WaitForMultipleObjectsEx
が出てきますが?
533 :
522 :2008/04/13(日) 23:00:42
>>532 MSDNオンラインなんだけど、
ヒットは7件で、どれもちょっと違う話ばかり。
あー、オンラインか・・・。
オンライン版の検索にはMSNの検索エンジンよりgoogle使ったほうがいいよ
オンライン版わざわざ使う奴はマゾだと思う。
オフライン版なんか持ってない
オフライン版のメモリ使用量の多さにオンライン版を使いつつあるぞ
メモリ使用量が多い? 20世紀からタイムマシーンでやってきたのか?
540 :
デフォルトの名無しさん :2008/04/14(月) 00:03:35
22世紀から来ましたが何か?
オフライン版も相当だめだけどな。
542 :
522 :2008/04/14(月) 00:17:33
googleでもMultipleでs無しだとMSDNにたどり着けませんでした。 本当にありがとうございました。 いっとくけど、コピペ範囲ミスじゃなくて 参考にしたサイトが間違ってたんだからねっ!
なんで急にツンデレになるんだよw
自分は、いまだにVC6世代のMSDNライブラリを併用している。
> 参考にしたサイトが間違ってたんだからねっ! んな言い訳が通るかよ。 甘え杉。
単数形/複数形ぐらい間隔で判断できるようになれよ これだから英語の苦手な日本人はダメなんだよ
うろ覚えのAPIはwindows.hを検索したほうが早いかも。
なんで数によって名前変えるんだよ。
>>552 それはおバカなIMEを作ったMSに言いたまへ
MSIMEの日本語版作ってるのシナチク共だぞ。 で、反日が愛国的だと思ってる連中がまともなの作ると思うか? この間も、魔性でニュースざたになったセン公いただろ? 見事に反日工作の罠にはまっちゃったんだよ。 わざとヘナチョコに作ってある。
出た、ネットで知った真実
556 :
522 :2008/04/14(月) 01:14:44
まとめると、
・Google日本語版を使わない
・site:microsoft.com をつける
・単数形/複数形ぐらい間隔で判断
・日本語版作ってるのシナチク=反日が愛国的=まともなの作らない
全てプログラマの常識、ということですね、わかります。
>>545 と
>>550 うろ覚えどころか初めて知ったので。
まぁ、ちょっとでもアヤシイと思ったら
windows.hを検索するくらいのことはしろ、甘えるなと。
windows.hなんて他のヘッダをincludeしてるだけだから検索しても何も出んぞ
たしかに。 じゃあ、VC2005を使ってるので、 エディタのどっかに適当に貼り付けて、 右クリックして「宣言へ移動」をやることにします。
>>522 毎フレームチェックするなら、そもそもイベントを使う必要ないんじゃないか?
560 :
522 :2008/04/14(月) 03:00:12
>>559 DirectSoundの説明に、「終了(や、音が任意の再生位置にきたこと)を
検知するためには、CreateEventでもらったハンドルを
これこれの構造体にいれてこれこれ設定しろ」と。
それ以外に終了を知る方法がどうにも見当たらないのですよ。
一応、なんかのフラグで取得できるらしいことは見つけたのですが
ミリ秒単位の精度が悪いようなので却下。
DirectXスレの話題になっちゃいますね。
再生時間ぐらい自分で計算すればいいだろ
>>554 どおりで普段使わないような中国人名や中国の地名が一発変換できるわけだw
世界史をまとめるときに相当役立ったが。
564 :
デフォルトの名無しさん :2008/04/14(月) 08:53:40
どおりで(笑)
MS-IMEか。 マイクロソフトにユーザ登録した数年後にリリースされたWindows付属のIMEでも、俺の名字は変換できない。 個人情報保護云々以前の時代の話なので、ユーザ登録のデータから人名辞典を作るくらい、やって当然だろうに。
ジャストシステムがATOKのWin95へのバンドルを断わった時点で、 既に日本のかな漢字変換の歴史は終わった。
何の話をしてるんだw IMM32?
>>566 OS付属のIMEを使うのが当たり前というのは、おかしいと思う。
OSのオマケがショボいからこそ、サードパーティのIMEが生き残れると思うんだが。
マジレスするとMSのせかいせんりゃくにおける日本のプレゼンスが下がったということか
>>567 推敲しないのをIMEの責任にすりかえる莫迦と
特定アジアに対して差別的表現をするのが「愛国的」だと思い込んだ莫迦が
暴れているだけです。
>>565 ユーザの変換の学習を送らせて、辞書を強化するとしても、
ある程度の量がないと追加しないだろ。
お前の名前が相当珍しいんじゃないか。
辞書ツールで何を学習したか眺めるのは面白いけどな。
大抵、文節の区切りだと認識できなかったらしいものが、サ変形動名詞として入っているけれど。
>>572 俺の書き方が悪くて誤解させてしまってスマン。
ユーザ登録というのは、
ローカルの辞書への単語登録ではなく、
ソフトを買った時にハガキやFAXを送ってやるアレのことですよ。
すんごい亀だが
>>411 AppInit_DLLsってVistaで廃止されなかったっけ
たしかレジストリの場所が変わったはず。
576 :
デフォルトの名無しさん :2008/04/14(月) 14:26:59
だから?
煽るなよ馬鹿
そのレジストリを持ち出してる時点で質問者の意図する所とは大きくズレてるのに気付け馬鹿
579 :
デフォルトの名無しさん :2008/04/14(月) 14:38:16
だから?
うわーすげーのびてる
581 :
デフォルトの名無しさん :2008/04/14(月) 16:42:56
だから?
うんこ
583 :
デフォルトの名無しさん :2008/04/14(月) 16:50:08
だから?
ところでVistaのスレッドプールのAPIって、 あれやっぱり、コールバック関数のなかでCRT使ったらリソースリーク起こすよね。 使いどころが分からない。
体?
サントリーのカラダ バランス飲料は
このスレっていつも荒れてるね。 きっとドトネト厨のWin32API撲滅運動だろう。そうとしか考えられない。
>>584 スタティックリンク版はリーク起こすけど、DLL版は大丈夫かもしれない。
ドキュメントには、Libcmt.libにリンクする実行可能ファイル、と書いてあった。
THREAD_DETACHを受け取れる、 msvcr*のほうじゃなくて?
>>588 ん? どういうこと?
CRTのスタティックリンクかダイナミックリンクかがかかわってくるの?
というかMSDNのどこにそんなことが書いてあるの?
あ、そういうことか。 DLL版はDLL_THREAD_DETACHを使えるので、 CreateThreadで作られたスレッドでCRTが使われたとしても、解放できるって事か。 なるほどなるほど。
nlp
ga
595 :
デフォルトの名無しさん :2008/04/15(火) 07:07:52
ちょっと質問があるのですが、簡単な自作ゲームを作成しました。 友人に見せたいと思って、友人のパソコンに実行ファイルとグラフィックをコピーしました。 実行してもエラーが出るだけで動きませんでした。デバッグビルドが悪いのかと思い、リリースビルドを行ってから 友人のパソコンに持って行きました。動きませんでした。 win32APIで作成した後の話なのですが、フリーウェアのような配布型はどのように作成するのでしょうか? 僕のPC、友人のPC共にXPです。開発環境はVC.netです。友人のPCには開発ソフトは入ってません。 よろしくお願いします。
何か DLL が足りないんだろうかな?
「エラーが出ました」とか「動かない」とか…
どーせMSVCRT系統とか、ドトネトがはいってねーんだろ。 manifestを付け忘れてる可能性もあるけど
>>595 どうしてエラーメッセージを無視してまで
エスパー募集するのだろうか?
私はそれが知りたい
「エラー」というタイトルで本文の無いメッセージボックスが出るだけとか win95で必要なDLLがなかったらそんな感じだったなー
ああ、それはなんか覚えがあるw
Windowsにログインしているユーザーのパスワードを取得するAPIは ありますでしょうか? ユーザー名はGetUserName()で取れました。 よろしくお願いいたします。
取れたら意味ねーよなw
OutlookやIEは取れたような
>>603 2000ならwinlogonに対してReadProcessMemoryすれば取れた気がする
なんて穴だらけなOSだ
今度2000が堅牢って言ってる奴を見かけたらこのネタを使うか
>>607 誰でもwinlogonに対してReadProcessMemoryできるわけじゃないぞ。
デバイスドライバとして送り込んで物理メモリをスキャンして探すとか、
ページファイルの中身をスキャンして探すとか、
そういうことまでするのと一緒だと思うのだが。
デバッグ権限を取れば可能だろ まあ2000に限らずadmin権限で使ってる奴はアホだと思うが
誰でもデバッグ権限を(以下略 セキュリティに真っ先に大穴を開けるのは人間だな。
>>611 文脈が理解できてない気がするのは気のせい?
利便性と安全性は反比例の関係にある。 とよく言われる。
ぬるぽ
ガッ・・・///
XPだって物理メモリにアクセスさえできればパスワード無しでログインできたりするらしいし。 仕方が無い部分じゃないのか。
XPはデバッグ権限取れたらNtSystemDebugControlでやりたい放題じゃなかったか? 確かMSの言い訳が「デバッグ権限取れるアカウント(=Administrators)を常用するな」だったような
そりゃデバッグ権限はそういうものだからな。 デバッグ権限さえあれば、 lsass.exeにアドレス空間にコード注入してCreateRemoteThreadすることだってできる。
管理権の無い管理者には残業代が支給されるぞ。
ワロス
〜まとめ〜 ・デバッグ権限が取れてwinlogonにReadProcessMemoryできる状況などというのは システムプロセスにコード注入して青画面出したりできるのでセキュリティ云々以前の話 ・そんなアカウントを常用してるやつはアホ ・利便性と安全性は反比例の関係にある ・管理権の無い管理者には残業代が支給される
そのデバッグ権限というのはDebugger Usersグループに入ってももらえるのか? だったら普段Users(かつDebugger Users)で、 管理者じゃないぞと勇んでいた俺ワロスなんだが\(^o^)/
LogonUserとかパスワード直に書くAPIフックすると取れちゃうんだよな XPだとGINAをこっそり入れ替えてWlxLoggedOutSASから拾ったり
まぁそんな事できてる時点で既に色々やり放題なんだけどな
制限ユーザーでもVisualStudioでデバッグできるし、もうなんだかなあ
DebuggerUserは、レイモンドに言わせると、 「結局何でもデバッグできるんだからAdmini持ってるのと同じ。 セキュリティ用の機構じゃなくて、転ばぬ先の杖。 Admini常用してrmdir /s %windir%とかしたら痛いでしょ」
case WM_COMMAND: 内部のswitch(LOWORD(wParam))の一部を 自作GUIクラスに取り込みたいのですが switch文は上から評価されるから末尾にLOWORD(wParam)を引数に取ればいいとは思うのですが 必要かった場合defaultにどうやって渡せばいいでしょうか?
処理したかどうかを戻り値とか引数経由で返す
DefWindowProcのことを求めているのだろうか? 確かによくわからん日本語やね
switch-caseはほぼ連番で数が多いとジャンプテーブル 数が少なかったり飛び飛びだとif-elseif-elseif-...で二分探索 という風にコンパイラが最適化していた気がする
でっていう
やっと規制解除された…
>>562 たぶんそれが、簡単に取得できるけど精度がわるいってやつです。
バッファがサウンドボードに確保された場合に、タイミングがおかしいらしい。
イントロ1回→ずっとサビ みたいなのを流したいので
ストリームと同じで、シビアなタイミングが要求されるので却下です。
試してないけど。
もうイベント式で自作ライブラリに組み込んだから変えるのもメンドイ。
わかりにくい日本語ですいません switch(LOWORD(wParam)) { case : case : } とcaseの部分に色々処理がかかれてますが foo(LOWORD(wParam))として一部のメッセージだけを自作GUIオブジェクトにて処理をさせたいのですが 不必要なメッセージをどうやってスルーしたらいいかということでした
まだわからん。もっと具体的に。 こういうこと↓?…じゃないと思うけど switch(LOWORD(wParam)) { case : WM_自作で処理しない break; case : WM_自作で処理しない break; case : WM_自作で処理する case : WM_自作で処理する case : WM_自作で処理する 自作のやつ( wParam, lParam ); break; }
>>634 別に叩くとかではないんだけど、マジでわからん
どうやってスルーとかって書いてあるけど、文章のままにとると
>>635 みたいな回答になる。
そもそも自作GUIがなんなのかよくわからん(MFCアプリってこと?)
具体的にどういったところに、どういう意図をもって、どうしたいのか
また、そのときにどういう制限があるのか
質問をもっと整理してから頼む
>>633 そういう用途ならMIDIの方が向いてると思う
音源依存しまくるのがアレだが
>>633 > わるいってやつです。
> 却下です。
人にモノを聞く態度じゃないな。
それはともかくとして、
シビアなタイミングが要求される、という時点で何か間違ってるぞ。
シビアなタイミングが要求されないようにするためのバッファだ。
つかdirectxスレで聞いたほうがいい回答がもらえる気が
>>630 DefWindowProcを自前で作ったらどれぐらい大変なんだろう
処理すべきメッセージ数だけで1000ぐらいありそう
ウインドウメッセージは、OSのバージョンアップで追加される可能性がある。 実際、Windows 3.1時代に、ドキュメント化されていたすべてのメッセージを自前で処理して、 DefWindowProcを使わないプログラムがあった。 いくつかのメッセージは、戻り値が通常と異なったりするが、 それすらちゃんと実装していたので、Windows 3.1では問題なく動いた。 Windows 95にアップグレードすると動かなかった。 自分で処理しないメッセージはDefWindowProcに、常にDefWindowProcに渡すべき。
増える可能性っつーか増えないほうがおかしい XPで仮に全実装しててもVistaでDWM関連メッセージ増えてあぼーん
まあいま、メッセージはあまりにも多いので、自前ですべて実装しようという馬鹿もいないだろうけど。
メッセージループ作るための単なるプレースホルダとしてウィンドウが欲しい場合 RegisterClassで指定するウィンドウプロシージャにDefWindowProcを直接渡しちゃってもいいんだろうか。
ちょっと面白い
IRunnableObjectやIRunningObjectTableって何に使うの?
DefWindowsProcを直接渡すことが合法かどうかは知らんが 合法だとしても、自関数を一回挟んだほうが気持ちよくない?(気分的に)
648 :
デフォルトの名無しさん :2008/04/16(水) 16:48:37
キーボードについた精子を綺麗に拭き取るAPIを教えてください
>>647 DefWindowsProcかよw
てか、CreateWindowsExならちょっと欲しい気もする。
BOOL CreateWindowsEx(const CREATEWINDOWINFO* lpcwi, HWND* phwnd, int nNumInfo);
みたいな感じ。
Explorerみたいなのを作るときにToolbar/TreeView/ListView/StatusBarを一括して作れそう。
まあそんなの作るなら普通はMFCかWTLを使ってウィザードで自動生成するけどね。
>>637 それは実現方法の変更というレベルではなく仕様が違う。
流すのは実は自分の歌声とかだったら無理な話だし
>>639 まぁ、解決したんでいいんです。その後のレスに反応した流れなだけです。
>>648 GetNewKeyboardInBigCamera
>>646 > IRunnableObject
OLEコントロール
kwsk
>>653 とりあえずOLEの本を一冊読むべし。
必読書のくせに絶版になってたりするが。
そしてまたInsideOLEを買ってめんどくささにPGをやめる人が増える
>InsideOLE 本屋で探し回ったけど、見つかんなかったんだよ('A`)
Insideほげほげっていうタイトルの本は読んではいけない。 中身を知って自分で使い方を考えろなんてアホらしい。 中身なんかどうでもいいから、適切な使い方だけを教えてくれればいい。 ところが、そういう本は見つからなかったりする。 なぜならば、 多くのプログラマはサンプルコードを見て使い方を真似ることで、事足りているからだ。
中身を知らないと使えないもの・・・MFCとかATLか。 カプセル化がいいかげんなC++なんか使うのやめてC#を使いなよ。
中身と適切な使い方、両方必要だ。
>>658 Inside本は中身を知りたいときのためのもんだろ。
(とは言っても、往々にして知りたいではなく知らざるを得ないときなんだけどね)
>>661 そうなのだが、
「使い方について」いちばん詳しく解説している本
だと思う人が少なからずいるんですよ。
VisualC++Express版しかないから、Win32APIしかつかえねーよ。 MFCだのATLだの、コードすらみたことない。 ボタン一つ作るのにも、CreateWindowExなんちゃらかんちゃら。 けど慣れちゃったw ウィジィウィッグなリソースエディタが無いのだけはつらいが……
.NETのクラスライブラリもカプセル化がいい加減だろ System.Windows.Forms以下のコモンコントロールなんて旧VBのライブラリを移植しただけとしか思えないし 少し前までソースコードも見れなかったし、よくこんなので開発できるなあと逆に感心する
カプセル化の意味解ってないんでは・・・
666 :
デフォルトの名無しさん :2008/04/16(水) 19:20:36
>>663 さてはお前全角野郎ってことはお前プログラムしたことないな?
>>666 プログラムするって何だよ
お前もプログラムしたことない(笑)だろ
.NETのクラスライブラリっての見たこと無いけど、明らかに隠蔽すべきメンバとかも公開になってんのか?
まぁ、全角で変数宣言とかできるのだが。
>>668 んなこたぁない。
internalなClassやprivateなメンバは多々ある。
では君は全角で変数宣言しててください。
VBで全角の変数名が使えるのを知ったときは感嘆の声をあげたが ソースは混沌としていた。簡単じゃなかった。くりきんとんくいたい
意味わかんね
くりきんとんくいたいだけよんだ
>>664 .NETか。
当初はもっとマシだったらしいが、
VB信者からVBと同じにしろという意見が出て、今のようになったそうな。
もしかして、栗金団食いたい、を意図しましたか?
>>677 MSのクラスライブラリを使わなくてはいけないという縛りはないから、
文句があるなら別のものを使えばいいんじゃないか?
WPF使えよ
Win32APIスレなのに、Win32の話題で荒れる事はあっても.NETの話題では荒れないってなぜなんですか!? 誰かおしえてください
.NETのことをよく知らないので迂闊に口に出せない人が多いからだと思う。
683 :
デフォルトの名無しさん :2008/04/16(水) 21:15:13
MSに聞け
>>683 マイクロソフトのデバッグ用のヘルパーAPIを使って、
プロセスにロードされているモジュールの一覧を取得したほうがいいと思うぞ。
ま、変なことしたいのなら、たまたま偶然動いている・・・でも構わないだろ。
>>683 保証はされていない。
しかし現状のWindowsでは
EXEやDLLのImageBaseは64KBの倍数でなければならない
という制限があるので、64KBの倍数になっている・・・はず。
繰り返すが、保証はされていない。
>>687 カーネルレベルではプロセスの生成時に CreateFileMapping 相当のことをやってるから、
原理上最小のアライメントはページサイズ。(x86 では通常 4KB)
64 KB という制限はそのページの内容で合ってると思われる。
>原理上最小のアライメントはページサイズ。(x86 では通常 4KB) なる。まあページ単位を下回るのはさすがに不自然に感じる ただASLRの件もそうだし、たとえばベースアドレスを手動で64K単位未満に書き換えて さらにPEヘッダを再調整したりするとどうなるのか、とか(そもそもできるのか知らないけど)思ったりした
そもそもエントリポイント(**CRTStartup)が、LoadLibraryやGetProcAddressを含むDLL(=kernel32.dll)から 呼び出されるというのは将来のWindowsで保証されてるのか? まぁインラインアセンブラで[ebp+4]にリターンアドレスがあると決め付けてる時点で環境依存だが。
692 :
690 :2008/04/16(水) 23:02:58
>>689 おおお、面白い記事をありがとう。読ませてもらうよ
あとレス番の順序は守ってよね!
将来はレガシ仕様にはVPCみたいな対応すると思うから別に良いんじゃないの
694 :
686 :2008/04/16(水) 23:10:47
>>687 > 以下のリンカの制限から導いたもの?
いいえ。
PEヘッダの制限。
695 :
688 :2008/04/16(水) 23:14:35
>>691 サブシステムが Win32 なら保証はされてなくても仮定はして OK だとは思う。
Windows NT 系列では確か初期化フローは次のような感じ。
[プロセス生成時]
・ カーネル中の ZwCreateThread
・ ntdll 中のプロセスエントリポイント
・ kernel32 のロードと初期化
・ kernel32 のエントリポイント
・ 各 DLL のエントリポイントの呼び出し
・ EXE のエントリポイントの呼び出し
[スレッド生成時]
・ カーネル中の ZwCreateThread
・ ntdll 中のスレッドエントリポイント
・ kernel32 中のスレッドエントリポイント
・ 各 DLL のエントリポイントの呼び出し
皆何故そんなことに詳しい?
697 :
686 :2008/04/16(水) 23:26:42
>>695 プロセスの初期化フローに依存したプログラムを書いたことがあるが、
Windows Updateで提供されるHotFixあてたら、動かなくなったことがあるよ。
久しぶりにこのスレでためになった
温め納豆の自演だろ
>温め納豆 読めない
EXEをプロセス上に読み込んで実行するのってどうやるの? MapViewOfFileだのLoadLibrary/Ex、MapAndLoad辺りでロード エントリポイントをコールって感じで試したけど上手く行かないです デバッグしてみるとポインタ自体はきちんとエントリポイントを指しているので ロード時のアドレステーブルをなんやかんやする部分ができていないのかな もしかして自前で書かなくちゃいけないんだろうか
ググったら腹減ってきたw
納豆食べられない
DirectShowでCLSID_FilterGraphオブジェクトで動画再生をやってみてるんですが
wmvの再生するとカクるというか、数秒ごとに瞬間的に停止して
ブツ切れ再生?になる。
flvを再生(FLV Splitterを後入れ)すると全く正常。
コードはこれと殆ど同じもの
http://www.geekpage.jp/programming/directshow/renderfile.php Windows Media Playerで同じwmvを再生しても正常。
これ何がまずいんでしょうか?
真空波動研↓
640x480 24Bit Windows Media Video 9 29.97fps 1372.00kb/s
Windows Media Audio 9 44.10KHz 16Bit 2ch 128.02kb/s
ブツ切れといえばバッファリングが追いつかない時の典型的な症状だが…
DialogBoxで生成したダイアログからメインウィンドウにデータを渡したいのですが 大域変数を使用するしかないのでしょうか?
>>709 うーん、なんかint型しか返せないみたいですね・・・
INT_PTRが返せるなら構造体のポインタでも返せばいいだろ(#^ω^)
INT_PTRって単なるint型のポインタだとおもってたーorz
ほほえましい流れw
INTorPTRって型名にすればわかりやすかったのかもな
素直に標準の intptr_t にしてくれと言いたい。
DialogBoxではなくDialogBoxParamを使ったほうがいいと思う。 DialogBoxParamの最後の引数に、構造体のポインタを渡し、 ダイアログボックスで、その構造体に値を格納してデータを帰す そういう感じ。
>>715 c のライブラリ関数ならともかく、OSのAPI を処理系依存で
サイズも知れぬ型で規定できるわけないじゃん。
718 :
デフォルトの名無しさん :2008/04/17(木) 14:56:11
知らないならレスしないで下さい
せっかく和やかなんだから煽るのは止めれ メシマズになる
WritePrivateProfileSection(_T("Section1"),_T("key 1= 1"), path); WritePrivateProfileSection(_T("Section1"),_T("key 2= 2"), path); として [Section1] key1 = ・・・ key2 = ・・・ とiniファイルに登録していきたいのですが [Section1]に登録されるのは最後に実行したWritePrivateProfileSectionの内容だけになってしまいます 使い方が間違ってるのでしょうか?
>>722 MSDNライブラリで、WritePrivateProfileSection のページを読め。
少し前にも同じ質問があったな。 どっか厨向けのインチキ解説サイトに変な記事でも出たのか?
このスレの
>>69 からにありました
お騒がせしました
便乗質問 [Setting1] NumOfElement=3 ;; ここで要素数を定義 Element0="Kuso" Element1="Notanpe" Element2="Hage" とかやって、NumOfElementの値を元に、読み書き時にキー名をsprintfで動的に組み立てて 配列要素を読み書きするのって一般的? 某インフラ向けの開発やってたときの厨テクだけど。
ときどき見かけるよ。
>>727 一般的というか普通はそうするかと。最近使ったファイルの履歴とか。
ところで、GetPrivate〜系って行中の ; 以降をコメント扱いにしてくれないのが気に食わない
GetPrivateProfileStringA("Setting1", "NumOfElement", ...);
とすると "3 ;; ここで要素数を定義" が返ってくる
(この場合は数値が取れればいいからあまり問題ないが)
>>729 INIファイルを読み書きするのは、あくまでも、過去との互換性のためで、
本来はレジストリを読み書きするための代物だからね。
てかレジストリにコメントなんて無いしw
>>729 んなの、自分でパースすべきもんだろう。
commentというレジストリ値を作ればいい
というか、きょうびはXMLファイル読み書きがナウい。
XML使うのは真性のバカ
736 :
デフォルトの名無しさん :2008/04/17(木) 19:46:04
知らないならレスしないで下さい
XMLとかもう終わってるだろ
じゃあYMLで。
今日のNGワード ヽ・´∀`・,,)っ━━━━━━┓
バールのようなものだよ
人間が直にいじらない設定ファイルなら、何だっていいよ。 時にはBOOSTのシリアライズを使ってもいいだろう。
742 :
デフォルトの名無しさん :2008/04/17(木) 20:17:39
知らないならレスしないでください
>>727-729 なんだ一般的なのか。俺、そのやり方思いついたとき「俺SUGEEwwwwww」とか思ったのにw
744 :
デフォルトの名無しさん :2008/04/18(金) 02:52:38
ファイルのパスを渡して アイコンオーバーレイを含めた完全なアイコン情報を取得するにはどうすればいいですか?
>>744 SHGetFileInfo
IExtractIcon
IShellIcon
IShellIconOverlay
好きなの使え。
質問があります。 midiOutGetDevCaps()でMIDIデバイスを取得したんですが、MIDI Yokeの仮想MIDI Outデバイスが含まれていませんでした。 midiOutGetNumDevs()でデバイス数を取得してもその分の数は含まれていませんでした。 しかしMusic Studio ProducerなどのDAWソフトではそのデバイスが表示されていて正常に使えています。 何か他に取得する方法があるんでしょうか? 解決策やヒントがあれば教えてください。 ちなみにOSはXP x64です。
ハードウェアの追加とかだっけ?XPならコンパネ→マウスとかハードのとこ→左ペイン上の追加のやつ
749 :
デフォルトの名無しさん :2008/04/18(金) 12:18:11
知らないならレスしないで下さい
midiOutGetDevCapsでエラーは発生してないんすか?
>>747 そもそもMIDI Yokeってx64に対応してたか?
32ビットでビルドしたら出てくるんじゃね?
>>748 無知が適当に答えると的外れすぎるのは見ていて恥ずかしい
Windowsのアーキテクチャだと、32ビットと64ビットを変換するサンクで全てを解決できないんだよな。
System32とSySWOW64のどっちを使ってるか
Mapleも64ビット対応してないのか まぁ今のところDTM/DAW用途で64ビットOSを使うなんて正直馬鹿げているとは思うが
たいていのVSTが使えないからなぁx64だと SONARとか本体は64bit対応進んでるんだが
質問です。 デスクトップ画面がアクティブな時に特定の処理をしたいと思い、 GetDesktopWindowで取得した値とGetForegroundWindowで取得した値を比較することで 解決しようと思ったのですが、どうやら値が一致しません。 ウィンドウではなく、デスクトップがアクティブかどうかを判別するにはどうするとよいのでしょうか?
>>759 NULLだったりしない?
どのウィンドウにもフォーカスが当ってない場合、GetForegroundWindowはNULLを返すよ。
761 :
759 :2008/04/18(金) 20:06:20
>>760 C#からDllImport経由で呼び出して、IntPtrとして値を受け取っていたのですがl、65688という値が表示されていたのでNULLではないようです。
質問した後も色々と試してみたりした所、FindWindow("Progman", "Program Manager") で得られた値と
GetForegroundWindowで得られた値を比較する事でデスクトップ上にあるかどうかを特定する事ができましたので
この方法でやってみようと思います。 どうもありがとうございました。
762 :
747 :2008/04/18(金) 20:56:08
まさに
>>752 のとおりでした。
皆さんありがとうございました。
IEにWordドキュメントをドロップすると、WordのActiveXコントロール(Automation)が読み込まれて表示されますが、 IEのように.doc拡張子から、関連付けられたActiveXコントロールを取得するには、レジストリのどこを読めばいい?
多分APIになると思うのでここで質問。 Windows9x系でファイル名にNEC 特殊文字とかIBM選定IBM拡張文字の重複した文字を 使用した場合どういう扱いになるんでしょうか? 試した分にはどっちかに変換されてるっぽいのですが、詳しいサイトとかあれば教えてください〜。
>>763 レジストリを自分で読むより、OleCreateFromFileを使おう。
>>765 ありがとです。
でも、それだとWord.Document(Embed)になってしまうのです。
また全角厨か
Do でもいい Yo!
ディスプレイ上の任意の点のRBG値を取得することってできる?
できるよ
kwsk
ディスプレイと同じサイズの透明なウィンドウを作成してGetPixel??
デスクトップのDC取ってGetPixel。 メディアプレイヤーとかオーバーレイ使ってると、見た目と違う値が取れちゃうけどね。
ディスプレイにどんな色が表示されているかはハード依存の話。 光学的な測定器を用いるしかない。
>>775 770が聞いているのは色じゃなくてRGB値だから、そこまで持ち出すことないだろうに。
>>776 770が聞いているのはRGB値じゃなくてRBG値だろ
# 764とは別人なので念のため IMultiLanguage interfaceを使って、UTF8の文字列をUTF16(UCS2?)に変換する ことは可能でしょうか?UTF16のCodePageの値が見つからなくて。 ちなみにIMultiLanguage interfaceを使って、UTF8 <=> SJISは成功してます。 SJISでなくてもローカルコードなら通るようになってます。 -- 自分の作ろうとしてるのはVC6で * 処理は外からUTF8で文字列が入ってくる * 内部的に文字列処理を行う * 国際対応予定のソフト UTF8 → SJIS(ローカルコード) → A2Wマクロ → 文字列処理でいいじゃんとふと思ったけど、 SJISを一瞬通過させただけで、マルチ言語が扱えなくなる。 なのでUnicode Projectにして、外から来るUTF8は直接UTF16にしなきゃいけない。 という背景でつ
>>778 IMultiLanguage は使ったことないのでパラメタがどうなってるかしらないけど、
Windows のコードページで UTF-16 なら 1200(Unicode) か 1201(Unicode Big-endian) じゃないの。
>>780 れすありがとう!おいらも今見つかってちょうど試し始めてたとこ。
(ついでの質問失礼かもしれないけど)
ちなみにUnicode ProjectのLPWSTRってLE?BE?
LEかなと思って試し始めたんだけど、自分のマシンで動いたとしても
機種依存だったらいやだなと思っていて。
機種依存って、LPWSTR 自体が Windows 依存な typedef なんだし・・・。
>>781 C
convertFromとCnvertToはIMLangConvertCharsetのらっぱだとおもうので
IMLangConvertCharsetで試しているとこです。
自分のマシンで結果出たら一応法こくしまつ。
>>783 厳密にはWCHARがLittle EndianかBig Endianかということなんだけど
なんか変なこと聞いてるかな?
786 :
m :2008/04/20(日) 01:35:42
×機種依存 ○アーキテクチャ依存 いいかた悪かったです。
Windows 自体がリトルエンディアン依存だから 心配する必要はないだっしょ。
さんくす!そのひとことが聞きたかった(^o^)/
>>784 もしIMultiLanguageでダメだったら同じかもしれないけど、
MultiByteToWideCharで1200を指定して変換するとかでいけないかな?
って凄い遅いね、スマ。
とりあえず L'あ' (0x3042) は [42 30] だったよ
マイクロソフトのドキュメントの悪い癖なのだが、 クラス名ではなくインタフェース名で呼ぶのはどうなのよ。 同じインタフェースを実装し、 そのインタフェースの仕様どおりの動作をするが、 実はまるで別のクラスだったりしたら、どーすんの。 いや、そんなのない、っていうのはわかってるんだが。
仕様通りの動作なら具体的なクラスが何だっていいと思うんだが。
論点が何かわからなかった・・・
そもそもx86自体がリトルインディアンでは。
典型的な、 同一ジャンルの関数を集めただけのクラス なんだよな。 クラスである必要は全くなくて、 CスタイルのAPIでもいいのにな。 しかも引数がBSTRですらないし。
IHtmlDocumentを使って、ほげほげをしているんですが、うまくいきません なんて質問があって、てっきりIEかと思っていたら、別のブラウザだった なんてことで混乱すると思うんだが。 単一のクラスしか実装しないのなら、それはインタフェースではないわな。 COMの制約上、インタフェースではないものまでインタフェースとして実装しなきゃならん弊害だ。
とりいそぎ、1200を指定してS_OKかえって期末た。 ほかのバグにはまってしまったんで、中身の話までできないけど。。 ひとまずありがと!
>>797 このあたりはオブジェクト指向の基本だから、勉強してみるとおもしろいよ。
>>798 おめ!VC6は昔よくフリーズして泣かされたよ
それより誰か
>>795 のインド人に突っ込んであげてくれ
もう少し詳しく報告したかったけど、夜更かしすると体にいくないので寝まつ。 円バグも明日起きたら治ってるでしょう。
IDispatchなんて作って使いはじめた人間は、どうかしてると思うんだが。 オーバーロードできないのも、勘弁して欲しい。
>>802 COMはC++じゃなくてCでも実装できるからオーバーロードなんてできなくて当然
804 :
デフォルトの名無しさん :2008/04/20(日) 05:51:19
質問があるんですが、仮想画面に描いたグラフィックが表示できないで困ってます。 転送の間違いなのか、仮想画面にちゃんと描けていないのかチェックしたいと思ってます。 デバッグで仮想画面のを見る方法知りませんか? オーナードローリストなのですが、実画面だと表示できるのに、仮想画面だと表示できない問題で悩んでおります。 ご教授お願いします
805 :
804 :2008/04/20(日) 09:48:10
グローバル変数と同じ名前の内部変数がありました。。うっかりしてました。 でも、デバッグで仮想画面見ることできたら便利なんだけどなぁ
806 :
デフォルトの名無しさん :2008/04/20(日) 10:39:52
UTF8<->UTF16の変換は自分で書いてもすぐだよ。 RFCにそのものずばりのがあった。
>>803 手動でオーバーロードを解決する方法を残しておけばよかっただけだから、
それは理由にならんだろう。
>>807 IDispatchは、マルチ言語ブリッジ運用のための巧妙な仕掛け。
scripting hostあたりのMSDN精読するとおもしろさがわかる。
このあたりの考え方は.netに違う形で引き継がれている。
IDispatchは運用上のものだったが、IDispatchExになると真価を発揮。
もれもIDispatchEx対応のコンポーネントはかなり作ったよ。
興味があれば動的オブジェクト指向あたりのキーワードで。
まあ、ここはwin32 apiなのでこのあたりで
>>806 Thanks.
おいらもどっかでそのコードみかけた。Plan B的にはそれかなと思ってた。
>>808 RFCの仕様をみれば、自分でフルスクラッチで作れるってことだろw
>>805 仮想画面ってメモリDCのことか?
BMPデータとしてファイル保存して見ればいいだろ
>>809 > マルチ言語ブリッジ運用のための巧妙な仕掛け。
あまりに下手な仕掛けでムカつくのですが。
scripting hostの実装者の激しい手抜きでしかない。
IDispatchなしの任意のクラスやインタフェースを
スクリプトから使うための仲介をするクラスを作れるのだから、
なぜscripting hostが、それを実装しなかったのか、と。
>>813 うーん、何を言いたいのかわからない。
興味がなければ議論にならないので、このあたりでご勘弁。
興味があれば、まずは中立な気持ちでIDispatch関連、あさってみてください。
815 :
デフォルトの名無しさん :2008/04/20(日) 13:55:30
知らないならレスしないでください
せっかくキーワードも示したのにあほらし
817 :
デフォルトの名無しさん :2008/04/20(日) 14:23:29
>>808 いや、コードは自分で書かないといけないんだけど、アルゴリズムが単純で
RFCに解説があるからすぐ書ける。
以前、std::codecvt書いたときにRFC見た。
818 :
デフォルトの名無しさん :2008/04/20(日) 14:26:31
いや、ここ質問箱で議論スレじゃないから両者とも矛を収めてくれw
ネタにマジレスすると、IDispatch自身はCOMインタフェースであれば何でも
取り扱えるようにするのが目的だからこれ以上具象化はできないと思う。
この界面では利便性よりも普遍性を取ったってことで、これは理性的な判断だと思う。
でも、直接これを利用して実装を始めると各言語に落ちたときにやるべきことが
多すぎるのも事実だと思う。
そういう意味では+αのユーティリティが欲しくなるのも頷ける。
というわけで
>>813 はCodeProjectあたりにその仲介してくれるユーティリティクラスを公開してくれw
しかし天気もいいとは言いがたいし暇だな・・・秋葉にでも突撃してくるか。
こういう日はコーディングに限る
↑ウチの会社でも2chに書き込みしてることを「コーディングしてた」って言う奴がいるぜ 残念だがお前の仕事はデザインだ
馬鹿だなあ 2ちゃんに自動投稿するスクリプトをコーディングしていたのだよ
ばかにすると、田代砲つくっちゃうぞー
826 :
デフォルトの名無しさん :2008/04/20(日) 15:20:28
IDispatchは現実解でしょう。 スクリプトなどのグルー言語から使われるような粒度のクラスは、 IUnknownなどの屋台骨かつ裏方さんのインターフェースを除くと、 実装しているインターフェースは大概1つでしょう。
まあまあ。 一昔前に大盛り上がりしたネタだから、振られれば楽しい話がいっぱいあるけど すれ違いなので矛収めさせていただいたんで、Closeしましょ。
そのクラスしか実装していない、 そのクラス専用のインターフェース以外に、 スクリプトに見せるものがあるのか、と。 そういうインターフェースが複数あるということは、 そのクラスは複数の機能を持っているわけで、 そういうのはクラス設計が悪い。 とはいえ、IDispatchやIDispatchExは、 各個のクラスが実装すべきものではないな。
無視無視
>>802-803 自分で実装すれば、IDispatchでもオーバーロードは可能だろ。
引数はみんなVARIANTなんだから、中身のデータ型を見て処理を変えるようにするなり、
(オーバーロードされた)実際の処理を行う関数を呼び分けるようにするなりすればいい。
>>831 IIDに対してカスタム実装すんなよ、ということなのであって、
IWebBrowser2という名前を使うなよ、ということではないだろ。
>>832 まず、オーバーロードできないのはIDispatch特有の問題ではない。
次に、システムがやるべき処理を、個別の実装がやるのはオカシイ。
そもそもオーバーロードという言葉が出てくる時点でおかしいんですお。 Interfaceをわかってない。
835 :
デフォルトの名無しさん :2008/04/20(日) 16:21:25
IWebBrowser2の使い方教えてください。
>>834 そうなの?
オレはわかってないクチなんだけど、インターフェースという概念と
オーバーロードが合わない理由をkwsk
COMはVisualBasic(6以前)に影響されすぎ。 というか、VBの内部構造を公開したような代物。
>>836 書くと荒れそうなんで、Javaでいうところのextendsとimplimentsの違いとだけ。
基本的にオブジェクト指向一般の議論範疇。
>>819 がきれいにまとめてくれたように、Win32とかんけいない。
>>839 オーバーロード云々ってのは、
IFoo::Hoge()
IBar::Hoge()
を、IDispatchで両方扱えないっていう話ではなく、
IFoo::Hoge(int x)
IFoo::Hoge(BSTR* y)
が、できないってことでしょう。
そういうのはVARIANTで受ければいいんだけど、
それは実装で回避しているに過ぎない。
>>839 extends?
オーバーライドと混同してないか?
他に行ってくんない?
843 :
674 :2008/04/20(日) 17:00:06
>>676 ありがとう。
2000とかのNT系なら知ってたんだけど、これ9x系のファイル名にも関係あるの?
意味わかんね
>>836 どのオーバーロードも結局同じもの(例えば一番引数の詳しいオーバーロード)を呼び出す
というのであれば、NVIパターンで仮想関数を1つにまとめるのが便利。
もはやCOMと関係ない話だけど。
implimentなんて書いてる時点でプログラミング知識の程度が知れてしまう 要するに、知ったか乙ってことだな
InterLock系を使って同期オブジェクトの高速化を行った(実は2秒の処理中2ミリ秒も変わってない) 「俺、神・・・ふぅ」とか悦に入ってた 先輩から「アルゴリズム見直して衝突起こってるところ減らして。そこ高速化しても変わらないから」と当たり前の指摘を受けて沈没した 仕方ないので、再び賢者になるべくエロ画像探し<今ココ VC 2008 Expressのおかげで家でもコーディングできて嬉しいなっと(涙
>>847 "InterLock" じゃなくて "Interlock" な。"Internet" と同じ。
>>847 仕事なら、それなりのプロファイラ使って調べてから、コードいじろうぜ。
>>849 指摘ありがd
適当ななんちゃってプログラマでごめんね
>>850 まあ実は高速化の必要もなかったんだ・・・
そして暇もてあましてJudeのクラス図でやるおを書く俺<今ココ
>>838 COMに影響を与えたVBは偉大だな。
ってそんな訳ねえよ。逆だよ、逆。
>>838 知ったか厨のホラ話は聞き飽きたのでもういいよ
IDispatchの起源はどこだ?
OLE Automationといって、ExcelやWordからVBAを使って何かをするためのもの。
>>852 VBに影響を与えたCOMは偉大ですよね、わかります
もう64スレか 128スレまでもう一息だな
他のPCに大量のデータを渡したい場合、 何を使うのが最速? 何を使うのがCPU負荷最小?
HDD繋ぎ換え
>>859 MSCSとかを使ってディスクを共有して、所有権とかを移すってことですか?
DVDRWにでも焼けばいいんじゃね?
うんにゃ、ただ物理的に繋ぎ換えるだけ。 データ量に依っては十分最速になり得るし、CPU負荷は0。
>>862 ファイバーチャネルやiSCSIを使って繋ぎ換えるんですか。
SANまで入れるとなると、とてもではないけど、手が出ない。
おまえはなにをいってるんだ。いやマジで。なんか勘違いしとらんか?
もしかして、 人間が手で、転送元のPCのHDDのケーブルを抜いて、転送先のPCに差し込む という話だったんですか? それはWin32APIとは違う次元の話だと思うんですが。
>>867 それをしてはいけない(できない)状態ってこと?
例えば顧客情報のぶっこぬきがしたいとか?
素直にGigabitEtherでソケット通信といってやれ。 PCIバス並みの転送速度だから速度に不満は無いだろう。
IEEE1394をクロスケーブルで繋いでもいいかもしれんな。
え、IEEE1394でクロス??
>>868 そうです。
というレスが返ってきたらどういうアドバイスをするつもりなのか知りたい
InternetReadFileでインターネット上のファイルを読み込むときってバッファを 大きめに確保しておくかvectorで読み込むたびに増やしていくしかない? 事前にファイルの容量わかる方法ってないですか?
そもそもHTTPでサーバがContent-Length送ってくれるなら判ってもいいけど、 返さないサーバもあるから、絶対確実な方法は無いよね
InternetOpenURLの時点で分かってるんじゃないかなぁ? ほとんど全部がこのAPIの呼び出しに時間くってるみたいだし
cgiが返すページなんかだとContent-Lengthは期待できないね
chunkedだと容量わからないよね
ありがとう。やっぱりvectorの方法がまだ一番適切なのね
俺だったらめんどくさいからReadSizeに0返すまで一時ファイルに書き出しちゃうな
vectorを何度も拡張するのはアレなので、 InternetReadFileで受け取った時にはとりあえずlistにポインタつっこんどいて、 最後に繋げたらどうよ。
まぁインターネッツの向こう側は基本的に信用しちゃダメっすよ
ReadProcessMemoryで先頭から存在するだけ全部読み取りたい場合 読み込むバイト数はどうやって求めるんでしょうか? 128KBで読んだらほぼ取れましたが、全部取ろうと思って256KBを指定 したらエラーコード299で失敗してしまいました。 少しづつ読んで失敗するまでループさせるのが正しいやり方なのかな?
インターネットって怖いですね
それはマスゴミが作り上げた幻想にすぎない。 我々はきゃつらに思い知らせる必要がある。 情報統制を打ち破らねばならん。これは聖戦(ジハード)である!
>>882 VirtualQueryで4KBずつチェックしてから読むべし
>>883 マンションなんかに住んでいたら耐震偽装でいつ倒壊するか分からんし
コンビニでペットボトル買って飲もうとしたら毒物が入ってるかも知れんし
餃子なんて何が混ざってるか分からんから喰えた物じゃない
生死にかかわらない分、まだインターネットは安全な方だと思うが
>>878 サイズが分からないものを入れる場合は、vectorよりもdequeの方がいい。
なんで?
889 :
デフォルトの名無しさん :2008/04/21(月) 13:04:23
知らないならレスしないでください
伸張する場合にコストが低い
いろいろ見てみたらFAT32もファイル名にはUnicodeを使っているから
SHIFT-JISとUnicode間の変換問題に関係してたのか。
ずっとSHIFT-JISで記録されてると思ってた。
>>767 番号間違ってた。ありがとう
知らないならレスしないでくださいって俺が流行らせたんだけどな
alt属性の設定された画像やブラウザのボタンの上にカーソルを乗せると、 大方の環境ではその項目を説明する「ポップヒント」が出ますよね? それをダイアログボックスに貼り付けたチェックボックス等に 実装したいのですが、Win32APIではその様なことってできますか? やっぱりカーソル座標とか調べて全部作らないと無理でしょうか?
ツールチップのこと?
ググってみたらポップヒントじゃなくてツールチップって言うんですね・・・ そうです
まあガンガレや
ツールチップという名前までわかれば、 とりあえずMSDNライブラリでtooltipを検索してみ。 一通り説明しているドキュメントが出てくるから。
900 :
デフォルトの名無しさん :2008/04/21(月) 21:51:04
まあ、いいんでない
>>896-898 急な用事でレスが遅くなりましたが・・・
今からしばらく時間があるのでちょっと調べてみます。
助かりました、お付き合いくださってありがとうございました。
しょうもない質問ですが、ググってもいまいちわからなかったので教えてください。 Windowsでunicodeでも非unicodeでも対応できるように _T(x) のマクロを使っていますが、 良く参考に行くサイトでは TEXT(x) マクロを使用しています。 他にもunicode用として __T(x) とか _TEXT(x) とかのマクロがありますが、 汎用性(Windows環境限定で他プロジェクトへの移植)を考えた場合、 どのマクロを使えば問題が起きる可能性が少ないでしょうか。 _T(x) はtchar.hに、TEXT(x) はwinnt.hに定義があるようです。
経験的に直接TEXT("")はやめた方がいい。 MSに振り回されたくなければ自分で定義し直す事。 #define MYENC(x) TEXT(x)
それなんか意味あんの?
馬鹿には見えない服
9x捨てて、直接 L"" って書いちゃダメ? 将来、UTF-8か32になったらしらんけど。
910 :
デフォルトの名無しさん :2008/04/22(火) 01:11:08
MSに振り回されたくないのにWin32で開発してるのか 変な人だな
MSに振り回されたくないのにこんなスレにいるのか 変な人だな
MBCSとUnicodeの両方についてテストまでしっかりやるのでなければ、 どちらか片方固定でコーディングしたほうがいいと思う。 マクロを使って書かれているけど、実はUnicodeでしか正しく動かない なんていうことになると酷いからね。 必要になったときに、結局はコードをすべて点検・テストするなら、 そのときに変更したほうが、いい。
>>913 L""は既にCにもC++にも入っている。
gccでも使える。マジオススメ。
でもCygwinでwprintfとかwcoutとか使えないのは勘弁、なんとかしてくれ。
>>914 やべ、今までずっとMS独自拡張だと思ってた。恥ずかしい。
いい加減ググルのマンドクセしたまにはここで聞いてもいいよね? D&Dされた物をフォルダかどうか判別するにはどうすればいいですか DragQueryFileで得た文字列ではフォルダと拡張子無しファイルの区別が付きません
>>918 GetFileAttributes
あるいは
PathIsDirectory
を呼んで確認してみるのはどう?