Win32API質問箱 Build41
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2006/03/03(金) 22:23:36やさしいお兄さんたちが答えてくれるかも。
過去スレ、関連リンクは>>2-5くらい。
■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。英語版(http://msdn.microsoft.com)の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvencedWindowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで。
0002デフォルトの名無しさん
2006/03/03(金) 22:24:1840 ttp://pc8.2ch.net/test/read.cgi/tech/1138893959/
39 ttp://pc8.2ch.net/test/read.cgi/tech/1136673250/
38 ttp://pc8.2ch.net/test/read.cgi/tech/1133798345/
37 ttp://pc8.2ch.net/test/read.cgi/tech/1131884991/
36 ttp://pc8.2ch.net/test/read.cgi/tech/1128951330/
35 ttp://pc8.2ch.net/test/read.cgi/tech/1125850096/
34 ttp://pc8.2ch.net/test/read.cgi/tech/1122723009/
33 ttp://pc8.2ch.net/test/read.cgi/tech/1120153520/
0003デフォルトの名無しさん
2006/03/03(金) 22:25:0031 ttp://pc8.2ch.net/test/read.cgi/tech/1114762194/
30 ttp://pc8.2ch.net/test/read.cgi/tech/1112345886/
29 ttp://pc8.2ch.net/test/read.cgi/tech/1110281860/
28 ttp://pc5.2ch.net/test/read.cgi/tech/1108199304/
27 ttp://pc5.2ch.net/test/read.cgi/tech/1106103119/
26 ttp://pc5.2ch.net/test/read.cgi/tech/1104109858/
25 ttp://pc5.2ch.net/test/read.cgi/tech/1101393155/
24 ttp://pc5.2ch.net/test/read.cgi/tech/1098967135/
23 ttp://pc5.2ch.net/test/read.cgi/tech/1095534704/
22 ttp://pc5.2ch.net/test/read.cgi/tech/1092524669/
21 ttp://pc5.2ch.net/test/read.cgi/tech/1090422324/
20 ttp://pc5.2ch.net/test/read.cgi/tech/1088140233/
19 ttp://pc5.2ch.net/test/read.cgi/tech/1084697545/
18 ttp://pc5.2ch.net/test/read.cgi/tech/1081702990/
17 ttp://pc5.2ch.net/test/read.cgi/tech/1077470361/
16 ttp://pc2.2ch.net/test/read.cgi/tech/1073830065/★
15 ttp://pc2.2ch.net/test/read.cgi/tech/1069339866/★
14 ttp://pc5.2ch.net/tech/kako/1065/10653/1065328397.html
13 ttp://pc5.2ch.net/tech/kako/1059/10595/1059549320.html
12 ttp://pc5.2ch.net/tech/kako/1056/10560/1056033645.html
11 ttp://pc5.2ch.net/tech/kako/1052/10526/1052651750.html
10 ttp://pc5.2ch.net/tech/kako/1047/10478/1047819779.html
9 ttp://pc5.2ch.net/tech/kako/1044/10449/1044929160.html
8 ttp://pc5.2ch.net/tech/kako/1040/10409/1040964626.html
7 ttp://pc3.2ch.net/tech/kako/1036/10366/1036654893.html
6 ttp://pc3.2ch.net/tech/kako/1032/10325/1032548635.html
5 ttp://pc3.2ch.net/tech/kako/1028/10285/1028580373.html
4 ttp://pc3.2ch.net/tech/kako/1023/10233/1023361418.html
3 ttp://pc.2ch.net/tech/kako/1017/10170/1017072275.html
2 ttp://pc.2ch.net/tech/kako/1006/10067/1006783012.html
1 ttp://pc.2ch.net/tech/kako/991/991576947.html
0004デフォルトの名無しさん
2006/03/03(金) 22:27:00http://www.microsoft.com/japan/msdn/
- 猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/
- Platform SDK Update
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
http://www.google.com/
- Windows® Server 2003 SP1 Platform SDK Full Download
http://www.microsoft.com/downloads/details.aspx?familyid=EBA0128F-A770-45F1-86F3-7AB010B398A3&displaylang=en
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/XPSP2FULLInstall.htm
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm
- Win32 API入門
http://wisdom.sakura.ne.jp/system/winapi/
- Win32 プログラミング入門
http://www7.plala.or.jp/keny01/windows/win32/
- 書籍
Advanced Windows
http://www.amazon.co.jp/exec/obidos/ASIN/4756138055
-おまけ
dat落ちしている過去スレが見れるかも。Build19が見たい人、余裕のある人は●でも買ってやってくれ。
http://makimo.to/cgi-bin/search/search.cgi?q=Win32API&andor=AND&sf=2&H=&view=table&shw=&D=tech
0005デフォルトの名無しさん
2006/03/03(金) 22:30:04Webインストーラのページへリダイレクトされるようになっている。
この状態で果たして>>4にPlatform SDK UpdateのURLを載せる必要があるのか?
それともまさかそうなるのは俺だけ?
0006デフォルトの名無しさん
2006/03/03(金) 23:16:27ディスプレイの出力先で内蔵グラフや外部CRTやS-VIDEOといった
出力先を選択することが出来ますがこれってAPI的に切り替え可能ですか?
ニッチな問題なので適当なページが見つからなくて…。
0007デフォルトの名無しさん
2006/03/04(土) 00:00:350008デフォルトの名無しさん
2006/03/04(土) 02:21:31Wordのための、検索ダイアログのようなものを作りたいのです。
Wordの上に検索ダイアログを表示して、
検索ダイアログのエディットコントロールに文字列を入力すると、
Wordのメインウインドウの文書が検索され(Officeオートメーションを使うつもりです)、
該当文字列が、反転表示される、といったものです。
こういう検索ダイアログを、Wordとは別のアプリ(プロセス)で作りたいのです。
Wordのウインドウを親ウインドウに指定してポップアップウインドウでダイアログを表示させるまでは簡単ですが、
文字列入力のために、ダイアログのエディットにフォーカスを設定すると、
Wordの方はフォーカスが失われるので、反転表示が消えてしまいます。
当たり前ですが、なにか他のウインドウにフォーカスがあたったら、
いままでアクティブだったウインドウにはWM_KILLFOCUSメッセージが行くでしょうから、それを受けてWordが
反転表示を消してしまうのだと思います。しかし、それを消さないようにしたいのです。
Wordのオリジナルの検索ダイアログでは、ダイアログウインドウにフォーカスが当たっているのに、
メインウインドウは非アクティブ表示にならず、反転表示されたままです。
こんなことを、別アプリが作った検索ダイアログでも、できないものでしょうか?
以上、ご存知でしたら、ぜひ、ヒントなりとも、お教えいただければ幸いです。よろしくお願いします。
0009デフォルトの名無しさん
2006/03/04(土) 06:34:34これを書き換えたり名前変更したりするのは、どの関数を使えばいいのでしょうか?
0010デフォルトの名無しさん
2006/03/04(土) 06:41:00何を指定するのがいいの?CP_ACP, CP_OEMCPの違いって何?
0011デフォルトの名無しさん
2006/03/04(土) 07:44:26ケースバイケース。MSDN見れ。
0012デフォルトの名無しさん
2006/03/04(土) 07:55:27ウィルスの作者さん、こんなところで質問しないで。
0013デフォルトの名無しさん
2006/03/04(土) 08:07:14対象のファイルを使用してるプログラムをすべて終了してから
MoveFile OpenFile WriteFile等
0014デフォルトの名無しさん
2006/03/04(土) 08:31:08迷ったらCP_ACP、将来的に国際化対応を考慮する気があるならCP_THREAD_ACPも悪くない。
OEMコードページというのはDOSが使っていたコードページ。だからCP_OEMCPはあまり出番がないと思う。
0015デフォルトの名無しさん
2006/03/04(土) 08:37:04ということは、コマンドプロンプトに出力する場合とかは
CP_OEMCP を使う、という理解でOK?
0016デフォルトの名無しさん
2006/03/04(土) 10:32:030017デフォルトの名無しさん
2006/03/04(土) 12:58:51システムトレイ上のアイコンが右クリックされると
TrackPopupMenuでポップアップメニューを表示しているのですが、
このときキーボードによるメニューの選択がうまくいきません。
(いくときもあるし、いかないときもある)
具体的には、Exit(&E)というポップアップメニューを表示しているのですが、
このときキーボードでEを入力しても終了したりしなかったりでうまくいきません。
いろいろ検索したり過去ログを読んだりしましたが、どうしても解決できなかったので
ここで質問させていただきました。どうすれば解決できるかどうかよろしくお願いします。
ちなみにソースコードは
http://homepage3.nifty.com/catfood/up/src/up2656.zip
です。
0018デフォルトの名無しさん
2006/03/04(土) 13:15:540019デフォルトの名無しさん
2006/03/04(土) 13:28:29SetFocusを入れてもうまくいかないんです・・
0020デフォルトの名無しさん
2006/03/04(土) 13:52:140021デフォルトの名無しさん
2006/03/04(土) 14:20:18{
const HWND fw = GetForegroundWindow();
const DWORD idfw = GetWindowThreadProcessId(fw, 0);
const DWORD id = GetCurrentThreadId();
AttachThreadInput(id, idfw, TRUE);
SetForegroundWindow(window);
SetFocus(window);
AttachThreadInput(id, idfw, FALSE);
}
として、SetForegroundWindowをforceForegroundedに置き換えてもうまくいきませんでした
0022デフォルトの名無しさん
2006/03/04(土) 14:35:46_ (m) _ピコーン
|ミ|
/ .`´ \
('A`) そうだ諦めよう!
ノヽノヽ
くく
0023デフォルトの名無しさん
2006/03/04(土) 15:21:51アイコンが左クリックされた時にメニューを表示するようにしたらうまくいくようです。
右クリックしたときにこちらが表示するポップアップメニューに少し遅れて、
タスクバーを右クリックしたときにでるポップアップメニューがたまに表示されるので、
なんだかこいつが原因のような気がします。
0024デフォルトの名無しさん
2006/03/04(土) 18:41:59forceWindowedの直前にSleep(100)を入れると
だいぶキーボードによる選択がききやすくなりました。
しかしこの方法は逃げてるようで納得いかないです。。
0025デフォルトの名無しさん
2006/03/04(土) 18:42:320026デフォルトの名無しさん
2006/03/04(土) 18:43:57CreateToolbarExでTBSTYLE_FLATを指定してフラットツールバーを作ろうとすると、
ボタン背景がWNDCLASSで指定した背景色と同じになってしまいます。
フラット指定をはずすと、グレイ?っぽいシステムカラーになるのですが、
フラットのときでもシステムカラーを背景色にするのは無理なんでしょうか。
0027デフォルトの名無しさん
2006/03/04(土) 18:50:550028デフォルトの名無しさん
2006/03/04(土) 18:54:29右クリックでもちゃんとできますがね
キミの作り方が悪いだけかと
0029デフォルトの名無しさん
2006/03/04(土) 18:57:32全画面表示するとDOSプロンプトと同じような灰色のバーのものが出来上がりました。
下記のように、灰色の部分を省いた訳なんですが、これだとデスクトップの上端にピッタリと張り付きません。
ウィンドウをつまんで動かせるスペースを考慮してずれるのですが、助けてください。。
case WM_CREATE:
hRgn = CreateRectRgn( 0, 25, 400, 800);
SetWindowRgn(hWnd, hRgn, TRUE);
break;
003029
2006/03/04(土) 19:02:470031デフォルトの名無しさん
2006/03/04(土) 19:49:08その通りです。
ほかの常駐アプリではちゃんと出来ているみみです。
それで、私の作りのどこが悪いのかが分からないんです(´・ω・`)
0032デフォルトの名無しさん
2006/03/04(土) 19:52:25それはもう自分で調べろよ。
作り方が悪いってわかっただけでも収穫だ。
はい、次の人。
0033デフォルトの名無しさん
2006/03/04(土) 19:54:31まあもう少しがんがってみます
0034デフォルトの名無しさん
2006/03/04(土) 20:10:26作成後に SetWindowLong() で TBSTYLE_FLAT を指定すればいい、
…と、どこかで見たような気が。
0035デフォルトの名無しさん
2006/03/05(日) 00:14:04一体どんなことをすることになるんだろう?と気になって調べてみたら、
Text Services Frameworkというのが一番怪しかった。
しかしそれ以上はよく分からなかった。
0036デフォルトの名無しさん
2006/03/05(日) 01:47:58Advanced Windows 入れないほうがいいよ絶対
0037デフォルトの名無しさん
2006/03/05(日) 01:49:31http://www.kumei.ne.jp/c_lang/
- Platform SDK Update
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
この流れだとプログラミングwindowsがくるとはずだと思うが。。
0038デフォルトの名無しさん
2006/03/05(日) 01:49:51なんで?
0039デフォルトの名無しさん
2006/03/05(日) 01:54:44Advancedって、SDKの本じゃない気がするんだよ。。
0040デフォルトの名無しさん
2006/03/05(日) 01:59:29プ
0041デフォルトの名無しさん
2006/03/05(日) 04:31:180042デフォルトの名無しさん
2006/03/05(日) 04:39:450043デフォルトの名無しさん
2006/03/05(日) 04:42:23本当に読んでその台詞なら、はやく上の質問に答えてやれよw
0044デフォルトの名無しさん
2006/03/05(日) 04:43:10邪魔するな。おまえは有害だから
0045デフォルトの名無しさん
2006/03/05(日) 04:45:130046デフォルトの名無しさん
2006/03/05(日) 04:50:340047デフォルトの名無しさん
2006/03/05(日) 04:51:220048デフォルトの名無しさん
2006/03/05(日) 04:55:56ありがとうございます。
CreateToolbarExでWS_CHILD | WS_VISIBLEを指定して、
できたハンドルにSetWindowLongでWS_VISIBLE | TBSTYLE_FLATを指定するとうまくできました。
ただ、WS_CHILDまで含めて指定するとツールバーが下につくようです。
なんかの本でWS_CHILDは必ず指定しろとかなんとか。
もう少し試してみます。
0049デフォルトの名無しさん
2006/03/05(日) 06:27:390050デフォルトの名無しさん
2006/03/05(日) 15:04:32WS_BORDERとかWS_CAPTIONとかWS_EX_THICKFRAMEとかを使わないで
CreateRectRgnのtopを0のまま
WM_NCHITTESTに応じて下のようにしてウインドウをつまむ領域を指定する
 if(GET_Y_LPARAM(lParam)<25) return HTCAPTION;
WM_NCCALCSIZEに応じてクライアント領域の位置を指定
ぐらいかな?
0051デフォルトの名無しさん
2006/03/05(日) 18:58:040052デフォルトの名無しさん
2006/03/05(日) 20:35:08本当でしょうか?
0053デフォルトの名無しさん
2006/03/05(日) 20:49:350054・∀・)っ-○●◎- ◆Pu/ODYSSEY
NGNG0055デフォルトの名無しさん
2006/03/05(日) 20:53:330056デフォルトの名無しさん
2006/03/05(日) 20:55:31マニフェストファイル ビジュアルスタイルでぐぐるといくつかでてくる。
ttp://www.h3.dion.ne.jp/~hanagex/dev/contents/xp/xpmenu.html
ttp://www.microsoft.com/japan/msdn/vs/client/vbtchUsingWindowsXPVisualStylesWithControlsOnWindowsForms.asp
0058デフォルトの名無しさん
2006/03/05(日) 23:51:56IE3に初めてフラットツールバーが導入されたときには背景に画像ファイルを充てることが出来たからその名残だと思うが,
英語版MSDNのToolbar Control and Button Styles に対策が書いてあると思う.
マニュアルどおり素直にやるならTBSTYLE_CUSTOMERASEを指定してParentWindowがNM_CUSTOMDRAWに応じて背景を消去する.
0059デフォルトの名無しさん
2006/03/06(月) 04:34:27そもそも日本語はどっちもCP932なんであまり関係ない。
関係あるのはOEM CPとANSI CPが違ってた欧米。
もちろん国際化対応のプログラムを書くなら考慮する必要もあり得るが。
ちなみにコマンドプロンプト≠DOSだがコマンドプロンプトでもOEM CPを使う。
0060デフォルトの名無しさん
2006/03/06(月) 13:20:14フォームのウインドウハンドルを指定すると表示・非表示を
返してくるものとか。
0061デフォルトの名無しさん
2006/03/06(月) 13:22:460062デフォルトの名無しさん
2006/03/06(月) 13:26:51ありがとう!!
0063デフォルトの名無しさん
2006/03/07(火) 02:46:280064デフォルトの名無しさん
2006/03/07(火) 03:13:44チラシの裏にでも書いてろ
0065デフォルトの名無しさん
2006/03/07(火) 07:55:58VBからなら普通に使える。
それはともかく、VARIANTならATL::CComVariantとか_variant_tを使えばだいぶ楽だと思うが。
0066デフォルトの名無しさん
2006/03/07(火) 08:00:36VBの内部データ構造そのままだから。
そのまま使うようにはできていない。
COMには3つの大きな欠点がある
・引数違いのオーバーロードを認めない
・VARIANT
・IDispatch
すべてこいつらはVBが癌なのだよ。
0067デフォルトの名無しさん
2006/03/07(火) 12:58:18COMの本質がわかってないなぁ。
スクリプトの透過性をたもったまま
バイナリレベルの実行時インターフェィス互換のためには必要だろ?
オーバーロードはコンパイル時のバインド解決だし・・・
0068デフォルトの名無しさん
2006/03/07(火) 15:07:50VARIANTに関してはVBの問題だし、
IDispatchに関してはVBScriptの問題。
本来はコンポーネント側がケアする問題ではないのだけど、
安直に、コンポーネント側がなんとかしてね、というのはマイクロソフトらしい解決法だと言える。
IDispatchに至ってはインタフェースという概念を台無しにしているよな。
あるコンポーネントがIFooとIBarを持つとき、
IFoo->Kick()
IBar->Kick()
は当然違う意味を持つのだけど、
このコンポーネントにIDispatchを付けた時、困ったことになる。
0069デフォルトの名無しさん
2006/03/07(火) 15:10:05プロセスの保護による問題のような気がするけど、回避するにはどうしたらいいですか?
0070デフォルトの名無しさん
2006/03/07(火) 15:10:27任意のインタフェースのメソッドを呼ぶためのラッパーを見かけたよ。
どうしてマイクロソフトはそれを、VBScriptに標準搭載しなかったのかと、小一時間。
0071デフォルトの名無しさん
2006/03/07(火) 15:11:56LPARAMで送ることができるのは、void*な値だけです。
文字列を送ることはできません。
0072デフォルトの名無しさん
2006/03/07(火) 15:18:31どーしてもSendMessageで別プロセスに文字列を渡したいなら、
VirtualAllocExで相手のプロセス空間にメモリを確保し、
そこにWriteProcessMemoryで文字列を書き込み、
そのアドレスをSendMessageで渡し、
SendMessageが戻ってきたら、VirtualFreeExでメモリを解放する。
素直にプロセス間通信のための道具を使ったほうがいいと思うけどね。
0073デフォルトの名無しさん
2006/03/07(火) 15:18:51別のプロセスで読めなくて当然。
007469
2006/03/07(火) 15:20:05レスどうもです。
>LPARAMで送ることができるのは、void*な値だけです。
>文字列を送ることはできません。
って事は、1文字ずつ小分けにして送らなくてはダメって事?
007569
2006/03/07(火) 15:25:02>73
レスありがとうございます。
簡単にはいかないんですね。
プロセス間通信ついてですが、検索キーワードになりそうなヒント教えてくれませんでしょうか
よろしくお願いします。
0076デフォルトの名無しさん
2006/03/07(火) 15:26:54007769
2006/03/07(火) 15:27:460078デフォルトの名無しさん
2006/03/07(火) 16:03:03そもそも、何をやりたいの?
それによって、何を選ぶか、変ってくると思うよ。
>>75
セキュリティ的な問題がなければ、難しくはないよ。
mallocの代わりにVirtualAllocEx
memcpyの代わりにWriteProcessMemory
freeの代わりにVirtualFreeEx
を使うだけなんだから。
検索キーワードは「プロセス間通信」
0079デフォルトの名無しさん
2006/03/07(火) 16:22:18WM_COPYDATAを知らないの?
008069
2006/03/07(火) 16:40:21ありがとうございます。
0081デフォルトの名無しさん
2006/03/07(火) 16:42:130082デフォルトの名無しさん
2006/03/07(火) 16:53:01何をやりたいのか書いてないから、
メッセージを受け取る側をいじって良いかどうかすら書いてないから、
もっとも汎用的な方法を書いたのよ。
0083デフォルトの名無しさん
2006/03/07(火) 16:55:420084デフォルトの名無しさん
2006/03/07(火) 16:56:32受け取り側プロセスで有効なポインタの取得のしかた
という質問なんだからさ。
0085デフォルトの名無しさん
2006/03/07(火) 17:00:25>SendMessageのLPARAMで文字列を送ろうとしてるんだけど、受信側ではポインターのアドレスは同じだけどメモリーダンプを見るとあったはずの文字列が存在していない。
>プロセスの保護による問題のような気がするけど、回避するにはどうしたらいいですか?
文字列を送りたいって書いてあるがな。
0086デフォルトの名無しさん
2006/03/07(火) 17:37:580087デフォルトの名無しさん
2006/03/07(火) 18:04:120088デフォルトの名無しさん
2006/03/07(火) 19:19:49もし相手は変更できないのならVirtualAllocExを使う必要がある。
さらに9xでも動かしたければメモリマップドファイルを併用する必要もある。
0089デフォルトの名無しさん
2006/03/07(火) 19:32:53COPYDATASTRUCT構造体を介して、ダブルワードのデータと
データへのポインタの2つを同時に受け渡しできるって認識でOK?
0090デフォルトの名無しさん
2006/03/07(火) 19:47:300091デフォルトの名無しさん
2006/03/07(火) 19:48:38sizeof(ULONG_PTR)は、32ビットプロセスでは4だが、64ビットプロセスでは8になることに注意。
相手に渡すのはポインタの値ではなく、ポインタのさす先のメモリの内容。
0092デフォルトの名無しさん
2006/03/07(火) 19:50:17お前もかよ、ポインタを渡すと、ポインタのさす先の中身まで一緒に渡ると思ってるのは。
0093デフォルトの名無しさん
2006/03/07(火) 19:52:42DWORD dwData
DWORD cbData
PVOID lpData
と定義されているかも。
だいぶ前に64ビット対応のために、
ULONG_PTR dwData
DWORD cbData
PVOID lpData
に変更されました。
0094デフォルトの名無しさん
2006/03/07(火) 19:59:00型定義見忘れてた
ってことはポインタ2つを渡せるって事か
つーか型と変数名・説明が食い違ってないか?>MSDN-en
ハンガリアン記法の欠点だな
0095デフォルトの名無しさん
2006/03/07(火) 20:29:17あと、たぶんポインタ二つは無理だぞ。
dwDataにポインタ入れても>>69と同じことになるかと。
0096デフォルトの名無しさん
2006/03/07(火) 21:29:330097デフォルトの名無しさん
2006/03/07(火) 23:28:33渡したいデータへのポインタをPVOID lpDataにセット。
そのデータの長さをバイト数でDWORD cbDataにセット。
ULONG_PTR dwDataは、何に使ってもいいのだけど、たとえば、
WM_COPYDATAで渡すデータを振り分けるためのIDに使う。
0098デフォルトの名無しさん
2006/03/08(水) 00:01:170099デフォルトの名無しさん
2006/03/08(水) 07:11:26そうなんですよ、川崎さん。
でもね、そんなこといったら、
関数の引数は1つで十分ですよ、わかってくださいよ
になってしまうんですよ。
0100デフォルトの名無しさん
2006/03/08(水) 09:07:36lpDataがヌルなどの不正なアドレス値だった場合、
必要な情報があるはずのオフセット位置へ飛ぶことさえできないわけで。
dwDataのようなユーザ定義値がない場合、信頼できないプロセスからWM_COPYDATAが送信されてきた時に(ry
0101デフォルトの名無しさん
2006/03/08(水) 09:42:480102デフォルトの名無しさん
2006/03/08(水) 09:45:16送信側のプロセスがlpDataにセットした値が、
そのまま受信側のプロセスに渡されるわけじゃないよ。
0103デフォルトの名無しさん
2006/03/08(水) 10:26:330104デフォルトの名無しさん
2006/03/08(水) 14:29:42いまマウスカーソルをDirect3D8のサーフェスに対してソフトウェア描画する
必要性があり、GetCursor()→GetIconInfo()→GetObject()でカーソルの
マスクとビットマップを取得しています。
普通のカーソルに対してはこれでうまくいっていますが、これではアニメーション
カーソルが動いてくれません。
GetCursor()で取得したカーソルのハンドルが、アニメーションカーソルかどうか
判定する方法や、そこからビットマップ情報を取得する方法をご存知の方
いませんか?
0105デフォルトの名無しさん
2006/03/08(水) 19:27:44VC++6.0 のサンプルに aniEdit, imageEdit というのがある。
これ以外に説明書はないみたい。(.NET, VC++200X では未確認)
時計の針が廻る cursor を .ani ファイルで作って、WINDOWS の Cursor dir に
入れ、砂時計の代わりにこのファイルを指定すると動くのは確認した。
上記のサンプルに timer で動かす手順はある。
0106デフォルトの名無しさん
2006/03/08(水) 19:51:53抽出するのはWM_GETTEXTを送ればできますが、標準じゃないクラス
から文字列を得るにはどうすればいいのでしょうか?
0107デフォルトの名無しさん
2006/03/08(水) 19:52:520108デフォルトの名無しさん
2006/03/08(水) 19:54:120109デフォルトの名無しさん
2006/03/08(水) 20:58:48WM_GETTEXTで取れないテキストはGetWindowTextで
取れないぞぇ。
0110デフォルトの名無しさん
2006/03/08(水) 21:03:24>>108
>>109
WM_GETTEXTをメモ帳に送れば編集中のテキストが抽出されますが、
同じことを秀丸でやろうとするとできないんですよね。。。
なんかいい方法ないでしょうか?
0111デフォルトの名無しさん
2006/03/08(水) 21:05:19だったらそれぞれにメッセージやマクロが用意されとるよ
0112106
2006/03/08(水) 21:05:57110はウィンドウメッセージの実験上やったことなので、
こぴぺすればいいとかそういうことじゃないです。
いちお念のため
0113デフォルトの名無しさん
2006/03/08(水) 21:07:35それぞれの相手に応じてやるしかない。
「それぞれのやり方」は自分で調べろ。少なくともAPIレベルでは決まっていない。
0114デフォルトの名無しさん
2006/03/08(水) 21:07:52諦めろ
0115デフォルトの名無しさん
2006/03/08(水) 21:19:51Windows Media Playerで再生してる曲の曲名を取得する方法ありませんか?
0116デフォルトの名無しさん
2006/03/08(水) 21:24:550117デフォルトの名無しさん
2006/03/08(水) 21:25:56メッセンジャーはそうしていたような。
0118デフォルトの名無しさん
2006/03/08(水) 21:39:070119デフォルトの名無しさん
2006/03/09(木) 00:05:44なるほど
>>118
調べてみます.
0120デフォルトの名無しさん
2006/03/09(木) 12:31:31分かりましたが、これを公開APIだけで行う方法はありませんか?
0121120
2006/03/09(木) 12:37:39VistaだとSetFileInformationByHandleでできるようです。
0122デフォルトの名無しさん
2006/03/09(木) 16:17:02スレを間違えてしまったような気がするので、恐縮ながら紹介だけさせていただきます。
http://pc8.2ch.net/test/read.cgi/tech/1140269442/401-402
宜しくお願い申し上げます。
0123デフォルトの名無しさん
2006/03/09(木) 16:19:57どこにWin32APIが関わっているのかと(ry
0124デフォルトの名無しさん
2006/03/09(木) 18:24:42VB.NETスレへどうぞ
0125デフォルトの名無しさん
2006/03/09(木) 18:39:330126デフォルトの名無しさん
2006/03/09(木) 18:45:56プロセスを終了させる関数はありますか?
TerminateProcessはその後まだコードが動いているようなんですが。
0127デフォルトの名無しさん
2006/03/09(木) 18:55:39コントロールに"〜のコントロールにマウスが乗った・外れた""フォーカスが入った"
などを調べたいとき、どうしたらいいですか?
最初、素直にダイアログプロシージャのWM_NCHITTESTやWM_MOUSEMOVEメッセージから来るマウスの位置から調べようと思ったのですが、
Static Text以外のEdit Control上とか、Radio Button上とかではWM_MOUSEMOVEメッセージが来ないので…
0128デフォルトの名無しさん
2006/03/09(木) 18:59:26サブクラス化
0129デフォルトの名無しさん
2006/03/09(木) 19:09:310130デフォルトの名無しさん
2006/03/09(木) 19:51:39ありがとう。
何とかなりそうです。
>>129
マジすまんです。
WM_NCHITTESTの方に目が行っていて。
サブクラス化のところが盲点に入ってた…orz
0131デフォルトの名無しさん
2006/03/09(木) 20:05:17なんでそう思ったの?
0133127
2006/03/09(木) 21:03:39Static TextやEdit Control、Radio Buttonなどがそれぞれいくつもあって、
どれにも共通の(マウスを右クリックすると、そのコントロールに応じてテキストを表示)動作をさせる場合、
すべてのウインドウに対してそれぞれサブクラス化させるのではなくて、
まとめて処理させる上手い方法はありませんか?
ちょっとWin32APIと話がずれてしまいそうですけど…
0134デフォルトの名無しさん
2006/03/09(木) 21:12:490135デフォルトの名無しさん
2006/03/09(木) 21:13:430136デフォルトの名無しさん
2006/03/09(木) 21:14:57NM_RCLICK?
0137デフォルトの名無しさん
2006/03/09(木) 21:17:24ごめんなさい…
そのまさかですorz
そこら辺学べる手頃なサイトあります…?
説明して頂ければなおうれしいですけど…
(うわぁC超初心者丸出しですわ)
0138137
2006/03/09(木) 21:49:57例えば、
OldProc1 = (WNDPROC)SetWindowLong(hCtrl1, GWL_WNDPROC, (LONG)NewProc);
OldProc2 = (WNDPROC)SetWindowLong(hCtrl2, GWL_WNDPROC, (LONG)NewProc);
OldProc3 = (WNDPROC)SetWindowLong(hCtrl3, GWL_WNDPROC, (LONG)NewProc);
OldProc4 = (WNDPROC)SetWindowLong(hCtrl4, GWL_WNDPROC, (LONG)NewProc);
……
LRESULT CALLBACK NewProc(HWND hEdit, UINT msg, WPARAM wp, LPARAM lp)
{
switch (msg) {
case NM_RCRICK:
switch (hEdit) {
case hCtrl1:
//どーたらこーたら
break;
case hCtrl2:
//どーたらこーたら
break;
〜中略〜
}
break;
}
return CallWindowProc((WNDPROC)GetWindowLong(hEdit, GWL_WNDPROC), hEdit, msg, wp, lp);
}
みたいにすればいい、てな考え方で大丈夫ですか?
0139デフォルトの名無しさん
2006/03/09(木) 21:50:17それコモンコントロール
0140デフォルトの名無しさん
2006/03/09(木) 22:04:27タスクマネージャのように起動中のアプリケーションの
「応答なし」、「実行中」という状態を知るには
どうすればいいのでしょうか?
何か参考になる情報など頂ければと思います。
よろしくお願いします。
0141デフォルトの名無しさん
2006/03/09(木) 22:09:29半公開APIだがIsHungAppWindowというそのまんまの関数がある
0142デフォルトの名無しさん
2006/03/09(木) 22:10:300143デフォルトの名無しさん
2006/03/09(木) 22:18:32>>141
そんな関数があったのですね。
試してみます。
>>142
なるほど、そんなやり方もあるわけですね。
基本的にタスクマネージャと同じように起動時に、
ウィンドウを列挙して応答の有無を表示したいので、
時間がかからなそう?な IsHungAppWindow() を試してみたいと思います。
まだまだ猫でも分かる〜で勉強中の初心者なもんで、とても勉強になります。
ありがとうございます。
0144デフォルトの名無しさん
2006/03/09(木) 22:26:28その状態ではGetWindowLong(hEdit, GWL_WNDPROC)は当然NewProcを返す。
SetProp/GetPropなどを使って独自に元のウィンドウプロシージャを管理すべき。
あとGet/SetWindowLongよりもWin64対応のためにGet/SetWindowLongPtrを使うべき。
0145デフォルトの名無しさん
2006/03/09(木) 22:49:20ハングアップしていたら、ウィンドウは列挙できない。
0146デフォルトの名無しさん
2006/03/09(木) 23:10:120147デフォルトの名無しさん
2006/03/09(木) 23:11:14じゃあタスクマネージャはどうやってるの?
0148デフォルトの名無しさん
2006/03/09(木) 23:14:04マジすか・・・
ウィンドウクラス名とかタイトル名とかも取れないのかな。
単純にタスクマネージャと同じ様なウィンドウのリストを作りたいのですが
何か特別なやり方が要るのでしょうか。
0149デフォルトの名無しさん
2006/03/09(木) 23:19:20いやふつうに嘘だから
0150デフォルトの名無しさん
2006/03/09(木) 23:20:33クラス名は取れるけどタイトルは(WM_GETTEXTから帰ってこないので)
取れない場合がある。
0151デフォルトの名無しさん
2006/03/09(木) 23:21:060152デフォルトの名無しさん
2006/03/09(木) 23:29:18ありがとうございます。
確かにSetWindowLongで変更したら当然GetWindowLongは変わりますね…orz
>>138で言えば、予めhCtrlxとOldProcxを対応させて管理しておけばいいんですね?
0153138
2006/03/09(木) 23:57:47不便だなぁ…
0154デフォルトの名無しさん
2006/03/10(金) 07:57:19WM_GETTEXTは帰ってこないけど、GetWindowTextは帰ってくる。
詳細はThe Old New Thingを読んで熟知すべし。
0155デフォルトの名無しさん
2006/03/10(金) 07:58:23ここな。
0156デフォルトの名無しさん
2006/03/10(金) 12:28:210157デフォルトの名無しさん
2006/03/10(金) 13:06:41どのAPIで?
0158デフォルトの名無しさん
2006/03/10(金) 14:08:160159デフォルトの名無しさん
2006/03/10(金) 14:39:47UNICODE_STRINGが低レベルな世界のものだからだと思う。
0160デフォルトの名無しさん
2006/03/10(金) 14:44:110161デフォルトの名無しさん
2006/03/10(金) 18:29:390162デフォルトの名無しさん
2006/03/11(土) 03:33:400163デフォルトの名無しさん
2006/03/11(土) 05:19:25サブクラス化は推奨されていないんだな。で、スーパークラス化を使うべきなんだな。
0164デフォルトの名無しさん
2006/03/11(土) 06:23:04WM_ENTERSIZEMOVE と WM_EXITSIZEMOVE を追っているんだけど、
システムメニューから [移動] を選択して、
そのままウィンドウをドラッグせずに他のウィンドウをクリックすると、
WM_EXITSIZEMOVE が発行されないままサイジングが終了してしまうらしい。
何かいい対処法はない?
0165デフォルトの名無しさん
2006/03/11(土) 07:32:550166デフォルトの名無しさん
2006/03/11(土) 09:58:43無知な俺にソースを教えてください。
0167デフォルトの名無しさん
2006/03/11(土) 11:07:180168デフォルトの名無しさん
2006/03/11(土) 11:22:190169デフォルトの名無しさん
2006/03/11(土) 11:45:130170デフォルトの名無しさん
2006/03/11(土) 11:55:160171デフォルトの名無しさん
2006/03/11(土) 12:45:57グローバルなサブクラス化じゃないの?
SetClassLong()でサブクラス化するやつ。
SetWindowLong()でサブクラス化するのはインスタンス単位だから
何も問題無いはずだが。
0172デフォルトの名無しさん
2006/03/11(土) 13:56:28どうしたらいいんでしょうか?
具体的には、マウス動作をキーボードで実現したいんですが。
例:カーソル移動を上下左右キーでで、クリックをエンターキーとか。
0173デフォルトの名無しさん
2006/03/11(土) 14:22:46UserAssistanceだっけ? OSの標準機能にありますが。
0174デフォルトの名無しさん
2006/03/11(土) 16:21:44の下のほうに記述してある
>1行のバイト数を取得するには、次の数式を利用しています
>
>4 * ((bmpCoreHeader.bcWidth * bmpCoreHeader.bcBitCount + 31)/ 32);
この数式の意味を教えてください。
+31とは何なのでしょうか??
0175デフォルトの名無しさん
2006/03/11(土) 16:31:200176デフォルトの名無しさん
2006/03/11(土) 16:33:37DIBの1行のサイズは常に4バイト=32bit単位でなければいけないから。
x + (y - 1) / yってのは端数切り上げのx/y。
0177デフォルトの名無しさん
2006/03/11(土) 16:37:54ttp://support.microsoft.com/default.aspx?scid=kb%3Bja%3B130952
95以降は何も効果がないようです。(実際変更できませんでした)
オーナードローするしかないんでしょうか?
0178デフォルトの名無しさん
2006/03/11(土) 16:40:29DIBは必ず1ラインが4の倍数のバイト数になっている。(DWORDアライメント)
そのための端数を繰り上げる計算をしている。
0179デフォルトの名無しさん
2006/03/11(土) 16:44:54そのリンク先に効果が無いって書いてあるじゃないか。
そこまで来たなら、今度はWM_CTLCOLORBTNでググれ。
0180174
2006/03/11(土) 17:04:38>>176
>>178
ありがとうございます。
ちょっとだけ分かってきました。
しかし、その場合、横4pixelの24biフルカラー画像の場合、1行が15Byteになってしまいませんか?
横3pixelの場合は12Byteで4の倍数ですけど・・・
0181デフォルトの名無しさん
2006/03/11(土) 17:07:24あれ?見つかった。一応検索したんだけど
WM_CTLCOLORSTATICとかでも検索してたから、ごっちゃになってたかな…
オナドローが一般的らしいです。
0182デフォルトの名無しさん
2006/03/11(土) 17:08:35ヒント: 整数同士の演算は小数点以下が切り捨てられる。
0183デフォルトの名無しさん
2006/03/11(土) 18:52:410184デフォルトの名無しさん
2006/03/11(土) 19:27:50部分的に再描写したいとき、どこかでBitBlt等を使って描写することは出来ないのでしょうか。
やってみましたがうまくいきませんでした。
再度UpdateLayeredWindowを呼び、全画面を書き換えるしかないのでしょうか。
0185デフォルトの名無しさん
2006/03/11(土) 20:32:50富豪になれ
0186174
2006/03/11(土) 21:14:04それは分かっています。
>>183
実際計算して>>180のような疑問がおきました。
例えば、横4pixelの24bitフルカラー画像の場合、
4 * (( 4 * 24 + 31 ) / 32 ) = 15.875 [ Byte ]
これをint型の変数に代入しているので、
その変数には小数点以下が切り捨てられた15バイトが入ることになります。
これは4バイトの整数倍ではありません。
0187174
2006/03/11(土) 21:15:07間違えました。
0188174
2006/03/11(土) 21:29:024 * 整数
であれば4の倍数になるのですが、
どのような考え方でこの式が導かれるのか教えてください m(_ _)m
0189174
2006/03/11(土) 21:39:51ですが、これは数学の問題になってくるので、別スレで聞いてみることにします。
ありがとうございました m(_ _)m
0190174
2006/03/11(土) 21:48:30感動です!
ありがとうございました!
0191デフォルトの名無しさん
2006/03/11(土) 21:57:50そこの説明で式の過程が飛ばされているから ややこしくなってるだけなんじゃ
n byte アラインするだけなら
(A + n-1) / n * n
こういうことになる
bit数→ byte数換算 と 4byte アラインとを複合して 4*8 bit でアラインしたいってことになるから
(bpp*w + 31) / 32 * 32 // bit数
(bpp*w + 31) / 32 * 32 / 8 // byte数
→ (bpp*w + 31) / 32 * 4
0192174
2006/03/11(土) 23:47:17なるほど。
ありがとうございます!
別の質問なんですが、
ttp://wisdom.sakura.ne.jp/system/winapi/win32/win116.html
char * chPixelBit;
というchar型のポインタに
ReadFile(hFile , chPixelBit , bmpFileHeader.bfSize - bmpFileHeader.bfOffBits , &dwBytes , NULL);
というカタチでピクセルビットを格納しているのですが、
なぜ*chPixelBitはchar型なんでしょうか??
また、ピクセルビットが記述されるところまで、ファイルポインタを移動させるなどの所作が
見られませんが、なぜキレイに格納されるのでしょうか??
0193デフォルトの名無しさん
2006/03/12(日) 00:02:22↓
01941
2006/03/12(日) 00:05:05#include <windows.h>
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
ATOM InitApp(HINSTANCE);
BOOL InitInstance(HINSTANCE, int);
void DrawCurve(int sx, int sy ,int x1,int y1, int x2, int y2,
int ex, int ey, int len);
int CmpLine(int xs, int ys, int xe, int ye, int len);
char szClassName[] = "graphics02";//ウィンドウクラス
HDC hdc;
0195デフォルトの名無しさん
2006/03/12(日) 00:05:31ReadFileはファイルポインタを進める。
01962
2006/03/12(日) 00:06:08LPSTR lpsCmdLine, int nCmdShow)
{
MSG msg;
BOOL bRet;
if (!InitApp(hCurInst))
return FALSE;
if (!InitInstance(hCurInst, nCmdShow))
return FALSE;
while ((bRet = GetMessage(&msg, NULL, 0, 0)) != 0) {
if (bRet == -1) {
break;
} else {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
return (int)msg.wParam;
}
0197デフォルトの名無しさん
2006/03/12(日) 00:06:39ATOM InitApp(HINSTANCE hInst)
{
WNDCLASSEX wc;
wc.cbSize = sizeof(WNDCLASSEX);
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = WndProc;//プロシージャ名
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInst;//インスタンス
wc.hIcon = NULL;
wc.hCursor = (HCURSOR)LoadImage(NULL,
MAKEINTRESOURCE(IDC_ARROW),
IMAGE_CURSOR,
0,
0,
LR_DEFAULTSIZE | LR_SHARED);
wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wc.lpszMenuName = NULL; // メニュー名
wc.lpszClassName = (LPCSTR)szClassName;
wc.hIconSm = NULL;
return (RegisterClassEx(&wc));
}
01984
2006/03/12(日) 00:07:24BOOL InitInstance(HINSTANCE hInst, int nCmdShow)
{
HWND hWnd;
hWnd = CreateWindow(szClassName,
"自由曲線を描くプログラム",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,//X座標
CW_USEDEFAULT,//Y座標
CW_USEDEFAULT,//幅
CW_USEDEFAULT,//高さ
NULL, //親ウィンドウのハンドル、親を作るときはNULL
NULL, //メニューハンドル、クラスメニューを使うときはNULL
hInst, //インスタンスハンドル
NULL);
if (!hWnd)
return FALSE;
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);
return TRUE;
}
01995
2006/03/12(日) 00:09:06/*DrawCurve関数*/
void DrawCurve(int sx, int sy ,int x1,int y1, int x2, int y2,
int ex, int ey, int len)
{
int p1x,p1y,p2x,p2y,p3x,p3y;
int p4x,p4y,p5x,p5y,p6x,p6y;
if (CmpLine(sx, sy ,x1, y1, len) &&
CmpLine(x1,y1,x2,y2,len) &&
CmpLine(x2,y2,ex,ey,len)){
MoveToEx(hdc,sx,sy,NULL); LineTo(hdc,x1,y1);
LineTo(hdc,x2,y2); LineTo(hdc,ex,ey);
return ;
}
p1x = (sx+x1)/2; p1y = (sy+y1)/2;
p2x = (x1+x2)/2; p2y = (y1+y2)/2;
p3x = (x2+ex)/2; p3y = (y2+ey)/2;
p4x = (p1x+p2x)/2; p4y = (p1y+p2y)/2;
p5x = (p2x+p3y)/2; p5y = (p2y+p3y)/2;
p6x = (p4x+p5x)/2; p6y = (p4y+p5y)/2;
DrawCurve(sx,sy,p1x,p1y,p4x,p4y,p6x,p6y,len);
DrawCurve(p6x,p6y,p5x,p5y,p3x,p3y,ex,ey,len);
return ;
}
02006
2006/03/12(日) 00:12:07LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
{
PAINTSTRUCT ps;
HPEN hPen1;
switch (msg) {
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
hPen1 = CreatePen(PS_SOLID, 3, RGB(255, 0, 0));
SelectObject(hdc, hPen1);
/*再帰的な関数DrawCurveの呼び出し*/
DrawCurve(2, 2, 3, 6, 10, 10, 25, 3, 4);
DeleteObject(hPen1);
EndPaint(hWnd, &ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return (DefWindowProc(hWnd, msg, wp, lp));
}
return 0;
}
02017
2006/03/12(日) 00:12:49{
int len1 = xe - xs;
int len2 = ye - ys;
if (len1<0) len1 = -len1;
if (len2<0) len2 = -len2;
if((len1<len)&&(len2<len))
return 1;
return 0;
}
0202デフォルトの名無しさん
2006/03/12(日) 00:14:060203デフォルトの名無しさん
2006/03/12(日) 00:15:170204デフォルトの名無しさん
2006/03/12(日) 00:16:41DrawCurve関数と CmpLine関数を付け加えただけです。
眠いので寝まつ
0205デフォルトの名無しさん
2006/03/12(日) 00:29:090206デフォルトの名無しさん
2006/03/12(日) 00:36:350207デフォルトの名無しさん
2006/03/12(日) 00:40:25氏ねや
0208デフォルトの名無しさん
2006/03/12(日) 00:53:220209デフォルトの名無しさん
2006/03/12(日) 01:10:17名前に番号を書かないでくれ
0210192
2006/03/12(日) 01:15:38ということは、ReadFile関数はchPixelBitがchar型であることを頼りにファイルポインタを
進めるということでよろしいでしょうか?
この場合、ビットマップファイルのピクセルビット部はchar型で認識されることが前提ですが。
0211デフォルトの名無しさん
2006/03/12(日) 01:21:11bmpFileHeader.bfSize - bmpFileHeader.bfOffBitsバイト進めるだけだろ…
0212192
2006/03/12(日) 01:24:53ピクセルビットの位置に進めるならば、
bmpFileHeader.bfSize - bmpFileHeader.bfOffBits
ではなくて
bmpFileHeader.bfOffBits
ではないのでしょうか?
前者はピクセルビット部のバイトサイズですよね?
0213デフォルトの名無しさん
2006/03/12(日) 01:27:03型情報なんぞは渡してない。
単純にその次の引数で読み込みBYTE数を渡してるだけ。
そしてそのBYTE数分を読みこみ、渡されたアドレスへセットしつつファイルポインタも進める。
ReadFile() ≒ fread()
0214デフォルトの名無しさん
2006/03/12(日) 01:30:57こんばんわ。気になったので覗いてみました^^;
コールバック関数のWM_PAINTメッセージからの処理がおかしいです。
Drawcurveは
座標を4つ指定してA(sx,sy) B(x1,x2) C(x2,y2) D(ex,ey)で
A→B→C→Dの経路で通っていきます。
曲線になるように、それぞれの中間地点を決めてそちらをなぞる曲線に変わります。
そこから、、、
0215デフォルトの名無しさん
2006/03/12(日) 01:38:03で、俺らに何をして欲しいんだ?
0216192
2006/03/12(日) 01:39:53>そしてそのBYTE数分を読みこみ
これは、どこからスタートするのでしょうか?
ファイルの先頭から読んでしまうと、ファイルヘッダ、情報ヘッダが含まれてしまい、
しかも、ピクセルビット分しか容量を指定していないので、肝心のピクセルビットが
すべて格納できなくなってしまうことになると思うのですが。
そんなことはなく、ちゃんとピクセルビット部の先頭から読み込んでいるようですが、
どの情報をもとにピクセルビット部の先頭を得ているのか分かりません。
0217デフォルトの名無しさん
2006/03/12(日) 01:42:47>>192の行より前にあるReadFileでヘッダー分だけ読み込んであるから。
0218デフォルトの名無しさん
2006/03/12(日) 01:42:50動作がおかしいのはWM_PAITメッセージ内のみです。
難しいので一筋縄でいきません。なので助けてちょ^^ノ
0219デフォルトの名無しさん
2006/03/12(日) 01:43:06>ReadFile(hFile , &bmpFileHeader , sizeof (BITMAPFILEHEADER) , &dwBytes , NULL);
ここでファイルの先頭からへっだを読み、
>ReadFile(hFile , &bmpCoreHeader , sizeof (BITMAPCOREHEADER) , &dwBytes , NULL);
ここでその続きからピクセルビットを読んでる
0221デフォルトの名無しさん
2006/03/12(日) 01:49:51>>203
0222デフォルトの名無しさん
2006/03/12(日) 01:53:390223デフォルトの名無しさん
2006/03/12(日) 01:55:45>p5x = (p2x+p3y)/2; p5y = (p2y+p3y)/2;
→p5x = (p2x+p3x)/2; p5y = (p2y+p3y)/2;
0224デフォルトの名無しさん
2006/03/12(日) 02:00:12フォーカスのあるコントロールのウインドウハンドルを取得したいのですが、
どうしたらいいのでしょうか。
具体的には、ホットキーが入力されたときに、
例えばメモ帳などで反転表示された文字列を拾いたいのです。
その場合、メモ帳のエディットコントロールのウインドウハンドルが
分かれば、SendMessageで選択文字列の場所を知ることができる
と思うのですが、ウインドウハンドルの取得方法が分かりません。
GetForegroundWindow()で、親ウインドウのハンドルを取得した後、
フォーカスのある子ウインドウを知るにはどうしたらいいのでしょうか。
0225デフォルトの名無しさん
2006/03/12(日) 02:02:49Good job ^^b
0226デフォルトの名無しさん
2006/03/12(日) 02:35:07GetGUIThreadInfo
0227デフォルトの名無しさん
2006/03/12(日) 02:49:49したり、取り外したりできますよね。
あれはどうやってるんですか?
0228デフォルトの名無しさん
2006/03/12(日) 06:00:000229デフォルトの名無しさん
2006/03/12(日) 07:40:48ドッキングウィンドウで検索すればサンプルコードがでてくるかも。
ttp://techtips.belution.com/ja/vc/0004/
0230デフォルトの名無しさん
2006/03/12(日) 10:46:23思いつく方法の中で最も面倒な方法を使っている。
ドッキング、位置の判定、移動など、全て逐次実装する気の長いコードを書かなければならない。
0231デフォルトの名無しさん
2006/03/12(日) 11:53:13お題は「プログラムからIPアドレス変更、DHCP有効/無効など制御」
で、PlatformSDKをインストールしてAddIPAdress()とか試しました。
確かにIPアドレス追加とかできます。
でも手動でTCP/IPのプロパティに設定した内容と置き換えるにはどうすればいいんでしょうか?
0232デフォルトの名無しさん
2006/03/12(日) 12:14:030233デフォルトの名無しさん
2006/03/12(日) 12:43:10RegOpenKeyEx
RegQueryValueEx
RegSetValueEx
とかで設定。
0235224
2006/03/12(日) 13:12:100236デフォルトの名無しさん
2006/03/12(日) 13:28:59その歌手の歌が終わった後の挨拶とか歌詞とか喋りが大嫌いな漏れからすれば、なんて嫌がらせ? と思う。
#普通に感謝しろよ、普通に。
0237デフォルトの名無しさん
2006/03/12(日) 15:37:18TEXT("EDIT") , NULL ,
WS_CHILD | WS_VISIBLE | WS_HSCROLL | WS_VSCROLL |
ES_AUTOHSCROLL | ES_AUTOVSCROLL |
ES_LEFT | ES_MULTILINE ,
0 , 350 , 620 , 100 , hwnd , (HMENU)1 ,
((LPCREATESTRUCT)(lp))->hInstance , NULL
);
このウィンドウに枠つけたいのですがどうすればいいのだーー!
0238デフォルトの名無しさん
2006/03/12(日) 15:59:46ttp://wisdom.sakura.ne.jp/system/winapi/win32/win7.html
ウィンドウスタイルに「WS_BORDER」追加すれば枠ができそうな予感。
0239デフォルトの名無しさん
2006/03/12(日) 16:14:060240デフォルトの名無しさん
2006/03/12(日) 19:01:230241デフォルトの名無しさん
2006/03/12(日) 19:23:350242デフォルトの名無しさん
2006/03/12(日) 20:45:110243デフォルトの名無しさん
2006/03/12(日) 20:46:03メモ帳とワードパッドでは違うんだよね
0244デフォルトの名無しさん
2006/03/12(日) 20:51:540245デフォルトの名無しさん
2006/03/12(日) 21:24:35から設定できるアイコン用のフォントサイズを得たいんですが、
どなたか方法がわかる方、教えていただけませんか?
GetSystemMetricsあたりで得られるのかと思ったんですが、
どうやら違うらしいです。
0246デフォルトの名無しさん
2006/03/12(日) 21:49:27SystemParametersInfo(SPI_GETICONMETRICS) かな?
0247245
2006/03/12(日) 21:56:09ありがとうございます、できました!
ICONMETRICS im;
ZeroMemory(&im, sizeof(ICONMETRICS));
im.cbSize = sizeof(ICONMETRICS);
SystemParametersInfo(SPI_GETICONMETRICS, im.cbSize, &im, 0);
int nSize = abs(im.lfFont.lfHeight);
0248デフォルトの名無しさん
2006/03/12(日) 22:03:09TEXT("EDIT") , NULL ,
WS_CHILD | WS_VISIBLE |WS_BORDER |
ES_LEFT | ES_MULTILINE ,
10 , 400 , 610 , 40 , hwnd , (HMENU)1 ,
((LPCREATESTRUCT)(lp))->hInstance , NULL
);
で作ったエディタウィンドウを一番下までスクロール死体のジャー
どうすればいいんでしょーあか?
0249デフォルトの名無しさん
2006/03/12(日) 22:08:34で
事故解決
おれって天才!!!
うぉぉぉぉぉぉぉぉ
0250デフォルトの名無しさん
2006/03/12(日) 22:12:25ある、何の環境に依存しているのだろうか。知っている人いますか?
OSはWinXPです。
#include <windows.h>
#include <stdio.h>
int main(void)
{
// プロセス起動
PROCESS_INFORMATION ProcInfo;
STARTUPINFO StartupInfo;
memset(&StartupInfo, 0x00, sizeof(STARTUPINFO));
StartupInfo.cb = sizeof(STARTUPINFO);
BOOL ret;
ret = ::CreateProcess(NULL,"echo test ABC",NULL,NULL,TRUE,0,NULL,NULL,&StartupInfo,&ProcInfo);
if( ret != TRUE ){
printf("起動失敗");
return 0;
}
CloseHandle(ProcInfo.hProcess);
return 0;
}
0251デフォルトの名無しさん
2006/03/12(日) 22:18:09echo は内部コマンド
0252デフォルトの名無しさん
2006/03/12(日) 22:29:10Cygwinのechoでも入ってるのか?
0253デフォルトの名無しさん
2006/03/12(日) 22:53:580254デフォルトの名無しさん
2006/03/12(日) 23:11:040255デフォルトの名無しさん
2006/03/13(月) 01:45:030256デフォルトの名無しさん
2006/03/13(月) 06:47:54パスが長くなると見えなくなります。頭と尻を残して途中を省略するのって
自分で編集しないとだめですか。API 一発ってのはないのでしょうか。
0257デフォルトの名無しさん
2006/03/13(月) 07:03:45…冗談だ。
0258デフォルトの名無しさん
2006/03/13(月) 07:05:30GetShortPathName
PathSetDlgItemPath
PathCompactPath
PathCompactPathEx
0259250
2006/03/13(月) 13:20:31内部コマンドはCreateProcess出来ないって事?
Cygwinとかないのに、なぜ出来るPCがあるのかな。
0260デフォルトの名無しさん
2006/03/13(月) 13:25:580261256
2006/03/13(月) 13:37:03有難うございます。説明を読んで見ます。
聞いてみるものですね。縮めては入るか縮めては入るかってのを繰り返すのかと
数日コードを考えて滅入っていましたです。
0262デフォルトの名無しさん
2006/03/13(月) 14:57:170263デフォルトの名無しさん
2006/03/13(月) 18:31:24MAX_PATHに制限されているのだけど、
似たようなことをする長さ制限のないもので、
Windows2000以降で追加DLL無しで使えるものは、
ありますか?
0264デフォルトの名無しさん
2006/03/13(月) 18:42:57答え書いちゃえよ
>>250
×ret = ::CreateProcess(NULL,"echo test ABC",NULL,NULL,TRUE,0,NULL,NULL,&StartupInfo,&ProcInfo);
○×ret = ::CreateProcess(NULL,"CMD /C echo test ABC",NULL,NULL,TRUE,0,NULL,NULL,&StartupInfo,&ProcInfo);
0265デフォルトの名無しさん
2006/03/13(月) 18:43:590266デフォルトの名無しさん
2006/03/13(月) 19:43:26○です。
0267デフォルトの名無しさん
2006/03/13(月) 21:26:27むしろ、○×で正しいと思われ。
# Me辺りだと、command.exeだったはず
0268デフォルトの名無しさん
2006/03/13(月) 21:31:34command.com
0269デフォルトの名無しさん
2006/03/13(月) 21:45:18VirtualAllocEx()で確保したメモリにNMLISTVIEW構造体をセットして
WM_NOTIFYメッセージでNM_DBLCLKを送ってもアプリが反応してくれません。
同じ方法でリストビューの文字列は取ってこれてるので
メモリの確保には問題ないはずなのですが・・・
リストビューにNM_DBLCLKを使うには他に何か手続きがいるのでしょうか?
ちなみにメッセージ送信はPostMessageを使っています。
(SendMessageだとSpy++で見てるとメッセージがとんでこないようなので。)
0270デフォルトの名無しさん
2006/03/13(月) 22:13:54左ボタンのダウンとアップを交互に送ればいいんでない?
0271デフォルトの名無しさん
2006/03/13(月) 22:44:16回答ではなく、自分だったらこうやって調べるという話だけど・・・。
簡単なものでいいから、「よそのアプリ」を試しに自分でつくってみて、
メッセージを送っているほうのアプリから
どういうパラメータでNM_DBLCLKがやってくるかを調べる。
きっとパラメータに何か問題があるのが分かる。・・・と思う。
0272デフォルトの名無しさん
2006/03/13(月) 23:17:52回答ありがとうございます。
>「よそのアプリ」を試しに自分でつくって
その方法を試していなかったのでやってみたところ
問題なくダブルクリックのメッセージが送れていました。
この結果から、最初に扱おうとしていた「よそのアプリ」は
ダブルクリックのメッセージで動作しているわけではない、という結論になってしまいました。
そのアプリはDelphi製らしいのでダブルクリックメッセージ以外の方法があるのかもしれません。
どうもお騒がせして申し訳ありませんでした。
0273デフォルトの名無しさん
2006/03/13(月) 23:19:440274デフォルトの名無しさん
2006/03/14(火) 00:44:20>>WM_LBUTTONDBLCLK?
まさにそれでした・・・
リストビューなんだからリストビューのメッセージで処理してるんだろうという
考え方にはまってしまっていました・・・orz
0275デフォルトの名無しさん
2006/03/14(火) 07:32:13↓
リストビューのプロシージャでWM_LBUTTONDBLCLK発生
↓
リストビューが親にWM_NOTIFY(NM_DBLCLK)送信
コントロールのイベントを発生させるのまで親が面倒見てるわけではないぞ
0276デフォルトの名無しさん
2006/03/14(火) 09:05:10> リストビューのプロシージャでWM_LBUTTONDBLCLK発生
この表現に違和感があるのは、漏れだけだろうか?
0277デフォルトの名無しさん
2006/03/14(火) 10:28:210278デフォルトの名無しさん
2006/03/14(火) 12:06:35他の列のアイテムを編集したかったら自前で書かなきゃだめですか?
0279デフォルトの名無しさん
2006/03/14(火) 12:33:230281デフォルトの名無しさん
2006/03/14(火) 17:21:02調べるAPIありますか?
0282デフォルトの名無しさん
2006/03/14(火) 17:25:32ない
0283デフォルトの名無しさん
2006/03/14(火) 17:35:10じゃあ
デバイスマネージャで
列挙されるデバイス名を列挙するようなAPIありませんか
0284デフォルトの名無しさん
2006/03/14(火) 17:39:220285デフォルトの名無しさん
2006/03/14(火) 18:16:38http://support.microsoft.com/kb/259695/JA/
0286デフォルトの名無しさん
2006/03/14(火) 19:33:33普通のアプリケーション中のエディットボックスならFindWindowで
ウィンドウハンドルを取得してWM_SETTEXTを送れば出来るのですが・・・
0287デフォルトの名無しさん
2006/03/14(火) 19:53:06WM_KEYUP/KEYDOWN/CHAR を送ってみ?
0288デフォルトの名無しさん
2006/03/14(火) 22:03:000289デフォルトの名無しさん
2006/03/14(火) 23:33:20そういう場合は、Windows Scriptのキー入力でやっつちゃうから API 使わんわ、俺。
0290デフォルトの名無しさん
2006/03/15(水) 01:13:44アクティブになった際に表示される「枠」を消す方法は無いでしょうか?
ボタンのようにTABSTOPでは変化しませんし、SPYで見てみたところ
WM_PAINTやWM_NCPAINTも関係なさそうです。
どこでどのような処理を行えば良いのでしょうか?
0291デフォルトの名無しさん
2006/03/15(水) 01:29:35そもそもcomポートにはUSBのように「何かが繋がっている」かどうか調べる機能さえないのだが。
0292デフォルトの名無しさん
2006/03/15(水) 02:55:06tlhelp32.h しかなさげです?
なんかやりすぎな感じになるけどいいのかな?
0293デフォルトの名無しさん
2006/03/15(水) 03:30:54どうしてるんだろ
0294デフォルトの名無しさん
2006/03/15(水) 06:39:450295デフォルトの名無しさん
2006/03/15(水) 09:10:17一応、つっこんどくと・・・・・
COMポート自身の仕様・機能ではないが、Windowsの実装として、シリアルマウス他いくつかの
デバイスはPlag&Playで自動認識する。
http://www.microsoft.com/whdc/system/cec/serddvr.mspx
0296デフォルトの名無しさん
2006/03/15(水) 09:19:280297デフォルトの名無しさん
2006/03/15(水) 12:45:02トラックバーじゃなくてフレームウィンドウの見かけを変えるときの経験ですが、
アクティブになったとき、アクティブじゃなくなったときの再描画(の一部?)は
WM_NCACTIVATE とかのハンドラ内で行われてる模様です(行儀悪い・・・)。
そのときには
デフォルトのハンドラを実行した後に自前の描画で上書きしてごまかしました。
0298デフォルトの名無しさん
2006/03/15(水) 15:10:400299デフォルトの名無しさん
2006/03/16(木) 00:47:54どういう処理をしてるんでしょうか?
0300デフォルトの名無しさん
2006/03/16(木) 00:49:100301デフォルトの名無しさん
2006/03/16(木) 00:49:260302デフォルトの名無しさん
2006/03/16(木) 00:52:420303デフォルトの名無しさん
2006/03/16(木) 01:07:520304デフォルトの名無しさん
2006/03/16(木) 01:59:08ありがとうございます。
今日はもう時間がないので無理ですが、明日試してみます。
0305デフォルトの名無しさん
2006/03/16(木) 02:01:12どうすればできますか?デスクトップとかQuickLaunchのアイコンの配置とかです
0306デフォルトの名無しさん
2006/03/16(木) 10:08:00で、サービスの依存関係を取得する部分でつまずいています
EnumDependentServices()がGetLastError()で997(重複したI/O処理を実行しています)
を返して失敗(でもEnumDependentServices()はTRUEを返す)します
そのものズバリのサンプルがMSにあるのですが、
http://support.microsoft.com/default.aspx?scid=kb%3Bja%3B245230
まるまるコピーして実行しても同じエラーが出ます
アカウントはAdmin権限を持っているので、権限不足とかではないと思うのですが、
何が悪いんでしょうか・・・
#もしかして、WMIを使った方が早い?
0307デフォルトの名無しさん
2006/03/16(木) 10:25:47>EnumDependentServices()がGetLastError()で997
>を返して失敗(でもEnumDependentServices()はTRUEを返す)します
意味が分からん。TRUE返してるなら成功してるんじゃん?
0308306
2006/03/16(木) 10:38:58関数の戻り値はTRUEを返して、成功しているように見えるけど、
結果を返す引数のポインタには0しか入っていない。
おかしいと思ってGetLastError()を見たらこんなエラーが入ってた。
ってことなんだけど・・・。
0309デフォルトの名無しさん
2006/03/16(木) 10:42:25その関数呼ぶ前に、SetLastError(0)とかしてみ?
0311デフォルトの名無しさん
2006/03/16(木) 11:24:14結果を返す引数のポインタってどれだ?
0312306
2006/03/16(木) 11:49:09EnumDependentServices()での依存関係の列挙って
サービスのプロパティの「依存関係」タブで言うところの、
「このサービスに依存しているシステムコンポーネント」を列挙するところで、
自分は「このサービスが依存するシステムコンポーネント」を取ろうとしていた
ことが分かりました・・・。
試しに"Remote Procedure Call (RPC)"を指定して動かしたら問題なく動きました。
問題なく列挙できてもGetLastError()はやっぱり997を返すんだけど、おかしいよM$
ともあれ、回答していただいた方、ありがとうございました。
>>311
LPDWORD pcbBytesNeeded, // 必要なバッファサイズ
LPDWORD lpServicesReturned // 返されたエントリの数
5番目と6番目の引数です
0313デフォルトの名無しさん
2006/03/16(木) 11:58:58おかしいのはオマエだ
0314306
2006/03/16(木) 12:02:10そりゃ勘違いしてた俺の頭は間違いなくおかしいが、
トンチンカンなエラーな値を返してくる関数もおかしくない?
関数は悪くないって言うなら説明プリーズ
0315デフォルトの名無しさん
2006/03/16(木) 12:19:17GetLastError は「API がエラーで終了したときに」エラーコードを取得するために使います。
詳細は Platform SDK の GetLastError の "Remarks" の項の第2、第3段落を参照。
0317デフォルトの名無しさん
2006/03/16(木) 12:23:18MSを信用するな。
0318デフォルトの名無しさん
2006/03/16(木) 12:25:12MSDNで、その関数の説明読めば分かるが、
GetLastErrorは関数が失敗した(0が返った)ときに呼ぶよう指示されてる
EnumDependentServices関数が成功しているわけだから、
GetLastErrorを呼んで、その戻り値を参考にすることが間違ってる
>>316
関数が成功したときに、呼ぶように指示されている関数もある
そのときに問題がなければ、ERROR_SUCCESSが返る
0319デフォルトの名無しさん
2006/03/16(木) 12:31:09ERROR_SUCCESS はレジストリ操作API やWinINet API で、
呼び出しが成功したことを表すための API の戻り値として用いられています。
逆に「API呼び出しが成功した場合に、GetLastError は ERROR_SUCCESS を返す」
なんて一体ドコで覚えたんですか?そんなこと書かれているドキュメントはないし、
実際の動作とも違うし。
0320デフォルトの名無しさん
2006/03/16(木) 12:48:12PC起動後 or ERROR_SUCCESSが設定されてから、
「一度もエラーが発生していない事」が判る様にだろ。
0322デフォルトの名無しさん
2006/03/16(木) 14:04:37>>321の大人の対応を見て恥ずかしくなったので謝罪する。
0323デフォルトの名無しさん
2006/03/16(木) 14:31:46> 問題なく列挙できてもGetLastError()はやっぱり997を返すんだけど、おかしいよM$
EnumDependentServicesの中で使われているAPIがエラーになってるんじゃない?
でもEnumDependentServicesとしては成功してると。
全然関係ないけど↓の機械翻訳、意味分かんね('A`)
ttp://support.microsoft.com/default.aspx?scid=kb%3Bja%3B231844
0324デフォルトの名無しさん
2006/03/16(木) 15:58:01エクスプローラはリストビュー
デスクトップはエクスプローラじゃない
0325デフォルトの名無しさん
2006/03/16(木) 16:28:22ここの応用でどう?
ttp://www.est.hi-ho.ne.jp/getchan/junks/junk01.html
0326デフォルトの名無しさん
2006/03/16(木) 19:29:550327デフォルトの名無しさん
2006/03/16(木) 19:35:250328デフォルトの名無しさん
2006/03/16(木) 19:52:220329デフォルトの名無しさん
2006/03/16(木) 22:41:41DirectXのほうが全然いいや
0330デフォルトの名無しさん
2006/03/16(木) 22:47:24使えない≠使わない
0331デフォルトの名無しさん
2006/03/16(木) 23:10:570332デフォルトの名無しさん
2006/03/16(木) 23:16:570333デフォルトの名無しさん
2006/03/16(木) 23:30:14一生使ってろ屑wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
0334API3日目
2006/03/17(金) 01:01:52(1)CreateWindowで作った子ウインドウの間で、
Tabキーによるフォーカス移動をさせたいのですが、
WS_TABSTOPを指定する以外に何が必要なんでしょうか?
(2)ファイルをごみ箱へ移動(?)させるAPIってありますか?
BCCを使っています。よろしくお願いします。
0335デフォルトの名無しさん
2006/03/17(金) 01:32:01(1)IsDialogMessage呼ぶとか?
(2)SHFileOperation
0336デフォルトの名無しさん
2006/03/17(金) 05:37:30えーとね、TABが有効かどうか Queryの役目をするメッセージがある。
それに対応させればよい。
対応の仕方はメッセージの復帰値で自動化するか、復帰値でシステム側の挙動をキャンセルして自分で TAB 移動させるか…だったはず。
メッセージは自分で調べて。
0337デフォルトの名無しさん
2006/03/17(金) 06:56:46CreateWindowで作った子ウィンドウといっても色々あるだろう
0338デフォルトの名無しさん
2006/03/17(金) 13:20:37http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpdnaskdr/htm/gui46.asp
> コントロールがフォーカスを取得できない別の理由として
> 考えられるのは、動的に作成されたコントロールが、
> WS_EX_CONTROLPARENT スタイルが設定されていない
> ダイアログ ボックス内の親ウィンドウにある場合です。
0339ガウショ
2006/03/17(金) 17:46:27「プロジェクト」→「プロジェクトへ追加」→「コンポーネントおよびコントロール」で「プロパティシート」を選択すると、CCmdTagetクラスがないから無理だと言われます。
MFCじゃないと無理なのでしょうか…
0340デフォルトの名無しさん
2006/03/17(金) 17:55:06PropertySheet っていうそのものズバリの名前のAPIがあるよ。
0341デフォルトの名無しさん
2006/03/17(金) 18:44:18その後実際にはサーバ上にファイルをが無くなっているにもかかわらず、成功しファイルが書き込まれてしまいます。
キャッシュと絡んでいるようなんですが、何方か情報ありませんでしょうか。
0342デフォルトの名無しさん
2006/03/17(金) 18:52:08検索すればすぐ出てくる。
0343デフォルトの名無しさん
2006/03/17(金) 19:50:58ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/disablethreadlibrarycalls.asp
> Do not call this function from a DLL that is linked to the static C run-time library (CRT). The static CRT requires DLL_THREAD_ATTACH and DLL_THREAD_DETATCH notifications to function properly.
何故重要なところを訳さないのだ…('A`)
0344デフォルトの名無しさん
2006/03/17(金) 19:54:400345ガウショ
2006/03/17(金) 20:04:05ありがとうございます。
PropertySheetがあることは知っていました。
が、サンプル(猫でも分かるプログラミング等にあるもの)どおり打ち込んでも表示されません。
と、思ったら表示されましたw
ご迷惑をおかけしました。
0346デフォルトの名無しさん
2006/03/17(金) 20:28:20ヒント: 日本語のドキュメントは古い
0347デフォルトの名無しさん
2006/03/17(金) 20:50:080348デフォルトの名無しさん
2006/03/17(金) 22:29:130349デフォルトの名無しさん
2006/03/17(金) 22:30:030350デフォルトの名無しさん
2006/03/17(金) 23:11:04アクティブでないあるプロセスに対し、"A"というキーを押してから離した、というメッセージを送りたいのですが、
どうすれば良いのか分かりません。
具体的で簡潔なサンプルプログラムを交えながら教えて頂けないでしょうか?
0351デフォルトの名無しさん
2006/03/17(金) 23:16:19WM_CHAR じゃだめか?
0352API4日目
2006/03/17(金) 23:21:16フォーカス移動の件。
今のところIsDialogMessageを呼べば足りているようです。
Queryその他については、これから勉強します。
ごみ箱へ移動の件。
SHFileOperationでググっていろいろ分かりました。
ありがとうございました!
0353デフォルトの名無しさん
2006/03/18(土) 00:22:58マイクロソフトに不利なことは訳さない。これ、常識。
0354デフォルトの名無しさん
2006/03/18(土) 03:24:17されたとき、タスクバーのメニューも一緒に表示されてしまうのですが、
これを阻止する方法ってありますか?
0355デフォルトの名無しさん
2006/03/18(土) 09:41:550356デフォルトの名無しさん
2006/03/18(土) 12:11:05タスクトレイアイコンをクリックした時の処理が非常に遅い時があります。
恐らく、他のタスクトレイに入っているソフトウェアの処理が終わるまで
クリックが反映されないからだと思うのですが、解消方法はないでしょうか?
どうぞよろしくお願いします。
0357デフォルトの名無しさん
2006/03/18(土) 12:12:33ShowWindow(hWnd, SW_HIDE);
にするとかは?メインウィンドウも消えちゃうけど。
0358デフォルトの名無しさん
2006/03/18(土) 17:20:510359デフォルトの名無しさん
2006/03/18(土) 17:50:430360デフォルトの名無しさん
2006/03/18(土) 18:48:16ウインドウを前回と同じの位置やサイズで表示するのは、
各アプリケーションごとに保存して実現しているのでしょうか?
なにか自動でそうするAPIがあるのでしょうか?
0361デフォルトの名無しさん
2006/03/18(土) 18:49:15そんなAPIはない。
0362デフォルトの名無しさん
2006/03/18(土) 18:50:09自力でがんがってくださいね。
0363デフォルトの名無しさん
2006/03/18(土) 18:51:52自力でMoveWindow
0364http://www.vector.co.jp/soft/win95/util/se072729.html
2006/03/18(土) 19:02:47もしくは64bitにネイティブ対応したテキスト置換ソフトありますか?
0365デフォルトの名無しさん
2006/03/18(土) 19:03:51多重起動を許している場合先に新たに起動して自分を終了させればいいと思うのだけれど、
多重起動が許されてない場合まず自分を終了してからじゃないと再起動出来ない・・・
0366デフォルトの名無しさん
2006/03/18(土) 19:08:210367デフォルトの名無しさん
2006/03/18(土) 19:09:13- スケジュールタスクに登録
- 自分自身でなく起動係を起動してから自殺する
0368デフォルトの名無しさん
2006/03/18(土) 19:18:06GetWindowPlacement&SetWindowPlacement
バグってるつーか、ややこしい仕様のAPIだが。
0369デフォルトの名無しさん
2006/03/18(土) 19:27:08そうすると、一部のコードセグメントは変わらないから、完全な再起動にならないぞ。
再起動の別プロセスつくって、それに任せるのがいいんじゃないかな。
0370デフォルトの名無しさん
2006/03/18(土) 19:27:53作る時はCreateWindowで指定すればいいし、
作ってから整理するならMoveWindowで充分
0371デフォルトの名無しさん
2006/03/18(土) 19:36:470372デフォルトの名無しさん
2006/03/18(土) 19:48:29最小化・最大化してるときには注意がいるよな。
0373デフォルトの名無しさん
2006/03/18(土) 19:49:02サイズが変更されるたびに親ウィンドウが全ての子ウィンドウの位置とサイズを調整してる。
0374デフォルトの名無しさん
2006/03/18(土) 19:55:42いつがその時なのか判定できないので困ってます。
復帰したときにメッセージかなにか飛んでくるのでしょうか?
0375デフォルトの名無しさん
2006/03/18(土) 19:57:330376デフォルトの名無しさん
2006/03/18(土) 22:24:31どのAPIでできますか?
0377デフォルトの名無しさん
2006/03/18(土) 22:40:060378デフォルトの名無しさん
2006/03/18(土) 23:00:090379デフォルトの名無しさん
2006/03/18(土) 23:01:17そこまで手抜きすると最小化したり最大化したりしてるときに終了すると
次回メタメタじゃん。
0380デフォルトの名無しさん
2006/03/18(土) 23:02:31SHFormatDrive
0381デフォルトの名無しさん
2006/03/18(土) 23:12:03起動可能なCD-ROMドライブにLinuxインストールCDを入れろという、メッセージボックスをだすAPI。
WindowsをリスタートするAPI。
詳しくは自分で調べて。
0382デフォルトの名無しさん
2006/03/19(日) 07:19:57実際そういうメタメタなアプリあるよな。結構有名なものでも
0383デフォルトの名無しさん
2006/03/19(日) 08:06:32以前、復元するときに画面内かチェックを入れていたがマルチモニタを
考慮していなかったので、セカンダリモニタだと位置が記憶されないって
苦情が来た。
0384デフォルトの名無しさん
2006/03/19(日) 11:11:40MonitorFromRect, MonitorFromWindow, GetMonitorInfo辺りを使うことになるんかな。
0385デフォルトの名無しさん
2006/03/19(日) 12:08:390386デフォルトの名無しさん
2006/03/19(日) 12:50:220387デフォルトの名無しさん
2006/03/19(日) 13:37:56どうもです、winsockってAPIではないですよね
winsockを実装しないと駄目って事デツカ
それと、Outlook Expressとかも、winsockを使って通信を送受信を
しているということでいいのでしょうか?
0388デフォルトの名無しさん
2006/03/19(日) 14:12:12( ∀`) 彡 確変だ!確変だ!確変の嵐だ!
((≡O ⊃
| | おまいら!左腕を上下 右腕を前後
し⌒J 同時にやってみろ!話はそれからだ!
0389デフォルトの名無しさん
2006/03/19(日) 14:18:04CDO使えば?
pop before smtpがどうかは知らん。
0390デフォルトの名無しさん
2006/03/19(日) 16:25:50APIだよ。
0391デフォルトの名無しさん
2006/03/19(日) 18:53:25WinSockはWindowsで通信を行う上では基本じゃないかな
簡単なのならWinInetとかでもできるのかもしれないけど、いつもSockでやっちゃってるからよく知らない
っていうかそれくらいググればすぐ出ないか?
0392デフォルトの名無しさん
2006/03/19(日) 21:35:29WinAPIは様々な分野のAPIの集合体。
そして、その中でソケット関連の部分を担うのがWinSook。
0393デフォルトの名無しさん
2006/03/19(日) 22:03:45で、後からWinSockってのをつけたわけだ。
そういうことだから、あまり気にするな。
0394356
2006/03/19(日) 22:48:19どうぞよろしくお願いします。
0395デフォルトの名無しさん
2006/03/19(日) 23:47:10お手上げです。
0396デフォルトの名無しさん
2006/03/20(月) 00:24:01タスクトレイのアイコンがクリックされたときに、クリックされたアイコン以外は無関係。処理するものは何も無い。
また、メッセージはPOSTされるので他のソフトの処理を待つ事も無い。
よってその仮定は間違っている。
ソースも詳細も無いので良く判らんが、単にクリックされたときの処理がおかしいか、スワップされてるだけじゃね?
0397デフォルトの名無しさん
2006/03/20(月) 01:12:07何をインクルードすればいいですか?
0398デフォルトの名無しさん
2006/03/20(月) 01:13:000399デフォルトの名無しさん
2006/03/20(月) 01:15:26それがインクルードできないんですよ。
引っかかってエラー出てしまいます
0400デフォルトの名無しさん
2006/03/20(月) 01:16:260401デフォルトの名無しさん
2006/03/20(月) 01:17:26これではできないんですか?
0402デフォルトの名無しさん
2006/03/20(月) 01:18:28Win32 SDK(>>4のリンク参照)を別途入れよ。また、その他設定を要する。
0403デフォルトの名無しさん
2006/03/20(月) 01:19:25ありがとうございました。
0404400
2006/03/20(月) 01:19:34ttp://www.microsoft.com/japan/msdn/vstudio/express/visualc/usingpsdk/
0405デフォルトの名無しさん
2006/03/20(月) 04:44:58画面のプロパティからウィンドウの背景色を変えると、
黒だけしか使ってないボタンが見えなくなってしまう。
「黒以外の色も使うようにする」っての以外に、
なんかいい解決方法ないかな。
0406デフォルトの名無しさん
2006/03/20(月) 04:48:490407デフォルトの名無しさん
2006/03/20(月) 07:14:06無料だよ。
0408デフォルトの名無しさん
2006/03/20(月) 09:21:18時々画面がブラックアウトして少しの間PCが固まることがあります。
一時的にディスプレイへの信号が切れてるっぽいのでVRAMが解放されてないとかその辺
なんじゃないかと思ってるのですが、なかなか原因が見つかりません。
そこで怪しいと思ってる点なのですが、プロシージャ関数内にswitch(msg){}を含む関数
(引数はhWnd,msg,wparam,lparam,戻り値はLRESULT型でそのままプロシージャの戻り値に)
を複数配置してif分岐でどのswitchを通るか選んでいます。
こういった記述は問題ないのでしょうか?
0409デフォルトの名無しさん
2006/03/20(月) 09:41:08GDIのみ使ってる限りVRAM解放とかは関係ない。
時間かかる処理してて、メッセージループ回ってないとかじゃね?
0410デフォルトの名無しさん
2006/03/20(月) 10:56:070411デフォルトの名無しさん
2006/03/20(月) 11:52:37証拠隠滅用に簡単なのを作ってて、最近使ったファイル削除、ゴミ箱を空にまではできたんだけど、
ブラウザの履歴消去が探しても見つからない
0412デフォルトの名無しさん
2006/03/20(月) 11:58:590413デフォルトの名無しさん
2006/03/20(月) 12:09:450414デフォルトの名無しさん
2006/03/20(月) 13:04:440415デフォルトの名無しさん
2006/03/20(月) 14:35:54後、その状態で、メニューだけ表示する方法も。
0416デフォルトの名無しさん
2006/03/20(月) 14:54:310417デフォルトの名無しさん
2006/03/20(月) 14:56:280418デフォルトの名無しさん
2006/03/20(月) 15:00:23・ウィンドウのサイズを画面解像度と同じに変更
0419デフォルトの名無しさん
2006/03/20(月) 15:04:37ありがとうございます。
試してみます。
0420デフォルトの名無しさん
2006/03/20(月) 18:23:54そんな面倒な事しなくても、
キャプションとボーダーを外して最大化すればいいんジャマイカ?
0421デフォルトの名無しさん
2006/03/20(月) 20:50:32ありがとうございます。
時間のかかる処理と言うのは、メッセージループ内(case MOUSEMOVE内など)
で時間がかかってもダメなんでしょうか?
もしそうなら、最大限高速化して対応する(後は諦める)として
しばらくはリソースが解放されてないって線で調べてみます。
0422デフォルトの名無しさん
2006/03/20(月) 21:42:240423デフォルトの名無しさん
2006/03/20(月) 21:44:170424デフォルトの名無しさん
2006/03/20(月) 22:01:270425デフォルトの名無しさん
2006/03/20(月) 23:05:130426デフォルトの名無しさん
2006/03/20(月) 23:07:500427デフォルトの名無しさん
2006/03/21(火) 00:14:33任意のウインドウに表示可能なポップアップメニューの場合、
DrawMenuBar()の引数 HWND には何を指定すればよいのでしょうか?
0428デフォルトの名無しさん
2006/03/21(火) 00:31:04確かにあるね……。
何でDeleteMenu()のRemarkにもDrawMenuBar()があるんだろう。
メニューの変更をした場合は呼び出す必要があるだろうが、
DeleteMenu()を呼び出したということは、
すでに、メニューを破棄してしまったのだから、
もはや存在しないメニューに対して、DrawMenuBar()を呼び出せるわけもないと思うのだが……。
0429デフォルトの名無しさん
2006/03/21(火) 00:34:01> DeleteMenu()を呼び出したということは、
> すでに、メニューを破棄してしまったのだから、
いや、DestroyMenu()じゃなくて、DeleteMenu()です。
メニューアイテムを削除した後の話。
0430デフォルトの名無しさん
2006/03/21(火) 01:31:13それなら普通に、DeleteMenu()にも指定したメニューハンドルを指定すればいいでそ。
0431デフォルトの名無しさん
2006/03/21(火) 02:31:290432デフォルトの名無しさん
2006/03/21(火) 03:21:34Win32APIを学ぶのに、全ての文法を覚えるのは、とてもじゃないけど無理だと思ったのです
で、Win32.APIを学ぶ為の書籍等は、あるのでしょうか
Win32APIを熟知していくのにこの書籍はもっとくべきという本はあるんでしょうか
できれば、教えていただきたいです。
0433デフォルトの名無しさん
2006/03/21(火) 03:22:540434432
2006/03/21(火) 03:45:44構文や文法は、記述方法としてはCの文法で、いける(いけないかもしれないですが)
要は、Win32APIを学ぶ為の図書があれば教えて頂きたいです
0435デフォルトの名無しさん
2006/03/21(火) 03:48:380436デフォルトの名無しさん
2006/03/21(火) 07:07:25いくら任意のウィンドウに表示可能なメニューと言っても
Deleteやら操作するのはどこかのウィンドウのプロシージャだろ
その時の自分のハンドルを渡せばいい
0437デフォルトの名無しさん
2006/03/21(火) 07:17:02プログラムにウィンドウがひとつとは限らないわけだし
0438デフォルトの名無しさん
2006/03/21(火) 07:50:13>>要は、Win32APIを学ぶ為の図書があれば教えて頂きたいです
ASCII出版 Cheales Petzold著 プログラミングWindows 第5版
なんといってもこれだろう、文章がしっかりしていて、翻訳もしっかりしている
序章のあたりは物語としても興味深く読めるしWinndowsに対する造詣も深まる
その導入部から徐々に
WIN32APIの本質に進んで分厚い本でも飽きさせない魅力があるYO!
0439デフォルトの名無しさん
2006/03/21(火) 09:36:500440デフォルトの名無しさん
2006/03/21(火) 10:50:31優しいお兄さん達が答えてくれるからな!!!!
0441デフォルトの名無しさん
2006/03/21(火) 10:57:48よくnyとかの話題する?
別に深い意味はないけど。
0442408
2006/03/21(火) 11:18:19ブラックアウトの原因ですが、staticで宣言したクラスの関数に引数としてHDC(描画元、先ともに)を渡して
描画(TransparentBlt)させてるところっぽいです。
変更があるごとに50〜130回ほどTransparentBltしてるのですが
これってリソース使い尽くすくらい多いのでしょうか?
解決策はDirectDraw使うくらいですかね・・・?
0443デフォルトの名無しさん
2006/03/21(火) 11:34:110444デフォルトの名無しさん
2006/03/21(火) 11:51:09そうじゃなくて、GDIリソースを作るだけ作って解放してないって意味。
0445デフォルトの名無しさん
2006/03/21(火) 11:54:20ハンドルの数、GDI オブジェクト、USER オブジェクト当たりはチェック付けとけ。
0446デフォルトの名無しさん
2006/03/21(火) 13:37:01その後いろいろ試してみたところ、特にDrawMenuBar()を呼び出さなくても
メニュー項目はちゃんと削除されることがわかった。
ただし、システムメニューの場合はDrawMenuBar()を呼び出さないとダメらしい。
・・・ドキュメントが間違っているのか?
0447デフォルトの名無しさん
2006/03/21(火) 13:45:27System menu の場合、ウィンドウサイズによっては2段になったりして ClieentRgn の更新をしないと
いけないから明示的に DrawMenuBar() 呼び出さないとマズイ と理解している
0448408
2006/03/21(火) 13:54:51hBmp = (HBITMAP)LoadImage(NULL,"back.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
GetObject(hBmp, (int)sizeof(bmp_info), &bmp_info);
bmpw = bmp_info.bmWidth;
bmph = bmp_info.bmHeight;
SelectObject(hdc_mem, hBmp);
back_hdc = CreateCompatibleDC(NULL);
hDummy = CreateCompatibleBitmap(hdc_mem,bmpw,bmph);
SelectObject(back_hdc,hDummy);
DeleteObject(hDummy);
こんな感じで作ってるのですが、おかしいでしょうか?
終了処理にDeleteObject⇒DeleteDCもやってるのですが・・・
>>444-445
オブジェクトのほうはタスクマネージャで見たところ、常に二桁程度で増えてる様子
もなかったです。(ためしにEndPaint消してみるといい具合に増えます)
0449デフォルトの名無しさん
2006/03/21(火) 14:02:26サンプルソースコードは沢山ネットに転がってるから。
0450デフォルトの名無しさん
2006/03/21(火) 14:06:52http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/devcons_1vsk.asp
target が SelectObject() されている間 DeleteObject(target) は削除されていない。
| HDGIOBJ oObj = SelectObject(hDC, target);
.....
| SelectObject(hDC, oObj);
| DeleteObject(target);
こうしないとマズイんじゃ?
0451デフォルトの名無しさん
2006/03/21(火) 14:09:350452408
2006/03/21(火) 14:53:07バグ取りに付き合ってもらってすみません。
終了時にSelectObjectで対象を元に戻してからDeleteしてみましたがやはりダメでした・・・
0453デフォルトの名無しさん
2006/03/21(火) 14:53:51その部分をクリックしてもちゃんと反応するウィンドウを作るにはどうすればいいでしょうか?
0454デフォルトの名無しさん
2006/03/21(火) 15:27:26レイヤードウィンドウで限りなく透明な不透明領域を作るとか。
0455デフォルトの名無しさん
2006/03/21(火) 15:48:35>438だが
nyを話題に書き込んだ事は一度もありませんが
なにか?
nyはプログラミング的にはすごく関心はあるけどね
0456デフォルトの名無しさん
2006/03/21(火) 17:41:01SetNamedSecurityInfoで
SE_FILE_OBJECT
OWNER_SECURITY_INFORMATION
0458デフォルトの名無しさん
2006/03/21(火) 21:42:54だけど、なんであやまるのかな?
おいらは最近Windowsの実装を仕方無しにやり始めたYO
マネージドだとかアンマネージドとかややこしいねwww
最近なんとなく、簡単なGUIの実装が組めるようになってきた
と少し嬉しかったので書いて見る
スレ汚しスマソ
0460デフォルトの名無しさん
2006/03/22(水) 16:56:04どっちが反応することを期待してるんだ?
0461デフォルトの名無しさん
2006/03/22(水) 16:56:51リージョンだと抜けた部分の操作が下のウィンドウに行っちゃうよ?
0462デフォルトの名無しさん
2006/03/22(水) 17:02:13「後ろのウィンドウが見えている"が"」だから、透明な自ウィンドウだと思う。
0463デフォルトの名無しさん
2006/03/22(水) 17:10:060464デフォルトの名無しさん
2006/03/22(水) 17:38:580465デフォルトの名無しさん
2006/03/22(水) 19:10:160466デフォルトの名無しさん
2006/03/22(水) 23:46:210467デフォルトの名無しさん
2006/03/23(木) 00:29:33どうやるんでしょうか?
ウイルス対策ソフトとかはやってると思うんですが。
0468デフォルトの名無しさん
2006/03/23(木) 02:26:070469デフォルトの名無しさん
2006/03/23(木) 10:27:550470デフォルトの名無しさん
2006/03/23(木) 12:53:55CRITICAL_SECTIONが占めるメモリだけなんですか?
0471デフォルトの名無しさん
2006/03/23(木) 12:58:020472デフォルトの名無しさん
2006/03/23(木) 13:24:15数万個確保するのはあまりよろしくないのですね?
0473デフォルトの名無しさん
2006/03/23(木) 13:32:430474デフォルトの名無しさん
2006/03/23(木) 13:38:020475デフォルトの名無しさん
2006/03/23(木) 13:48:12例えば
struct { hoge bee; boke gaa; } nanika[10000];
なんてのがあって、個々の構造体へのアクセスをクリティカルセクション内で
行いたいなんて場合は、構造体の中に CRITICAL_SECTION を置くのではなく、
適当なハッシュで個数を減らすのが定石です。
例えば CRITICAL_SECTION cs[100]; なんてのを用いて、cs[index%100] で
クリティカルセクションに入る。1/100の確立で関係ない構造体へのアクセスと
衝突するけど、それによるパフォーマンスの低下は微々たるもの。
0476デフォルトの名無しさん
2006/03/23(木) 13:55:13ぐへへへ。
0477デフォルトの名無しさん
2006/03/23(木) 14:19:50[ ゚д゚]y-~~~ デフラグガカンリョウシマシタ
/[へへ
、。。ぁあえぐすってなへへへまらん万万個個発連
0478デフォルトの名無しさん
NGNG0479デフォルトの名無しさん
2006/03/23(木) 22:33:57前にこの板のどこかで見たんだけど忘れちゃった。
偶然見つけた52文字 in advapi32.dll
ConvertSecurityDescriptorToStringSecurityDescriptorA
ConvertSecurityDescriptorToStringSecurityDescriptorW
ConvertStringSecurityDescriptorToSecurityDescriptorA
ConvertStringSecurityDescriptorToSecurityDescriptorW
0480453
2006/03/24(金) 09:29:040481デフォルトの名無しさん
2006/03/24(金) 09:41:000482デフォルトの名無しさん
2006/03/24(金) 11:29:36GdipGetStringFormatMeasurableCharacterRangeCount (49)
GdipSetImageAttributesOutputChannelColorProfile (48)
ぐらい。まあ、短いのでも
GdipGetRegionData (18)
はあるが。
0483デフォルトの名無しさん
2006/03/24(金) 12:49:32自在に変形するにはどうすればよいでしょうか?
この場合の変形というのは
サイズをかえるという意味ではなくて、
リージョンなどを使って星型とかキャラクタの型だとかに
変形することはできるのでしょうか?
0484デフォルトの名無しさん
2006/03/24(金) 12:51:460485ねこ
2006/03/24(金) 12:58:08現在、VB6.0からVB.NETへ移行中です。 iniファイルから文字列を取得するAPI GetPrivateProfileString
を使用する上でわからない所があります。
GetPrivateProfileString
<引数>
lpAppName:セクション名
lpKeyName:キー名
lpDefault:キーが見つからなかった場合のデフォルトの文字列
lpReturnedString:取得した文字列が入る
nSize:同、文字数
inifilename:INIファイル名
@戻り値@
取得した文字列
で、VB6.0では、lpReturnedStringにはnSizeで指定したバッファ分戻ってきた
のですが、(空文字列で埋めてそのバッファ分を返していた)
VB.NETでは、指定したバッファ分ではなく、文字数分のみかえってきてしまいます。
しかも、文字列AAAだとすると、"AAA だけで、後ろの " が抜けてしまう状態です。
どうすればいいかご存知の方、教えてください!
宜しくお願いします。
0486デフォルトの名無しさん
2006/03/24(金) 13:04:200487デフォルトの名無しさん
2006/03/24(金) 13:18:18VB.NETの仕様でただしいような気がする。
たぶんいままでバグってた
0488ねこ
2006/03/24(金) 13:26:13ばぐ。。。
すみません!
VB6.0では
lpReturnedString(取得した文字列が入る変数) = Space(256)
llngRet = GetPrivateProfileString(・・・・lpReturnedString,256(バイト数)・・)
っといった具合に書くと、"文字列+空文字"(256バイト分)で返ってきてたんですが。。
こっちが間違ってる感じですか??
宜しくお願いします!
0489デフォルトの名無しさん
2006/03/24(金) 13:31:290490デフォルトの名無しさん
2006/03/24(金) 13:31:50そもそもそれで何か不都合があるのか?
0491ねこ
2006/03/24(金) 14:01:16ありがとうございます。
0492デフォルトの名無しさん
2006/03/24(金) 17:00:09クリップボードビューアチェインのメッセージからは認識できないんでしょうか。
どうやって認識可能ですか?
0493デフォルトの名無しさん
2006/03/24(金) 22:40:51CEでの開発を想定しているので、できればメモリに読み込ませたくないんです。
0494デフォルトの名無しさん
2006/03/24(金) 22:43:460495デフォルトの名無しさん
2006/03/24(金) 22:49:05自前で、ずらすしかない。その際、一時データをメモリに
読み込ませるのは仕方がない。
0496チラシの裏
2006/03/24(金) 23:05:58前々から欲しかった Advanced windows をついに購入するぞ!
…と思ったら、何処のオンライン書店でも
売り切れとか重版未定とかなってるじゃーか!
どういうことだ!!
た、楽しみにしてたのに……orz
0497デフォルトの名無しさん
2006/03/24(金) 23:48:12それ大分前に既出@推薦図書スレ
俺も買おうと思ったが無理だった
0498デフォルトの名無しさん
2006/03/24(金) 23:54:520499デフォルトの名無しさん
2006/03/25(土) 03:39:36大学の図書館にリクエストしてみようかね。
0500デフォルトの名無しさん
2006/03/25(土) 12:04:10タスク切り替えのAlt + Tabを「押されたタイミングで」検出することって
出来ないんでしょうか?
Alt押しながらだとWM_KEYDOWNのVK_TABは発生しないようだし、
WM_SYSKEYDOWNではAltが押された情報のみしか送られてこず、
WM_SYSKEYUPでやっとTabが「離されたタイミング」を検出できたところです。
要はタスク切り替え用のメニューウィンドウが出る直前までに
処理したい事があるのですが、なんとかなりませんでしょうか。
0501デフォルトの名無しさん
2006/03/25(土) 12:27:05WM_ACTIVATEAPPじゃダメなんか?
0502デフォルトの名無しさん
2006/03/25(土) 12:33:260503デフォルトの名無しさん
2006/03/25(土) 12:39:160504デフォルトの名無しさん
2006/03/25(土) 12:46:460505500
2006/03/25(土) 13:08:30タイミングが知りたいだけなんですが…
WM_ACTIVATEAPPはAlt + Tabによる切り替えなのか
判断できないと思うんですけど、何か方法があるんでしょうか?
クリック操作でウィンドウが背後に回る時とかも来ますよね…
0506デフォルトの名無しさん
2006/03/25(土) 13:20:30フック掛ければ早そうだが。
0507デフォルトの名無しさん
2006/03/25(土) 13:57:59昔、それで、Alt+Tabを独自アプリに切り替えるプログラムがサンプルで Dr.GUIに出てたはず。
0508デフォルトの名無しさん
2006/03/25(土) 14:01:56以前winキーのフックができなくて困った記憶がある
0509デフォルトの名無しさん
2006/03/25(土) 14:04:310510デフォルトの名無しさん
2006/03/25(土) 14:06:50だってローレベルじゃないとWinキー拾えないっしょ?
0511510
2006/03/25(土) 14:08:520512デフォルトの名無しさん
2006/03/25(土) 16:42:520513デフォルトの名無しさん
2006/03/25(土) 18:35:02同じDLLをLoadLibraryで複数ロードした場合
h1=LoadLibrary("test.dll")
h2=LoadLibrary("test.dll")
インスタンスが複数できるイメージでいたのですが
あくまでもインスタンスは1つなんですね
これを上記 h1,h2で個別のメモリを共有しない方法あります?
検索すると逆に アプリケーション間でメモリを共有する
方法はたくさん載ってるのですが
よろしくお願いします
0514デフォルトの名無しさん
2006/03/25(土) 18:58:03test.dllを別名で保存してロードすればいい
0515デフォルトの名無しさん
2006/03/25(土) 21:36:220516デフォルトの名無しさん
2006/03/25(土) 22:04:11などの動作を共有する方法はないでしょうか?
別のウィンドウに親と自ウィンドウが隠されて、親ウィンドウがアクティブになった歳に
一緒に前面にくるような仕組みを行いたいのです、よろしくお願いします。
0517デフォルトの名無しさん
2006/03/25(土) 22:13:01モードレスのときに、モーダルのように、親からアクティブにしてほしい、ってことか?
0518デフォルトの名無しさん
2006/03/25(土) 22:30:11現状では、スレッドを作成してモーダルダイアログを作成して、親ウィンドウと別々の
動作を可能にしているのですが、親ウィンドウが前面に出てくる時に
自ダイアログが前面に来ないのでこれをモードレスと同じような動きを作りたいと思って
質問させていただいています。
0519デフォルトの名無しさん
2006/03/25(土) 22:35:140520デフォルトの名無しさん
2006/03/25(土) 22:54:16SetWindowPosとかでZオーダー変えればいいんじゃねーの?
つーか、
> モーダルダイアログしか作成できないので
コレがさっぱりワカンネ
0521デフォルトの名無しさん
2006/03/25(土) 22:59:59まさかリソース系の専用のAPIを使わなければできないとか思ってるのか?
0522デフォルトの名無しさん
2006/03/25(土) 23:06:12親ウィンドウ内にダイアログが作成されてしまいました。
モードレスも作成は出来るのですが、メッセージループにIsDialogMessageをかませられないので
正常に動作しなかったのです。
0523デフォルトの名無しさん
2006/03/25(土) 23:08:56猫のページを見て、やり方を覚えてからにしろ。
0524デフォルトの名無しさん
2006/03/25(土) 23:36:46逆に聞くが、なんで別のメモリにしたいの?
0525デフォルトの名無しさん
2006/03/26(日) 00:03:09>>514の方法をやったことがあるな。
>>513が同じ理由なのかは知らんけど。
0526デフォルトの名無しさん
2006/03/26(日) 01:49:41それよりも、スレッドセーフにするラッパーDLL作った方がいいんじゃない?
0527デフォルトの名無しさん
2006/03/26(日) 08:18:02kwsk
DLLの関数Aを呼んだあとで関数Bを呼ぶんだけど、
Aの結果を受けてBの動作が変わるという仕様だった。
「Aの結果」というのを、たぶんグローバル変数で持ってたんだな。
で、マルチスレッドで問題が起きた、と。
そのときの俺には>>514以外にいい方法が思いつかなかったんだ。
0528デフォルトの名無しさん
2006/03/26(日) 09:49:45ダイアログボックスを作るのにはDialogBox関数しかないとか思っているオチではないかと
0529デフォルトの名無しさん
2006/03/26(日) 11:55:12正常に動作しないんだよ。
自己解決するのでもう質問への回答はいらないです、失礼します。
0530デフォルトの名無しさん
2006/03/26(日) 11:56:29研究成果は国民の共有財産だ。
即物的なものにしか価値を認めないDQNにはわからないかもしれないがね。
0531デフォルトの名無しさん
2006/03/26(日) 12:00:19Σ(゚Д゚) ←>>10
0532デフォルトの名無しさん
2006/03/26(日) 12:11:07ラッパーDLL内で元のDLLをCopyFile
0533デフォルトの名無しさん
2006/03/26(日) 12:27:36見当違いのレスされてカワイソス
0534デフォルトの名無しさん
2006/03/26(日) 13:31:03本当にしたいことを捨て台詞とともに書くようじゃ、まっとうな回答は得られる訳ないな
0535デフォルトの名無しさん
2006/03/27(月) 15:27:130536デフォルトの名無しさん
2006/03/27(月) 22:19:440537デフォルトの名無しさん
2006/03/27(月) 22:49:020538デフォルトの名無しさん
2006/03/27(月) 22:50:09ここの下記のコード、コピっても全く反応がありません。
case WM_PAINT:
{
PAINTSTRUCT ps;
hdc = BeginPaint(hWnd , &ps);
…
Blit(hdc,hdc,0,100,50,50,400,260,RGB(0,0,0));
EndPaint(hWnd , &ps);
}
break;
どこが悪いか教えてください。お願いします。
0539デフォルトの名無しさん
2006/03/27(月) 22:54:21Edit Boxぐらい自前で作れるよ。そうすりゃ簡単。
どうしても、いやならメッセージをフックしろ。
0540デフォルトの名無しさん
2006/03/27(月) 23:00:02>>538
透過部分を黒(0)、描画部分を白(1)にしたマスク画像を作って
まずマスク画像をBitBleでラスタオペレーションにSRCPAINTで描画、
そのあと本画像をSRCANDで描画すると透過処理できる
「背景とマスクをSRCPAINT(論理和)で結合し、そのあとSRCAND(論理積)で結合することによって
黒(0)の部分は全て0になり、白(1)の部分だけに描画される」
とか俺のAPIメモに書いてあった
0541デフォルトの名無しさん
2006/03/27(月) 23:00:42実行ファイルでも大丈夫って噂を聞いたが本当だろうか
0542デフォルトの名無しさん
2006/03/27(月) 23:04:34情報を小出しにしないで、できる限り説明してから質問しろ。
0543デフォルトの名無しさん
2006/03/27(月) 23:05:49NM_DBLCLK or サブクラス化
0544デフォルトの名無しさん
2006/03/27(月) 23:09:15どうやって作るのかも言えよ!
つかえねえなボケが。
0545デフォルトの名無しさん
2006/03/27(月) 23:24:43たとえば、「右から左へ読む」とか「UNICODE制御文字の挿入」とか。
0546デフォルトの名無しさん
2006/03/27(月) 23:30:130547デフォルトの名無しさん
2006/03/28(火) 08:49:140548デフォルトの名無しさん
2006/03/28(火) 08:51:00NM系はコモンコントロールの通知メッセージで標準コントロールじゃない
0549デフォルトの名無しさん
2006/03/28(火) 09:31:27御意
0550デフォルトの名無しさん
2006/03/28(火) 10:33:510551デフォルトの名無しさん
2006/03/28(火) 12:13:40ありがとうございます。
0552デフォルトの名無しさん
2006/03/28(火) 16:26:02LOGFONT logFont = {0};
HFONT hFont;
HDC hDC = GetDC(NULL);
logFont.lfHeight = nHeight;
logFont.lfWidth = 0;
logFont.lfWeight = bBold ? FW_BOLD : FW_NORMAL;
logFont.lfCharSet = SHIFTJIS_CHARSET;
logFont.lfOutPrecision = OUT_DEFAULT_PRECIS;
logFont.lfClipPrecision = CLIP_DEFAULT_PRECIS;
logFont.lfQuality = DEFAULT_QUALITY;
logFont.lfPitchAndFamily = FIXED_PITCH | FF_DONTCARE;
_tcscpy(logFont.lfFaceName, _T(pszFontName));
hFont = CreateFontIndirect(&logFont);
こんなコードを書いているのですが、FW_NORMALではフォント幅が
たとえば半角8pixel/全角16pixelで全て固定できるのですが
FW_BOLDの場合は9pixelとか17pixelとかの半端な文字が出てしまいます。
何か方法がありましたらご教示頂けませんでしょうか。
0553デフォルトの名無しさん
2006/03/28(火) 16:36:148+1→9
16+1→17
0554デフォルトの名無しさん
2006/03/28(火) 16:45:39・太字描画処理を自分でやる。
0555デフォルトの名無しさん
2006/03/28(火) 16:52:00コード書くときのフォントはCourier(New)だよな!?
0556デフォルトの名無しさん
2006/03/28(火) 16:54:570557デフォルトの名無しさん
2006/03/28(火) 17:02:57・lfWidthを8と指定しても9になる
・全角が半角の2倍にならない
など、FW_BOLD指定時とFW_NORMAL指定時でフォントの論理的な属性が
異なってしまう点で行き詰まっています。
明示的に指定した値そのもので、かつ全角が半角のきっちり倍になるような
太字フォントで描画することは可能でしょうか?
0558デフォルトの名無しさん
2006/03/28(火) 17:03:050559デフォルトの名無しさん
2006/03/28(火) 17:04:580560デフォルトの名無しさん
2006/03/28(火) 17:08:04無理ですか...ありがとうございました。
0561デフォルトの名無しさん
2006/03/28(火) 17:09:29# 多分見難いかもしれんけど・・・
0562デフォルトの名無しさん
2006/03/28(火) 17:16:46うp
0563デフォルトの名無しさん
2006/03/28(火) 17:43:01自前のウィンドウに描画するなら、1文字づつDrawTextすれば?
あるいは、2倍幅になるようなlfWidthのみを使う。
0564563
2006/03/28(火) 17:49:54(追記) BOLDにしなくてもサイズによっては、2倍になりません。
0565563
2006/03/28(火) 17:51:32(訂正)あるいは、2倍幅になるようなlfHeightのみを使う。
0566デフォルトの名無しさん
2006/03/28(火) 18:13:220567デフォルトの名無しさん
2006/03/28(火) 18:39:370568デフォルトの名無しさん
2006/03/28(火) 19:18:49ClearTypeとの相性最悪だから俺は好きでない。
0569デフォルトの名無しさん
2006/03/28(火) 22:16:32さざなみ明朝
1 l I | の区別が楽。
0の中に点があれば、もっとよかったけど。
0570デフォルトの名無しさん
2006/03/28(火) 23:56:480571デフォルトの名無しさん
2006/03/29(水) 00:04:03フォントの指定を持って厳密におこなうと、lfWidthが8の場合も取れる事がある。
ただし、WIFE時代のフォントだけじゃないかな。日本語だと。
列挙して獲得 DCにセット後、論理フォントで確認、まですれば完璧。
一般的には、文字を描画するときに文字間が指定できる API があるから、それを使う。
0572デフォルトの名無しさん
2006/03/29(水) 12:18:47どの関数が適してますか?
0573デフォルトの名無しさん
2006/03/29(水) 12:31:26自分の作ったアプリがWinXPでは動くけど、9xでは動かない時、原因としてどのような事が考えられるでしょうか。
・WINVER, _WIN32_WINNT, _WIN32_WINDOWSのバージョンを適切に設定する
・ユニコードビルドしない
くらいしか思いつかないのですが、何か他に気をつけなければならない点があったら教えていただけないでしょうか
0574デフォルトの名無しさん
2006/03/29(水) 12:52:38XPにも9xにも実装されている関数だとしても油断してはならない。
細かい差異が存在する可能性がある。
たとえばCreateWindow(Ex)では、
NTならHINSTANCEはヌルにして良いが、9xではヌルにできないと言う違いがある。
そんな具合なんでエラーになる箇所で呼んでいる関数をMSDNなんかで調べてみな。
0575デフォルトの名無しさん
2006/03/29(水) 12:54:47・使用しているAPIが9xに対応したものかどうか
0576デフォルトの名無しさん
2006/03/29(水) 12:57:42なるほど、そりゃキツい
というか、9x系列のOSを持ってないので、9xでも動くように開発するのは無理そうですね…
0577は@ c178.016.c3-net.ne.jp ◆cplnFO9T0I
NGNG0578デフォルトの名無しさん
2006/03/29(水) 13:18:36Vistaでプッシュボタンにカーソルを合わせると、じわぁと色が変るのですがあれってどうやるんでしょうか?
0579デフォルトの名無しさん
2006/03/29(水) 13:21:08LRESULT CALLBACK About( HWND hDlg,....)
{
n = hDlg;
......
}
これじゃダメなの?
0580578
2006/03/29(水) 13:44:55MSDNフォーラムみてたら
「まだサポートしてない、Beta2辺りで新しいAPIを公開するかもしれないから待ってね」(適当に訳した)
とあった…orz
>>577
つ FindWindow()
ってDialogBox()で指定するDLGPROCのHWNDでいいんジャマイカ?
0581デフォルトの名無しさん
2006/03/29(水) 15:05:33「ファイル名を指定して実行」ダイアログのログってどこに保存されてます?
0582デフォルトの名無しさん
2006/03/29(水) 15:12:180583デフォルトの名無しさん
2006/03/29(水) 15:13:37レジストリ
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU
0584デフォルトの名無しさん
2006/03/29(水) 15:26:400585デフォルトの名無しさん
2006/03/29(水) 15:30:430586は@ c178.016.c3-net.ne.jp ◆cplnFO9T0I
NGNGこれで実行したものの、c_tempの中身が空になって終わりなんですよ。
ちなみにEndDialog(hDig, LOWORD(wParam));の前にブレークポイントを置いて確認しました。
LRESULT CALLBACK WProc_DISC_NAME(HWND hDig, UINT message, WPARAM wParam, LPARAM lParam){
switch(message){
case WM_INITDIALOG :
return FALSE;
case WM_COMMAND :
switch(LOWORD(wParam)){
case BTN_OK :
GetDlgItemText(hDig, TXT_DB, c_temp, sizeof(c_temp));
EndDialog(hDig, LOWORD(wParam));
return TRUE;
break;
default:
break;
}
break;
default:
break;
}
return FALSE;
}
0587は@ c178.016.c3-net.ne.jp ◆cplnFO9T0I
NGNG訂正
×:空になって
○:空のままで
0588デフォルトの名無しさん
2006/03/29(水) 15:52:44TXT_DBというコントロールにちゃんと文字列はあるの?
なんでGetDlgItemTextの戻り値をチェックしないんだ?
0589は@ c178.016.c3-net.ne.jp ◆cplnFO9T0I
NGNG>c_tempの宣言はちゃんとしてる?
グローバル変数として宣言してあります。
>TXT_DBというコントロールにちゃんと文字列はあるの?
TXT_DBは別のダイアログでした。
>なんでGetDlgItemTextの戻り値をチェックしないんだ?
クイックウォッチで無いと返されました。
結論:バグ取りに手伝わせてしまい非常にすみませんでした。
(何故かメインのダイアログにあるTXT_DBをGetDlgItemTextの引数に指定していた上に
このダイアログのエディットボックスのIDをちゃんと変えていなかった為。
ちゃんとIDを決めてそのIDを引数にしたら上手く取り込めました。)
0590デフォルトの名無しさん
2006/03/29(水) 20:35:25Fixed98
斜線つきの0が好きなので
>>576
難しいけど無理ではない
0591デフォルトの名無しさん
2006/03/29(水) 20:39:57Anonymous 最近聞いた。
0592デフォルトの名無しさん
2006/03/29(水) 20:46:26みそ字 が欲しいなぁ
0593デフォルトの名無しさん
2006/03/29(水) 23:10:26あれをコードで出すにはどうすれば良いの?
0594デフォルトの名無しさん
2006/03/29(水) 23:21:450596デフォルトの名無しさん
2006/03/30(木) 00:06:24ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/functions/shell_notifyicon.asp
これじゃないのか?ちょっと検索したらすぐ見付かったが
0597デフォルトの名無しさん
2006/03/30(木) 00:49:25SelectObject (hdcMemM1, ii[0]) ;
SelectObject (hdcMemM2, ii[1]) ;
BitBlt (hdc, pos[0].x, pos[0].y, cxSource, cySource, hdcMemM1, 0, 0, SRCCOPY) ;
BitBlt (hdc, pos[1].x, pos[1].y, cxSource, cySource, hdcMemM2, 0, 0, SRCCOPY) ;
ここの部分を、下に直すと上手く動かなくなります。
SelectObject (hdcMemM1, ii[0]) ;
SelectObject (hdcMemM2, ii[0]) ;
BitBlt (hdc, pos[0].x, pos[0].y, cxSource, cySource, hdcMemM1, 0, 0, SRCCOPY) ;
BitBlt (hdc, pos[1].x, pos[1].y, cxSource, cySource, hdcMemM2, 0, 0, SRCCOPY) ;
出力したい画像が同じで、bitbltを使う場合同じ画像の出力がうまくいきません。
この場合メモリデバイスコンテキストはどのようにするのがヨイんでしょうか?
0598593
2006/03/30(木) 00:50:57バルーンはNIM_MODIFYすると直ぐ表示されるけど、
ツールチップはNIM_MODIFYしても何か表示されないっぽくて困ってます
0599デフォルトの名無しさん
2006/03/30(木) 00:54:11なんで転送元二つも必要なん?
画像が同じなら一つでいいじゃん。
0600デフォルトの名無しさん
2006/03/30(木) 01:05:06トンクスです。
ビットマップハンドルをコピーしてるのが良くなかった気がする。。
デバイスコンテキストハンドルのコピーで増やしてみる。
デバイスコンテキストだけで、128枚画像あるorz 疲れた
0601デフォルトの名無しさん
2006/03/30(木) 08:27:571つのオブジェクトを複数のデバイスコンテキストが同時にSelectすることは出来ない。
0602デフォルトの名無しさん
2006/03/30(木) 13:23:060604602
2006/03/30(木) 13:34:050605デフォルトの名無しさん
2006/03/30(木) 13:34:45動的にメモリを確保したいときに使う。
mallocしてしっかりfreeしないと、メモリリークが激しいよ。うん。激しいよ。
0606602
2006/03/30(木) 13:35:160607602
2006/03/30(木) 13:38:24C言語なら俺に聞け! Part 124
http://pc8.2ch.net/test/read.cgi/tech/1142302804/752-760
0608デフォルトの名無しさん
2006/03/30(木) 15:55:04SelectObject (hdcMemM1, ii[0]) ;
BitBlt (hdc, pos[0].x, pos[0].y, cxSource, cySource, hdcMemM1, 0, 0, SRCCOPY) ;
BitBlt (hdc, pos[1].x, pos[1].y, cxSource, cySource, hdcMemM1, 0, 0, SRCCOPY) ;
0609デフォルトの名無しさん
2006/03/30(木) 19:39:01malloc/freeだとフラグメント解消できないから、
プロはHeapCreate(0,0,0)してHeapAllocを使う。
0610デフォルトの名無しさん
2006/03/30(木) 19:44:17どうしよ・・・・
0611デフォルトの名無しさん
2006/03/30(木) 23:59:01次にSocketを使用して、SMTPメール送信するプログラムの実装をして見ようと
思うのですが、大まかな流れは
1 Socketの初期化
2 TCP/IPを設定
3 SMTP設定
4 Socketを閉じる
こんな感じでいいでしょうか?
0612デフォルトの名無しさん
2006/03/31(金) 06:21:070613デフォルトの名無しさん
2006/03/31(金) 06:33:09まずはプロとコルだな
プロをマスターした後にコルを習得せよ
0614デフォルトの名無しさん
2006/03/31(金) 08:38:240615デフォルトの名無しさん
2006/03/31(金) 10:25:30後始末をすればリークしない
0616デフォルトの名無しさん
2006/03/31(金) 12:32:28みなさんどうもです
PCからカキコ出来ないので、携帯からです
実は、TC/IPプロトコル部分をrawSocketを用いて実装したくて
WIN32APIをC++でコーディングした方がいいかと思い、このスレで質問させて
もらいましたが、ドットネットでもrawSocketの関数は用意してあるのでしょうか?
0617デフォルトの名無しさん
2006/03/31(金) 12:47:40http://www.kt.rim.or.jp/~ksk/wskfaq-ja/advanced.html#rawsocket
0618デフォルトの名無しさん
2006/03/31(金) 13:26:05Cygwin使えばUnix用のsmtpsendのソースがそのまま使えるよ。
#WinSockは色々互換性がないので注意。
いずれにしても、後はネットワークプログラミングスレにでも。
0619デフォルトの名無しさん
2006/03/31(金) 14:25:38そんなに難むほど難しいことかな?
0620デフォルトの名無しさん
2006/03/31(金) 17:01:040621デフォルトの名無しさん
2006/03/31(金) 17:17:34______________
| |
| ◎ △ |
|____________|
こんな感じで、メニューで開いた画像を左にとかやりたいんだけども
0622デフォルトの名無しさん
2006/03/31(金) 17:20:25全然
620が「何処がどうムズイと思うのか」が知りたい
0623デフォルトの名無しさん
2006/03/31(金) 17:21:18描画エリア内に収まるように縮小したりしたいんだけど
画像を扱うTIPがあまりなくて(´・ω・`)
0624デフォルトの名無しさん
2006/03/31(金) 17:22:12座標を指定すればいいじゃん
0625デフォルトの名無しさん
2006/03/31(金) 17:23:11つ StretchBlt
0626デフォルトの名無しさん
2006/03/31(金) 17:27:10サイトに書いてある通り、bcc32 -W test.c としてコンパイルしても
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
test.c:
警告 W8057 test.c 9: パラメータ 'hInstance' は一度も使用されない(関数 WinMain )
警告 W8057 test.c 9: パラメータ 'hPrevInstance' は一度も使用されない(関数 WinMain )
警告 W8057 test.c 9: パラメータ 'lpCmdLine' は一度も使用されない(関数 WinMain )
警告 W8057 test.c 9: パラメータ 'nCmdShow' は一度も使用されない(関数 WinMain )
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
Error: 外部シンボル '_main' が未解決(C:\BORLAND\BCC55\LIB\C0X32.OBJ が参照)
このようなエラーが出てしまいます。どこが問題なのか指摘して頂きたいのですが、お願いします。
0627デフォルトの名無しさん
2006/03/31(金) 17:27:44好きなように描け。
>>623
好きなように縮小しろ。
>>620
もしや、POP before SMTPとかSMTP認証とかと勘違いしていないか?
SMTP自体はCHAT作るより簡単だぞ。
0628デフォルトの名無しさん
2006/03/31(金) 17:33:31メール関係で一番面倒なのは、メールメッセージそのものを作るところだよ。
0629デフォルトの名無しさん
2006/03/31(金) 17:43:31ありが�d
ちょいと色々いじくってるけどまだ上手くいってない
>>627
それが出来ないから聞いてるんだよ('A`;
あと読み込んだ画像データを
ボタン押したらCUIプログラムに送って実行させるみたいな風にするにはどうしたらいいかな
それが一番やりたい
0630デフォルトの名無しさん
2006/03/31(金) 17:47:50つ WinExec
0631デフォルトの名無しさん
2006/03/31(金) 18:11:25-Wがあるから大丈夫なはずだけど何でだろう。
間のスペースが全角なのは、ここに書くときにそうしたと思うし。
0632デフォルトの名無しさん
2006/03/31(金) 18:15:09位置変えはBitBltの第2、第3引数に普通にあるような。
>>629
CreateProcess。
0633デフォルトの名無しさん
2006/03/31(金) 18:17:33そうですか・・・もう少し検索して方法を探してみる事にします。レス有難う御座います。
0634デフォルトの名無しさん
2006/03/31(金) 18:27:070635デフォルトの名無しさん
2006/03/31(金) 18:37:13PlatformSDKをいんぽしていないとか
もしそうなら抜くぞ
0636デフォルトの名無しさん
2006/03/31(金) 18:45:45両方試してみましたができませんでした。
>>635
サンプルコードですので、間違ってはいないと思うのですが・・・。
SDKをもう一度インストールし直してみます。
ダメであれば諦めます。有難う御座いました。
0637デフォルトの名無しさん
2006/03/31(金) 18:48:20というか真面目に学ぼうとするなら今更BCCなんて使うなや
0638デフォルトの名無しさん
2006/03/31(金) 19:00:50VC++2005ExpressEditionが無償で配布されてるんだからそっち使った方がいい
俺もBCCから乗り換えた
0639デフォルトの名無しさん
2006/03/31(金) 19:37:160640デフォルトの名無しさん
2006/03/31(金) 19:41:560641デフォルトの名無しさん
2006/03/31(金) 19:55:01VS2005でもエラーがなく通るのはPetzoldのサンプルコードぐらいか。
0642デフォルトの名無しさん
2006/03/31(金) 20:13:430643デフォルトの名無しさん
2006/03/31(金) 20:32:590644デフォルトの名無しさん
2006/03/31(金) 20:34:13開く・貼り付け・ヴァージョン情報あたりで十分なんだけど
0645デフォルトの名無しさん
2006/03/31(金) 20:51:08のフォルダをbcc32.exeと同じ場所に置けばいいのですよね?
0646デフォルトの名無しさん
2006/03/31(金) 20:58:22引数がLPCTSTRになってる奴にwchar_t*って渡せたっけ?と思って
MSDNライブラリにあった型定義一覧を探してたが見つからない・・・
誰かどこにあったか知らない?
0647デフォルトの名無しさん
2006/03/31(金) 21:10:55最低限のSDKはBCCに付いてくる。
0648デフォルトの名無しさん
2006/03/31(金) 21:11:48LPCTSTRで検索したら普通に出てきたぞ
#ifdef UNICODE
typedef LPCWSTR LPCTSTR;
#else
typedef LPCSTR LPCTSTR;
#endif
typedef CONST WCHAR *LPCWSTR;
typedef __nullterminated CONST CHAR *LPCSTR;
なのでLPCTSTRにwchar_t*は渡せない
const wchar_t*なら渡せる
0649デフォルトの名無しさん
2006/03/31(金) 21:15:30逆
非constなポインタ引数にはconstポインタは渡せない。
0650デフォルトの名無しさん
2006/03/31(金) 21:19:27自分には無理な様なので脳内コンパイルで楽しみます。ご迷惑お掛けしました。
助言して下さった方々有難う御座いました!諦めます。
0651デフォルトの名無しさん
2006/03/31(金) 21:21:460652デフォルトの名無しさん
2006/03/31(金) 21:33:37ぬォォォォォォォォォぉぉぉできたーーーーーーーーーー!!!!
出来ましたよ!警告とエラーと言う意味深な発言をしてくれたので、まさかと思い実行しましたら
ウインドウが表示されました。有難う御座います。
コンパイル結果が警告が出たので先入観から無理と判断してしまってました・・・。
警告が出て違和感ありますが、出来てよかったです。
0653648
2006/03/31(金) 21:36:44漏れも>>649も寝ぼけてたようだww
(>>649の二行目は正しい)
LPCTSTRにはwchar_t*もcons wchar_t*も渡せる。
誤解のないように他のも言っておくと、
当然const LPCWSTR(=const wchar_t* const)やconst LPWSTR(wchar_t* const)も渡せる
(シグネチャは同じだしね)
0654デフォルトの名無しさん
2006/03/31(金) 21:37:270655デフォルトの名無しさん
2006/03/31(金) 21:40:34Warning も全部解決しる
メッセージをよーーーーーく読めばどうすれば分かるはず
0656デフォルトの名無しさん
2006/03/31(金) 22:08:24int WINAPI WinMain(HINSTANCE, HINSTANCE, char*, int)
0657デフォルトの名無しさん
2006/03/31(金) 22:18:36猫でも分かる
0658デフォルトの名無しさん
2006/03/31(金) 22:27:300659デフォルトの名無しさん
2006/03/31(金) 22:28:56int WINAPI WinMain(・・・){
・・・
return msg.wParam;
}
とすると警告が出るのですが、return (int)msg.wParam; にしたほうがいいんですか?
0660デフォルトの名無しさん
2006/03/31(金) 22:31:050661デフォルトの名無しさん
2006/03/31(金) 22:34:00ありがとうございます。周りに合わせてキャストせずに放っておくことにします。
0662デフォルトの名無しさん
2006/03/31(金) 22:34:330663デフォルトの名無しさん
2006/03/31(金) 22:35:16どう試してみても消える事が無いです。基本から始めていきいつか警告の意味を理解してみます。
WinAPIは楽しいですね。
0664デフォルトの名無しさん
2006/03/31(金) 22:37:060665デフォルトの名無しさん
2006/03/31(金) 22:43:16誰もそんなこと聞いてねーよボケ
だいたいC++かどうかもワカンネーだろ
0666デフォルトの名無しさん
2006/03/31(金) 22:57:320667デフォルトの名無しさん
2006/03/31(金) 23:19:59ひたすらSuspendThread
0668デフォルトの名無しさん
2006/03/32(土) 00:34:25カーネルレベルで共有セマフォをねじる。
または、それが発生するような処理を「中途半端」に実行する。
スレッドレベルならば、リソースは共有されているわけで、ひたすら suspend すりゃいいと言うのが妥当。
0669デフォルトの名無しさん
2006/03/32(土) 00:59:370670デフォルトの名無しさん
2006/03/32(土) 01:28:18それだけは、やるな。
止めたいスレッド以外、つまりほかのプロセスまで止まる。
システムがCPUパワーをどのように割り振ってるか調べればわかるはず。
0671デフォルトの名無しさん
2006/03/32(土) 04:41:34調べるからAdvanced Windowsくれ。
0672デフォルトの名無しさん
2006/03/32(土) 08:43:170673デフォルトの名無しさん
2006/03/32(土) 09:27:42つstd::fill_n
C++だけど。
0674デフォルトの名無しさん
2006/03/32(土) 09:28:55他のプロセスを止めてはいけないという前提条件は定義されていない。
0675デフォルトの名無しさん
2006/03/32(土) 09:45:43並列実行されるけどそれは、「制御が移らない」という条件を満たすといえるの?
0676デフォルトの名無しさん
2006/03/32(土) 09:51:37それを追加するならプロセスの使用するプロセッサをマスクすればいいだけ。
0677デフォルトの名無しさん
2006/03/32(土) 09:56:58マルチプロセッサを考慮しないのはとっても危険だと思うが。
0678デフォルトの名無しさん
2006/03/32(土) 10:08:27解決したら逆にグダグダ文句を言い続ける。
相手に勝利するためのだけの議論のふっかけ乙。
0679デフォルトの名無しさん
2006/03/32(土) 13:49:53壁紙を変更する方法(どのファイルを書き換えればいいか?)と、
起動時にプログラムを自動実行させる方法を教えてください。お願いします。
0680デフォルトの名無しさん
2006/03/32(土) 13:49:55わかってるなら、いらないだろ。Advanced Windows。俺のは初版だから古いぞ。
0681デフォルトの名無しさん
2006/03/32(土) 14:15:38ファイル名を決め打ちで持っておいて、任意の壁紙ファイルをその名前にコピーするのが簡単。
#IrfanViewやブラウザがやってる方法もこれ。
その決め打ちのファイルを設定するのはレジストリだが、その位はユーザに選ばせてもいいかも。
自動実行は、スタートアップにショートカットを入れてしまうのがいちばん簡単かな。
これも、場合によってはユーザができることだし。
0682デフォルトの名無しさん
2006/03/32(土) 15:08:44[HKEY_CURRENT_USER\Control Panel\Desktop]
"Wallpaper"="C:\\WINDOWS\\Walking_Home_by_x_horizon.bmp"
"WallpaperStyle"="0"
この辺。
0683デフォルトの名無しさん
2006/03/32(土) 15:19:55APIで用意されているのに使わない理由が何かあるの?
0684デフォルトの名無しさん
2006/03/32(土) 15:28:49おお、なるほど。これなら、出来そうです。サンクス!
>>683
APIであったんですか。調べてみます、サンクス。
0685デフォルトの名無しさん
2006/03/32(土) 16:23:15スライダの背景色が描画されてしまいXPだと綺麗に見えません。
そこでリバーをサブクラス化して、WM_CTLCOLORSTATICで
SetBkMode((HDC)wParam, TRANSPARENT);
return (LRESULT)GetStockObject(NULL_BRUSH);
としてみたのですが、背景色が透明になるどころか
なぜか黒くなってしまいました。
原因や解決策をご存知の方はいらっしゃいませんか?
0686デフォルトの名無しさん
2006/03/32(土) 20:00:49APIであると言われて調べるのなら
なぜはじめに調べてみないんだろうか…
0687デフォルトの名無しさん
2006/03/32(土) 20:09:56俺の場合
0688デフォルトの名無しさん
2006/03/32(土) 21:07:32なんだっけ?
0689デフォルトの名無しさん
2006/03/32(土) 21:14:19ネタ振りだな?
0690デフォルトの名無しさん
2006/03/32(土) 21:25:040691デフォルトの名無しさん
2006/03/32(土) 21:39:19MSDNを調べた結果、GetTextFace()だと思ったのですが、自プロセスのEditコントロールから取得すると何のフォントが使われていても"System"という文字列しか返ってこないようなのですが・・・?
0692デフォルトの名無しさん
2006/03/32(土) 22:56:120693デフォルトの名無しさん
2006/03/32(土) 23:33:37CharNext()は別に下らなくないだろ
0694デフォルトの名無しさん
2006/04/02(日) 01:42:300695デフォルトの名無しさん
2006/04/02(日) 02:00:58これって勝手にスクロールバーとか出てこないの?
0696Win32API
2006/04/02(日) 03:13:17甘えんなヴォケ
0697デフォルトの名無しさん
2006/04/02(日) 08:23:01検索用キーワード
CreateWindow WS_VSCROLL WM_VSCROLL
0698デフォルトの名無しさん
2006/04/02(日) 09:13:15おれもあってもイイと思うがない。
high level の bmp control とか image control。audio control か sound control か
wave control とか。edit control, rich edit control があるもんな。
画像を扱う third party 保護といえば保護なんかな。
win98 時代にも jpeg, tiff などの filter も持っているのに公開していない。
自前で decode しないといけなかった。
API の説明も分かり難いものがある。使う側がテストしながら使うはめになる。
説明書くのを手抜きしたいなら、ソースを公開すればいいと思うんだが。
0699デフォルトの名無しさん
2006/04/02(日) 09:40:48( ゚Д゚)・・・
(゚Д゚)・・・
0700デフォルトの名無しさん
2006/04/02(日) 11:03:020701デフォルトの名無しさん
2006/04/02(日) 12:05:560702デフォルトの名無しさん
2006/04/02(日) 12:11:58DllMain内でOutputDebugStringでも使ってデバッグ出力確認すればいいじゃない
0703デフォルトの名無しさん
2006/04/02(日) 13:45:40この自作コントロール、親がダイアログの場合は何も問題が無いのですが、
親が普通のウィンドウの場合、再描画を行ってくれなくて困っています(例えばタスク切り替え時など)。
手直しする方法を御存知のかた、教えて頂けないでしょうか。
一応、親ウィンドウのWM_PAINTにて、(子の)InvalidateRect等を呼んでみたりしましが、駄目でした。
0704デフォルトの名無しさん
2006/04/02(日) 14:11:20親ウィンドウにWS_CLIPCHILDRENが付いてないとか言うなよ。
0705デフォルトの名無しさん
2006/04/02(日) 14:42:37はい、それは大丈夫です。
具体的にはWS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN | WS_CLIPSIBLINGS
でやってます。逆に、これを外しても駄目みたいです。
補足で、自作コントロールの方では、一応極力DefWindowProcを各メッセージで呼んでます。
0706デフォルトの名無しさん
2006/04/02(日) 15:20:590707デフォルトの名無しさん
2006/04/02(日) 15:41:20お付き合いどうもです。
例えば自作エディットコントロールなんですが、これを枠だけWM_NCPAINTで自前描画しています。
他の文字や反転処理、プロンプト描画などは全て、DefWindowProcに任せています。
そして一応成功しています。
問題なのはその自作エディットコントロールを一度ShowWindowで非表示>表示したり、
あるいはアプリをAlt+Tabでタスク切り替えしたときでして、この時コントロールの再描画を一切行ってくれません。
(ただこの場合も、そのコントロールにフォーカスが行くと再描画してくれます。)
0708デフォルトの名無しさん
2006/04/02(日) 16:06:510709デフォルトの名無しさん
2006/04/02(日) 16:10:03BCCFormで作ったんですが、上手くいきません。
EXSTYLE WS_EX_DLGMODALFRAME
STYLE WS_POPUP | WS_THICKFRAME | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX | DS_SETFONT
スタイルがおかしいのでしょうか?
0710デフォルトの名無しさん
2006/04/02(日) 16:11:13NMCUSTOMDRAWのrcに正しい値が入ってないのは仕様なの?
x座標はあってたけど、y座標の値がでたらめだった。
LVM_GETSUBITEMRECTで解決したが、半日ほど悩んだ。
0711デフォルトの名無しさん
2006/04/02(日) 17:30:48マニュアル通り、GetWindowDC(GetDCEx)です。
どうもこいつは、ウィンドウベースじゃ無理そうだな…
0712デフォルトの名無しさん
2006/04/02(日) 17:59:06事前に察知させる方法ありませんか?
せめてちゃんとリソースを破棄してから終了したいのです。
この仕様はあまりにも理不尽です。
Terminate呼ぶ代わりにWM_CLOSEみたいな
メッセージを投げるとかの対処しかありませんか?
0713デフォルトの名無しさん
2006/04/02(日) 18:02:300714デフォルトの名無しさん
2006/04/02(日) 18:03:22それでリソースの破棄に時間掛けたりあまつさえ無限ループしたりするのか?
馬鹿馬鹿しいイタチごっこだな
0715デフォルトの名無しさん
2006/04/02(日) 18:33:53つーかものすごいバカっぽいな
0716デフォルトの名無しさん
2006/04/02(日) 18:45:140717デフォルトの名無しさん
2006/04/02(日) 18:52:350718デフォルトの名無しさん
2006/04/02(日) 19:57:260719デフォルトの名無しさん
2006/04/02(日) 20:49:13ビープ音を止めるにはどうすればよいでしょうか?
WM_KEYDOWNを捕まえても意味がなかったようです。。
0720デフォルトの名無しさん
2006/04/02(日) 21:28:11OKボタン、Cancelボタン、テキストボックスの3つしかないダイアログボックスがあります。
そして、テキストボックスに http://test.jpg などの文字列を入力。
その後OKボタンを押すとダウンロードが始まる仕組みを作りたいのですが、
このダウンロードのプロセスがわかりません。
APIの関数ひとつで出来るような簡単なものを想像しているのですが、実際のところ
どうすれば実現できるのでしょうか
0721デフォルトの名無しさん
2006/04/02(日) 21:29:530722デフォルトの名無しさん
2006/04/02(日) 21:32:33おぉ!即レスありがとうございます!
さっそくこの情報を元に頑張ってみたいと思います。ありがとうございました。
0723719
2006/04/02(日) 22:29:27WM_CHARを捕まえてVK_RETURNのときだけ
CallWindowProcを呼ばないようにしたら出来ました。
0724デフォルトの名無しさん
2006/04/02(日) 23:17:56小さいときは、クライアント領域内に表示っていうのがうまくいかない
誰かおしえてくれ。。。
0725デフォルトの名無しさん
2006/04/02(日) 23:24:440726デフォルトの名無しさん
2006/04/02(日) 23:27:18そこに指定したデータを開いて
クライアント領域に合わせて画像を拡大縮小させるの
全部がわがんね
そんなことを説明してるサイトのアドを教えてよ
もう、疲れた
0727デフォルトの名無しさん
2006/04/02(日) 23:43:220728デフォルトの名無しさん
2006/04/03(月) 00:26:00それとも何かのAPIがポスト or 送信したものなのか、判別する方法ってありますか?
0729デフォルトの名無しさん
2006/04/03(月) 00:29:550730デフォルトの名無しさん
2006/04/03(月) 00:36:40キーボードからの入力があってWM_KEYUP/DOWNが来てWM_CHARが発行されたのか、
何かのAPIがWM_KEYUP/DOWNを送ってきてWM_CHARが発行されたのか、です。
(もしかしたら直接WM_CHARを送ってきている?)
wParamとかlParamを見るのかもしれませんが、とりあえずGetKeyStateでしのいでいます。
0731デフォルトの名無しさん
2006/04/03(月) 05:07:08クライアント領域の大きさを取得。
ビットマップの大きさを取得。
minマクロあたりで小さいほうを採用
ストレッチブリットを使う。
こんな感じでどうだい?
0732デフォルトの名無しさん
2006/04/03(月) 05:09:53HBITMAP CreateMask(HWND hWnd,HBITMAP Src,COLORREF trans){//マスク作成。透過色は黒になる。
BITMAP bm; HDC hdc,mdc,sdc,rdc; HBITMAP hbmp,hmono,old,old2,old3; COLORREF oldbk;
GetObject(Src,sizeof(BITMAP),&bm);
hdc = GetDC(hWnd);
mdc = CreateCompatibleDC(hdc);
sdc = CreateCompatibleDC(hdc);
rdc = CreateCompatibleDC(hdc);
hbmp = CreateCompatibleBitmap(hdc,bm.bmWidth,bm.bmHeight);
hmono = CreateBitmap(bm.bmWidth,bm.bmHeight,1,1,NULL);
ReleaseDC(hWnd,hdc);
old = (HBITMAP)SelectObject(sdc,Src);
old2 = (HBITMAP)SelectObject(mdc,hmono);
oldbk = SetBkColor(sdc,trans);
BitBlt(mdc,0,0,bm.bmWidth,bm.bmHeight,NULL,0,0,WHITENESS);
BitBlt(mdc,0,0,bm.bmWidth,bm.bmHeight,sdc,0,0,SRCCOPY);
old3 = (HBITMAP)SelectObject(rdc,hbmp);
BitBlt(rdc,0,0,bm.bmWidth,bm.bmHeight,mdc,0,0,SRCCOPY);
SelectObject(sdc,old);
SetBkColor(sdc,oldbk);
SelectObject(mdc,old2);
SelectObject(rdc,old3);
DeleteDC(sdc);
DeleteDC(mdc);
DeleteDC(rdc);
DeleteObject(hmono);
return hbmp;
}
0733732
2006/04/03(月) 05:18:04>>732はとあるビットマップの透過用マスク画像を生成するための関数です。
引数はGetDCするためのウインドウハンドルとマスクのソースとなるHBITMAPそして透過色を指定する数値です。
で、現状の問題はこの関数を使ってできた画像をそのままウインドウにBitBltしてみても期待のようにはならず白になってしまいす。
白になるのは途中でWHITENESSをBltしているからなんですが、その先の処理がうまく意図どおりに動かないようです。
どこか見落としなどの指摘があればぜひお聞かせください。
0734デフォルトの名無しさん
2006/04/03(月) 05:55:57鳥のさえずり聞くなら今のうち。
ピーちゅんちゅん。ピーちゅんちゅん。ピーちゅんちゅん。ピーちゅんちゅん。ピーちゅんちゅん。ピーちゅんちゅん。
ピーちゅんちゅん。ピーちゅんちゅん。ピーちゅんちゅん。ピーちゅんちゅん。ピーちゅんちゅん。ピーちゅんちゅん。
ピーちゅんちゅん。ピーちゅんちゅん。ピーちゅんちゅん。ピーちゅんちゅん。ピーちゅんちゅん。ピーちゅんちゅん。
Orz
0735732
2006/04/03(月) 06:24:26それと質問は一端取り下げます。
また別の機会にでも質問させてもらおうと思います。
それじゃお休みです。
0736デフォルトの名無しさん
2006/04/03(月) 10:21:36マジレスしてやる
そんな糞コードをこねくり回すよりCreateDIBSectionで作ったDIBに
自分でマスク用データ書き込んだ方が比較にならんほどマシ
全部書き直せ
0737デフォルトの名無しさん
2006/04/03(月) 13:59:29GlobalMemoryStatusで取った総容量から空き容量を引いた値は
システムキャッシュで使われている分も含んでしまうので、
それを含まない値を取得したいのです。
0738デフラグさん ◆mRgSYalFkQ
2006/04/03(月) 16:47:44[゚д゚] デフラグカンリョウ
/[_]b
| |
Orz。。。。。。。。。。。。。。。。。。。。いいうえくさずちちちちちちちちちちちちちちちちちちちちちちちちち
ちちちちちちちちちちちちななののもゅゅゅゅゅゅゅゅゅゅゅゅゅゅゅゅゅゅゅゅゅゅゅゅゅゅゅゅゅゅゅゅ
ゅゅゅゅらりんんんんんんんんんんんんんんんんんんんんんんんんんんんんんんんんんんんんピピピピピ
ピピピピピピピピピピピピピーーーーーーーーーーーーーーーーーー今聞誰鳥
0739デフォルトの名無しさん
2006/04/03(月) 17:11:58EnumDisplayDevicesの第2引数で指定したもの+1なのでしょうか?
そうでないならばモニタ番号とディスプレイデバイスの対応を取る方法は無いでしょうか?
0740デフォルトの名無しさん
2006/04/03(月) 17:30:48どういう風にもっていけばいいのでしょうか
ためしにノートパッドの起動だけやってみたのですが
ノートパッドだと、これに文字列がはじめに入力されるような感じで
STARTUPINFO si;
ZeroMemory(&si, sizeof(STARTUPINFO));
si.cb = sizeof(STARTUPINFO);
si.dwFlags = STARTF_USESHOWWINDOW;
si.wShowWindow = /*SW_HIDE*/SW_SHOWNORMAL;
PROCESS_INFORMATION pi;
CreateProcess(NULL, "notepad ", NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
0741デフォルトの名無しさん
2006/04/03(月) 17:42:35> BOOL SetDlgItemText( HWND hDlg, int nIDDlgItem, LPCTSTR lpString );
GetDlgItemText に必要なのがLPTSTR型で
SetDlgItemText に必要なのはLPCTSTR型ですが
GetDlgItemText で取得したものを SetDlgItemText で表示する際
データの変換はどうするのでしょうか?
(LPCTSTR)LPTSTR とか (LPTSTR)LPCTSTR 、あとstrcpy関数も試してみましたが
うまくいきませんでした
0742デフォルトの名無しさん
2006/04/03(月) 17:52:21何がやりたいのかさっぱり言ってることの意味わからん。
> コマンドラインを実行させたい
ここだけに反応すると
cmd.exe /c コマンドライン
を実行すればいい。
>>741
> うまくいきませんでした
では原因わからんわ。
質問するときは何が起こったのか書いてくれ。
0743デフォルトの名無しさん
2006/04/03(月) 18:02:40ほぼ本の通りにやっているのですが、画像が表示されません
何度も本と見比べたのですが、どこが間違っているのかわかりませんでした
#define ID_TIMER 101
LRESULT WINAPI ScreenSaverProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
HDC hdc, hdcMem;
static RECT rc;
HBITMAP hBmp;
BITMAP bmpInfo;
switch(msg){
case WM_CREATE:
SetTimer(hWnd, ID_TIMER, 500, NULL);
GetClientRect(hWnd, &rc);
break;
case WM_TIMER:
if(wParam != ID_TIMER) break;
hdc = GetDC(hWnd);
hBmp = LoadBitmap(hMainInstance, "MY_BITMAP"); // ビットマップリソース
GetObject(hBmp, (int)sizeof(BITMAP), &bmpInfo);
hdcMem = CreateCompatibleDC(hdc);
SelectObject(hdcMem, hBmp);
BitBlt(hdc, 50, 50, bmpInfo.bmWidth, bmpInfo.bmHeight, hdcMem, 0, 0, SRCCOPY);
DeleteObject(hBmp);
DeleteDC(hdcMem);
ReleaseDC(hWnd, hdc);
break;
どこが悪いのか教えて頂けないでしょうか
0744デフォルトの名無しさん
2006/04/03(月) 18:04:190745デフォルトの名無しさん
2006/04/03(月) 19:05:44CreateProcess(NULL, "netsh interface ipv6 install", NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
これで出来ないか?と一週間前に知った関数で知ったかンス
流してほしい海の果てまで
0746デフォルトの名無しさん
2006/04/03(月) 19:15:49おはようございます。
書き直しですか。なるべく泥臭いことはしたくなかったんですが。
少々残念ですが、そのように検討してみます。
0747デフォルトの名無しさん
2006/04/03(月) 20:16:09LPTSTRはTCHAR*のtypedef。
LPCTSTRはconst TCHAR*のtypedef。
だからLPTSTR型のオブジェクト(変数)はLPCTSTR型へ暗黙の内に変換できる。
0748デフォルトの名無しさん
2006/04/03(月) 20:36:13自分へのレスでいいのかな?
どうもです。
ただ、プログラム始めたばかりなので
いまいちどういう関数か分からくて試すのに時間がかかりそうです。
0749デフォルトの名無しさん
2006/04/03(月) 20:37:180750デフォルトの名無しさん
2006/04/03(月) 20:44:220751743
2006/04/03(月) 21:19:56ttp://www.uploda.org/uporg355339.jpg
0752デフォルトの名無しさん
2006/04/03(月) 21:43:160753デフォルトの名無しさん
2006/04/04(火) 03:11:45ウィンドウを作ろうとしてるのですが
一番最後のNULLの部分で警告がでるのですが
(warning C4133: '関数' : 'char [10]' と 'LPCWSTR' の間で型に互換性がありません)
どこをどうすれば良いのかがわからないです。
hWnd = CreateWindow(szClassName,
//タイトルバーにこの名前が表示
L"俺じゃわからんWindowプログラミング",
WS_OVERLAPPEDWINDOW,//ウィンドウの種類
CW_USEDEFAULT,//x座標
CW_USEDEFAULT,//y
CW_USEDEFAULT,//幅
CW_USEDEFAULT,//高さ
NULL,//親ウィンドウのハンドル、親ならNULL
NULL,//メニューハンドル、クラスメニューを使うときはNULL
hInst,//インスタンスハンドル
NULL);
0754デフォルトの名無しさん
2006/04/04(火) 07:02:50_T("俺じゃわからんWindowプログラミング")
Warningは行単位で出るので一番最後のNULLの部分で出ているわけではない。
0755デフォルトの名無しさん
2006/04/04(火) 10:17:00szClassNameの宣言をCHAR(char)ではなく、WCHAR(wchar_t)もしくはTCHARにするべし。
0756753
2006/04/04(火) 10:38:40ありがとうございます
一応TEXT("俺にはわからないwindowsプログラミング")でコンパイルしたのですが
やはり警告がでて、でもビルドは出来ました
ただコンパイル時の警告
(warning C4133: '関数' : 'char [10]' と 'LPCWSTR' の間で型に互換性がありません)
は、なぜ出るのかまだ、自分自身理解不足で、コンパイル時点では出てしまう警告
はビルドが正常に行われたらあまり気にしなくて良いのでしょうか
初心者の質問で申し訳ありません
0757753
2006/04/04(火) 10:45:35ありがとうございます
szClassNameをWCHAR
にしたらコンパイルエラーがなくなりました
ちなみに、文字列を書くときはTEXT()で囲んで書く習慣
つけた方が良いのでしょうか
初心者すぎてすみません
0758デフォルトの名無しさん
2006/04/04(火) 11:31:26文字列はTEXT()で。
変数もTCHAR,PTSTR等を使ったほうがいい。たぶん。
0759デフォルトの名無しさん
2006/04/04(火) 11:52:21つーことで結局臨機応変に対応するしかないわけだが。
0760デフォルトの名無しさん
2006/04/04(火) 12:27:17LPTSTR、LPCTSTR は TCHAR[] で TEXT("hoge")とか_T("hoge")、
LPWSTR、LPCWSTR は WCHAR[] で L"hoge" 、
LPSTR、LPCSTR は CHAR[] で "hoge"、
LPOLESTR、LPCOLESTR は OLECHAR[] で OLESTR("hoge")、
BSTR はちょっと変なの、
と昔から決まってる。
0761デフォルトの名無しさん
2006/04/04(火) 13:29:11Internet ExplorerだとIEXPLORE.EXEのプロセスを殺すとか
0762デフォルトの名無しさん
2006/04/04(火) 13:47:48ただし、強制終了だから不具合起きても知らん。
0763デフォルトの名無しさん
2006/04/04(火) 14:08:27サンクス
関数名で色々ググってみたところこのやり方で大丈夫そうなのでちょっと試してみる
ttp://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200512/05120047.txt
>強制終了だから不具合起きても知らん。
家族に変なもの見られて人生に不具合が起きるよりはマシなのでおk
0764デフォルトの名無しさん
2006/04/04(火) 15:03:56そんな用途ならWin+D or Win+Mで十分じゃ?
0765デフォルトの名無しさん
2006/04/04(火) 15:17:21Windows数年間使ってきたけど今まで知らなかった
せっかくだからTerminateProcessの方も作ってみて
そのあとでキー状態変更APIでも探してそっちのも作ってみる
ありがと
0766デフォルトの名無しさん
2006/04/04(火) 16:21:06ちゃんとやるなら
CreateProcess()で取ってきたpiの中にあるハンドルをゴニョゴニョして
ReadFile()するのが定石
てゆうかかなり昔にやったことなので詳しいことは忘れた後は自分で調べてくれ
(猫のパイプがどうのこうのって所にサンプルがあったような気がする)
ちなみに、結果をnotepadに出す方法はシラン
0767デフォルトの名無しさん
2006/04/04(火) 16:24:37scrnsave.libをちゃんと入れたか?
0768デフォルトの名無しさん
2006/04/04(火) 16:35:41ただのデスクトップだけだと怪しいからこっちの方がいいんジャマイカ?
・適当なテキストファイルを作成
・そのファイルのショートカットを作る
・ショートカットを右クリックしてプロパティを選択
・ショートカットキーという項目に適当なキーを登録、実行時の大きさは最大にしておく
結構無駄な努力だけどね<ボスがきた
0769743
2006/04/04(火) 18:22:52入れました
コンパイル後に、本に書いてあった通りに.exeの部分を.scrに変更すると起動するんですが
画像は表示されないんです
0770デフォルトの名無しさん
2006/04/04(火) 19:41:56ウィンドウって分割できますか?
0771デフォルトの名無しさん
2006/04/04(火) 19:44:42問題は指定された区域ではなく、指定した区域になるということだ。
0772770
2006/04/04(火) 21:01:31ありがとうございます。
小出しすみません。
分割の方法を教えてください。
見えない子ウィンドウにバーをつけようかと試みたのですが、
バーも消えてしまって上手くいきませんでした。
お願いします。
0773デフォルトの名無しさん
2006/04/04(火) 21:12:30exeと同じ起動方法で起動しない、
とか言うオチじゃないだろうな?
0774770
2006/04/04(火) 21:36:04CreateWindow()でSCROLLBARクラスを指定したら、座標は指定できますが
旧式のスクロールバーになってしまうので
xp仕様(?)のスクロールバーにできませんか?
って事です。
0775デフォルトの名無しさん
2006/04/04(火) 22:41:23順にどんな関数を使えばいいですか?
とりあえず関数名だけ羅列してくれれば助かります。
0776デフォルトの名無しさん
2006/04/04(火) 22:55:160777デフォルトの名無しさん
2006/04/04(火) 22:59:250779デフォルトの名無しさん
2006/04/05(水) 01:10:22あるボタンからプルダウンメニューが表示されているウインドウに
ウインドウメッセージを投げると、プルダウンメニュー閉じ、そのウインドウメッセージを処理するようなイメージです。
エクスプローラの表示(一覧/詳細/アイコン/...)ボタンに近いです。
で、以下のように書いてみたのですが、プルダウンメニューは閉じるものの、ボタンは凹んだままで完全ではありません。
HWND hWndMenu = ::FindWindow(_T("#32768"), NULL);
if ( ::IsWindow(hWndMenu) ) ::DestroyWindow(hWndMenu);
あと、プルダウンメニューを表示するボタンはたくさんあり、特定のメニューを閉じるという実現方法は避けたいです。
よい方法があればご教授をお願いします。m(_ _ )m
0780デフォルトの名無しさん
2006/04/05(水) 01:16:00多分rcファイルのリソース名がIDになっているんだな
LoadBitmap()の所の"MY_BITMAP"をMAKEINTRESOURCE(MY_BITMAP)に変えると解決するかも
0781デフォルトの名無しさん
2006/04/05(水) 01:42:42keybd_eventでは駄目なのかのぅ?
0782775
2006/04/05(水) 03:03:51レスありがとうございます。
が、そういうことでなくて、自前でRSTパケだけを送出したいのです。
(1) socket()
(2) setsockopt()
(3) sendto()
だけで送れそうなので試してみるけどダメっぽいんです。
なので、根本的に使う関数とかが間違えてるかなぁと思いまして。。
0783デフォルトの名無しさん
2006/04/05(水) 03:27:110784デフォルトの名無しさん
2006/04/05(水) 03:42:230785デフォルトの名無しさん
2006/04/05(水) 05:05:430786デフォルトの名無しさん
2006/04/05(水) 06:14:250787デフォルトの名無しさん
2006/04/05(水) 09:24:04> 起動はして、マウスを動かすと終了する
回線切って(ry
0788デフォルトの名無しさん
2006/04/05(水) 10:19:330789デフォルトの名無しさん
2006/04/05(水) 10:41:311つ質問させてください。
ディレクトリの削除で
SHFileOperation
を使いたいのですが。
相対パスが使えません。
EX:"..\..\DATA"こんな感じで。
これは、使えないのでしょうか?
もし出来ないとしたとき、APIで相対パスをフルパスに変換するAPIは、あるのでしょうか?
もしわかりましたら教えてください。
0790デフォルトの名無しさん
2006/04/05(水) 10:44:49- \
+ \\
とかって問題?
0791デフォルトの名無しさん
2006/04/05(水) 10:45:18"..\\..\\DATA"じゃないのか?と適当な事を言ってみる
0792デフォルトの名無しさん
2006/04/05(水) 10:56:20いや、VBを使ってるんですよ。
フルパスでは、成功しています。
0793デフォルトの名無しさん
2006/04/05(水) 11:19:48API でいいなら
GetCurrentDirectory して PathAppend して PathCanonicalize かな。
0794デフォルトの名無しさん
2006/04/05(水) 11:20:190795デフォルトの名無しさん
2006/04/05(水) 11:20:54ありがとうございます。
やってみます。
0796デフォルトの名無しさん
2006/04/05(水) 11:34:400797デフォルトの名無しさん
2006/04/05(水) 11:51:54扱うってのは危険じゃないか?
カレントディレクトリ=実行ファイルのあるディレクトリとか
思ってないか?
0798デフォルトの名無しさん
2006/04/05(水) 11:55:41vbつかってるのでカレントディレクトリは、app.pathでとります。
0799デフォルトの名無しさん
2006/04/05(水) 12:06:05それカレントじゃない。
0800デフォルトの名無しさん
2006/04/05(水) 12:28:33EXEを実行したときの始めに
app.pathでとればカレントになると思うが違ってますか?
0801デフォルトの名無しさん
2006/04/05(水) 12:35:12「ファイルを開く」で使われるコモンダイアログはOpenFileName()ですが、
似たような感じで「フォルダ」のパスを取得するAPIはなんと言うやつでしょうか?
0802デフォルトの名無しさん
2006/04/05(水) 12:36:56SHBrowseForFolder()の事か?
この腐女子め!
0803デフォルトの名無しさん
2006/04/05(水) 12:44:21ショートカットの作業フォルダ等で、
起動時のカレントが変更されたりする可能性はあるだろ。
0804デフォルトの名無しさん
2006/04/05(水) 12:57:01そういうことか
ご指摘どうもありがとう。
EXEのパスがほしかっただけなので。
皆さんいろいろありがとうございました。
0805デフォルトの名無しさん
2006/04/05(水) 14:06:24表示デキター、サンクソ
しかし寒いギャグは頂けないな
0806デフォルトの名無しさん
2006/04/05(水) 17:30:24検索しても出てこなかったので
0807デフォルトの名無しさん
2006/04/05(水) 17:38:20ttp://www.terra.dti.ne.jp/~vivas/delphi/mixerapi.html
0808デフォルトの名無しさん
2006/04/05(水) 17:44:550809デフォルトの名無しさん
2006/04/05(水) 22:33:32Win32API@VC++2005でMP3プレイヤーを作ろうとしています。
でも、どうにも再生できないので、知恵を拝借願いたく。
mciSendStringを利用し、以下のようなプログラムを書きました。
if(!mciSendString("open \"test.mp3\" type mpegvideo alias MP3", NULL, 0, NULL)){ // ファイルを開く
mciSendString("play MP3 notify", NULL, 0, hWnd); // MP3の再生
}
とりあえずDebugでビルドしてるので、プロジェクトのDebugフォルダに
test.mp3を置いてビルドしてるんですが、
ifの中にブレイクポイント仕掛けてもそこに到達すらしてないようです。
なんとかMP3を再生する方法を教えてください。お願いします。
0810デフォルトの名無しさん
2006/04/05(水) 22:47:50まずはtest.mp3をフルパスで指定してみたら?
0811デフォルトの名無しさん
2006/04/05(水) 22:50:19まず問題が起きたら原因を探れ。原因が分からないと対処できないからな。
で、これを踏まえて
ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_mcisendstring.asp
を見ると
>Returns zero if successful or an error otherwise.
>To retrieve a text description of mciSendString return values, pass the return value to the mciGetErrorString function.
と書いてある。
何をすればいいか分かるな?
0812デフォルトの名無しさん
2006/04/05(水) 22:54:57環境が分らんからアレだがVCはデバッグ時のカレントディレクトリがDebugフォルダではない。
0813デフォルトの名無しさん
2006/04/05(水) 23:38:57せっかくだからIGraphBuilder使おうよ
0814デフォルトの名無しさん
2006/04/06(木) 00:15:28ちなみにtype mpegvideoがなくても拡張子で判断してくれたりする。
0815デフォルトの名無しさん
2006/04/06(木) 06:40:580817デフォルトの名無しさん
2006/04/06(木) 23:25:34ひととおり動作しました。
で、IEではなく、エクスプローラで動かしたところIWebBrowser.Documentは
IHTMLDocument2をもたないようです。
このときはどのようなインターフェースをもつオブジェクトが入ってきますか?
または調べる方法、ドキュメントはないですか?
0818779
2006/04/07(金) 00:50:15>788さん
試してみたところ、どちらの方法でも大丈夫そうです。
WM_CANCELMODEを使うのが本来の方法みたいですね。
どうもありがとうございました。m(_ _ )m
0819デフォルトの名無しさん
2006/04/07(金) 06:42:060820デフォルトの名無しさん
2006/04/07(金) 07:01:05ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/ifaces/interfaces.asp
0821デフォルトの名無しさん
2006/04/07(金) 14:57:15ラベル上ならちゃんと表示されるのですが…
0822デフォルトの名無しさん
2006/04/07(金) 17:22:13特定拡張子のファイルにあらかじめアプリケーションを関連付けておいて、
ファイルをダブルクリックする事でアプリケーションを起動する場合、
呼び出されるアプリケーション側ではファイル名をどのように取得すれば
良いのでしょうか?
0823デフォルトの名無しさん
2006/04/07(金) 17:29:33コマンドライン引数
(w)WinMainの3番目の引数や(w)mainならargc。
WinAPIの関数を使いたければGetCommandLine。
その際にはPathGetArgsが使えるかもしれない。
0824デフォルトの名無しさん
2006/04/07(金) 17:42:45WM_PAINTメッセージをターゲットのアプリケーションウインドウに送っているのですが、
全く何も取得できません。
PowerToysのAlt+Tab Replace等では、ウインドウの画像を取得して表示していますが、
どうするとこのように取得できるのでしょうか。
どうぞ宜しくお願いします。
0825デフォルトの名無しさん
2006/04/07(金) 17:51:107c800000にkernel.dllが配置されるんだけど、
/LARGEADDRESSAWAREは2GB以上のメモリ空間を使えるというだけで
連続したのは無理ってことですか?
0826822
2006/04/07(金) 18:00:37取得できました、マリガトウゴザイマス
0827デフォルトの名無しさん
2006/04/07(金) 18:24:21GDIオブジェクトはプロセス跨げなかったと思う。
あとWM_PAINTはシステムが送るメッセージなので、ユーザーが勝手に送ってはダメ。
フックで目的のプロセスに忍び込んで、WM_PRINT(WM_PAINTじゃないよ)送ればいいんじゃない?
0828デフォルトの名無しさん
2006/04/07(金) 18:31:22一応訊くけどWindowsのバージョンは?
0829デフォルトの名無しさん
2006/04/07(金) 19:14:39この話だな。
0831デフォルトの名無しさん
2006/04/07(金) 21:57:26重要 : /3GB スイッチは、次のオペレーティング システムでのみ使用してください。
.Microsoft Windows Server 2003 Datacenter Edition
.Microsoft Windows Server 2003 Enterprise Edition
.Microsoft Windows 2000 Advanced Server
.Microsoft Windows 2000 Datacenter Server
.Microsoft Windows NT 4.0 Enterprise Server
0832デフォルトの名無しさん
2006/04/07(金) 22:29:39死ぬほど強引な手法だが。
ttp://slashdot.jp/comments.pl?sid=147813&cid=470365
0833デフォルトの名無しさん
2006/04/08(土) 00:04:21その情報は古い。
0834デフォルトの名無しさん
2006/04/08(土) 00:06:470835デフォルトの名無しさん
2006/04/08(土) 03:11:53(例えば、http://www.google.co.jpを開いていたとすれば、TABキーを押して「Google 検索」に
フォーカスを当て、Enterを押して検索といったこと)をアプリケーション側から自動で行いたくて、
HWND ie = FindWindow("IEFrame", 0);
SendMessage(ie, WM_KEYDOWN, VK_TAB, 0);
SendMessage(ie, WM_KEYDOWN, VK_RETURN, 0);
というようなコードを書いたのですが、うまく動作しませんでした。
何か良い方法はありませんでしょうか?
0836デフォルトの名無しさん
2006/04/08(土) 03:53:30SendMessageではなく、PostMessageを使う。
0837デフォルトの名無しさん
2006/04/08(土) 04:49:38SendInputを使う。
0838デフォルトの名無しさん
2006/04/08(土) 05:26:18ありがとうございました!
0839デフォルトの名無しさん
2006/04/08(土) 07:16:280840デフォルトの名無しさん
2006/04/08(土) 07:53:51Header_GetItemCount(ListView_GetHeader(hList));
はどうだろうか。
0841デフォルトの名無しさん
2006/04/08(土) 11:10:14WIN32APIでそれを実現する手段ありますでしょうか?
出来ればクッキーを渡したり、ポストをしたいのですが。
0842デフォルトの名無しさん
2006/04/08(土) 11:12:420843デフォルトの名無しさん
2006/04/08(土) 11:41:11最後のパスワードの入力などはブラウザに任せたいと思っているのですが・・・。
0844デフォルトの名無しさん
2006/04/08(土) 12:31:17CreateProcess辺りじゃないかと
0845デフォルトの名無しさん
2006/04/08(土) 13:21:25SelectObjectが失敗する状況ってどんな感じですか?
LoadImageでよみこんだやつで、GetObjectでの情報取得は成功していて読み込み失敗ではないとおもいます。
SelectするHDCもGetDCでウインドウのDCを取得後CreateCompatibleDCしています。
なにか、心当たりありませんか?
0846デフォルトの名無しさん
2006/04/08(土) 13:43:590847デフォルトの名無しさん
2006/04/08(土) 13:59:16レスThx。
一度に2つ以上のBitmapをセレクトできないよー。
って感じですか??(エキサイト翻訳使ったんですけどね・・・。
関連付けにSelectObject使わない方法は無いし。
Sleepいれろとかそういう意味ではないと思うんだけど・・・。
あ!それとも、2つのDCにひとつのBitmapをSelectできないよー。ってことですかね。
そういえば後者には心当たりが。。。
ちょっといじってみます。
0848847
2006/04/08(土) 14:06:03うーん。こんな仕様だとは思わなかった。
それはそれとして、助かりました。Thx!!
0849デフォルトの名無しさん
2006/04/08(土) 23:03:02どんなメッセージがいってるんでしょうか?
spy++でツールバーみてもそれらしいのが見当たらないんですが
0850デフォルトの名無しさん
2006/04/08(土) 23:04:260851デフォルトの名無しさん
2006/04/08(土) 23:13:22それでも間違ってるかもしれないけど
0852デフォルトの名無しさん
2006/04/08(土) 23:18:260853デフォルトの名無しさん
2006/04/09(日) 00:41:14ウィンドウ最小化とのコンボでちょっと上手くやってみたい
0854デフォルトの名無しさん
2006/04/09(日) 03:47:05ShowWindow(SW_HIDE)でいいんじゃない?
0855デフォルトの名無しさん
2006/04/09(日) 10:50:16ウィンドウハンドルはリストで保持しておいて後で戻せば大丈夫そうだね
0856デフォルトの名無しさん
2006/04/09(日) 11:46:43プロセスIDや実行ファイル名が分かっていて、そこからウィンドウハンドルを出すにはどうすればいい?
EnumWindows()とかEnumThreadWindows()、GetWindowThreadProcessId()辺りを探してみたけどそれぞれ使う引数がバラバラでわけわかめ
ウィンドウハンドル取得にはスレッドIDが必要だし(EnumThreadWindows())、
スレッドID取得するにはウィンドウハンドルが必要(GetWindowThreadProcessId())
0857デフォルトの名無しさん
2006/04/09(日) 11:57:330858デフォルトの名無しさん
2006/04/09(日) 12:43:55if((hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0))==INVALID_HANDLE_VALUE)
return;
//プロセス情報格納構造体初期化
PROCESSENTRY32 pe;
pe.dwSize = sizeof(pe);
//プロセスリストの最初のポインタを取得し、ループごとに次のアイテムに移動
for(BOOL bResult = Process32First(hSnap, &pe); bResult; bResult = Process32Next(hSnap, &pe))
count++;
CloseHandle(hSnap);
一応検索してみたけど無かったから自分の使ってる走査を弄ってみた
ちゃんとできるかどうかは分からない
0859デフォルトの名無しさん
2006/04/09(日) 12:46:58Googleに聞け。
0860デフォルトの名無しさん
2006/04/09(日) 12:54:43小一時間ほどお聞きした後の質問だから許して
0861デフォルトの名無しさん
2006/04/09(日) 13:05:59だが断る
0862デフォルトの名無しさん
2006/04/09(日) 13:49:03許さん
NHK杯の記録係は許さん
0863デフォルトの名無しさん
2006/04/09(日) 14:19:24できました。ありがとうございました。
0864デフォルトの名無しさん
2006/04/09(日) 17:22:20200*200の24ビットカラーBMP(ペイントで作成)を表示することができません。
SetDIBitsToDeviceを使ってやってみようとしているのですが、
表示させようとしているエリアが真っ黒になります。
真っ黒になるということはどういうミスが考えられるでしょうか?
アドバイスお願いします。
0865デフォルトの名無しさん
2006/04/09(日) 17:30:08いろいろありすぎて書ききれない。
0866デフォルトの名無しさん
2006/04/09(日) 17:34:19動かないサンプルを参考にしてもしょうがないだろ
0867デフォルトの名無しさん
2006/04/09(日) 17:58:38EnumWindowsで全てのウィンドウハンドルを列挙することができる。
それぞれをGetWindowThreadProcessIdに渡して得られたIDと
自分が知っているIDとが一致するウィンドウだけを記録しておけば、いいのでは?
もっと単純な方法を俺は知らない。
0868デフォルトの名無しさん
2006/04/09(日) 18:17:04取り方ありますか?
ウインドウタイトルは無いようなんですが。
0869デフォルトの名無しさん
2006/04/09(日) 18:19:47ウィンドウハンドルを取得するのにスレッドIDが必要なわけでも、
スレッドIDを取得するのにウィンドウハンドルが必要なわけでもない。
ウィンドウハンドルもスレッドIDも取得する方法は沢山ある。
単にそれらが、ウィンドウハンドルからスレッドIDを取得するAPIと、
スレッドIDからウィンドウハンドルを取得するAPIなだけ。
0870デフォルトの名無しさん
2006/04/09(日) 18:28:070871デフォルトの名無しさん
2006/04/09(日) 19:05:561.COLORONCOLOR などのモードの設定がない
2.bmp_info が正しくない
3.bitmap データが真っ黒
StretchDIBits() などでも描けるが、心配なら前もって hdc を FillRect() で
背景色、例えば白で塗りつぶしておく。
左上座標、画面の縦横、絵の縦横は間違ってないという前提。
猫のどの章を見ているか言えばもっと話が早いかも。粂井さんの palette の設定
のとこは間違ってたと思うが、直っているかな。今回 BPP24で関係ないが。
0872デフォルトの名無しさん
2006/04/09(日) 19:49:28説明が足らなくてすみませぬ。
>>866
その通りだねってことで別のサンプルで試してみたら出来ました。
ありがとん。
>>871
170章見てて出来ず、172章でやってみたら出来ました。
(ただし、24ビットカラーなら出来るけれども、他のだとパレット設定が失敗してしまいますね。
まだ直ってないのかもしれませんね。)
ちゃんと原因を理解していないので、挙げてくれたのを検証してみます。
御三方、レスありがとうでした。
0873デフォルトの名無しさん
2006/04/09(日) 20:30:06実行時に上手く動作せず、困っています。
どんな状態かというとビルド自体は特に問題なく出来ているのですが、
関数をポインタ経由で呼び出した後に戻ってくる値がおかしいといった感じです。
関係のありそうな部分を適当に抜き出してみるとこんな感じに書いてあります。
if((hInstDLL=LoadLibrary("Advapi32.dll"))==NULL)
MessageBox(NULL, "「Advapi32.dll」のロードに失敗しました。", "エラー", MB_OK);
typedef LONG (APIENTRY *TFUNC)(HKEY,LPCSTR,DWORD,REGSAM,PHKEY);
TFUNC DllFunction;
DllFunction=(TFUNC)GetProcAddress(hInstDLL,"RegOpenKeyExA");
if(DllFunction==NULL)
MessageBox(NULL, "関数のアドレスの取得に失敗しました。", "エラー", MB_OK);
int ref = DllFunction(hKey,pSubKey,ulOptions,samDesired,phkResult);
実際のソースでは RegCloseKey, FreeLibrary とかはちゃんとしています。
実行したときは戻り値は「ERROR_SUCCESS」、
だけれども「phkResult」の値はNULLではないものの不正な値になっています。
MessageBoxのエラーは特に表示されていません。
どこに問題があるのか、わかる方がいたらお教えいただけませんでしょうか?
よろしくお願いします、長文失礼しました。
0874873
2006/04/09(日) 20:35:59既存のアプリケーション(バイナリの)動作を替えたかったからです。
0875デフォルトの名無しさん
2006/04/09(日) 21:17:190877デフォルトの名無しさん
2006/04/10(月) 00:14:58不正な値とは?
どうやって判断したの?
0878873
2006/04/10(月) 00:30:58sprintf(test, "%X,%s,%X,%X,%X",hKey,pSubKey,ulOptions,samDesired,*phkResult);
と言うような表示をしてみた時に実行する前には
「80000001,Software\test\test,0,F003F,CCCCCCCC」
実行した後には「0xD8」となっていたからです。
「80000001,Software\test\test,0,F003F,D8」
ハンドルでこの値はおかしいのでないかなと思ったからです。
0879デフォルトの名無しさん
2006/04/10(月) 00:50:12じゃあ、どんな値なら正しいのさ?
0881デフォルトの名無しさん
2006/04/10(月) 01:04:560882856
2006/04/10(月) 01:09:26exe名をテキストから読み込み→プロセス一覧から一致するexeを検索、プロセスIDを取得
としてるのでそれだとプロセス一覧を2回まわすことになるから速度面で少し不安
情報後出しスマソ
>>869
くぁしく
いや一応Google先生にお聞きしてくるけど
0883873
2006/04/10(月) 01:10:47申し訳ないです。
思いつく限りは試してみましたが、何が原因で実行出来ないのでしょうか?
そろそろ寝ないと仕事がつらいので今日は落ちます。
明日、必ず返信します。
0884デフォルトの名無しさん
2006/04/10(月) 01:16:16実行出来ないって何が?
DllFunctionはERROR_SUCCESSを返しているんだろ?
ERROR_SUCCESSを返している以上ハンドル値は格納されている。
で、実際にCCCCCCCCからD8になったと>>878で言ってるじゃないか。
0885873
2006/04/10(月) 01:19:57エラーで強制終了されてしまいます。
エラー内容は"0x00551522"の命令が"0x000000D8"のメモリを参照しました。メモリが"read"になることはできませんでした。
と言った感じです。
0886873
2006/04/10(月) 01:21:51返ってきたハンドルの「0x000000D8」を使おうとすると
エラーが起きると言ったところです。
0887デフォルトの名無しさん
2006/04/10(月) 01:24:22エラーが起こってるところのコードも晒した方がいいんじゃねえかな?
0888デフォルトの名無しさん
2006/04/10(月) 01:44:560889デフォルトの名無しさん
2006/04/10(月) 02:18:15phkResultってどこを指してるんだろうね?
0890デフォルトの名無しさん
2006/04/10(月) 07:01:300891デフォルトの名無しさん
2006/04/10(月) 09:46:07我が家でも、
80000001,Software\test\test,0,F003F,0 //←できれば初期化する癖
80000001,Software\test\test,0,F003F,7B4
DLLの動的ロードを使わずに、普通にRegOpenKeyExを呼び出したら、
80000001,Software\test\test,0,F003F,7B0
この7B4や7B0のハンドル使って、RegSaveKeyしてみたら、
空のファイルしか出力されなかった。
0892デフォルトの名無しさん
2006/04/10(月) 09:51:52とだけして、phkResultが指す先を用意していない悪寒。
0893デフォルトの名無しさん
2006/04/10(月) 09:56:37それだとRegOpenKeyEx呼び出した時点でアウツじゃね?
0894デフォルトの名無しさん
2006/04/10(月) 10:00:32として &hkResult を渡してみ
0895デフォルトの名無しさん
2006/04/10(月) 10:04:330896デフォルトの名無しさん
2006/04/10(月) 15:37:58実行ファイル名をハードコーディングできないプログラムなのです。
main()から始まるコンソールアプリなら、argv[0]からファイル名を取得できるのですが。
WinMain()から始まるプログラムの場合にどうしたらいいか分かりません。
0897デフォルトの名無しさん
2006/04/10(月) 15:40:34GetCommandLine()
0898デフォルトの名無しさん
2006/04/10(月) 15:41:440899896
2006/04/10(月) 15:44:05ウインドウを持たないプログラムですので、
GetWindowModuleFileNameは使えないんです。
画面を一切出さないプログラムを作ろうとして、コンソールアプリを作ったら、
実行時にコンソール画面が出てしまったので、Win32 Applicationでウインドウなしの
プログラムとして作り直しました。
0900デフォルトの名無しさん
2006/04/10(月) 15:45:020901デフォルトの名無しさん
2006/04/10(月) 15:45:43ありがとうございます!
WinMainの引数にはプログラム名が入ってなかったので
無理かと思ってました。
0902デフォルトの名無しさん
2006/04/10(月) 15:50:47ありがとうございます。
こっちの方がちょっと簡単ですね。
0903873
2006/04/10(月) 22:18:22結構長くなってしまうと思いますが良いでしょうか?
やっていることとしてはAPIのフックです。
>>888-895
確かにハンドルとポインタをごっちゃにして考えていました。
とりあえず一番の問題としてはエラーで強制終了されてしまうことです。
元々は正常に動作していたソースを書き換えていたので、
レジストリ関係の関数の取り扱いに特に問題は無いのではないかと思います。
現状だと「RegOpenKeyExA」の呼び出し以外には特に手を加えていません。
HKEY hkResult = NULL;
として「&hkResult」を渡してみましたが、やはり結果は強制終了でした。
0904デフォルトの名無しさん
2006/04/11(火) 08:55:12FindWindow()以外の関数きぼん
FireFoxだとGoogle - Mozilla Firefoxになるからウィンドウタイトルじゃ指定できないだす
0905デフォルトの名無しさん
2006/04/11(火) 08:57:29ウィンドウ・クラス名でも検索できるだろ
0906デフォルトの名無しさん
2006/04/11(火) 09:46:21ありがと、分かってきた。
クラス名の取得にはGetClassName()でウィンドウハンドルが必要
これは開始前にクラス名を取得して書き出しておくしかないのかな
0907デフォルトの名無しさん
2006/04/11(火) 16:50:320908名無しさん@Linuxザウルス
2006/04/11(火) 17:11:40GetDC(hwnd,0);
0909デフォルトの名無しさん
2006/04/11(火) 17:20:03それだと範囲内に複数のウィンドウが入っているときとか面倒じゃない?
0910デフォルトの名無しさん
2006/04/11(火) 17:23:230911デフォルトの名無しさん
2006/04/11(火) 17:26:08GetDC(NULL)
0912デフォルトの名無しさん
2006/04/11(火) 17:32:25そんな手があったのか。
やってみる。
0913デフォルトの名無しさん
2006/04/11(火) 22:56:18マウスジェスチャー的なものを作っているのですが、マウスフックした状態で
1)Explorerのウインドウ内で右ボタンを押す
2)マウスカーソルを移動してExplorerの範囲外に移動
3)右ボタンを離す
という操作をしたとき(ファイルを選択しない右ドラッグみたいな感じの操作)に、
3)のところでWM_RBUTTONUPが通知されません。
Spy++ではWM_RBUTTONUPが見えているので、どうにかすれば拾えるのはわかるのですが…
WM_RBUTTONUPでなくてもいいので、右マウスを離したことを検出する
方法を教えてください。
0914デフォルトの名無しさん
2006/04/11(火) 23:09:52マウスキャプチャしてる?
0915デフォルトの名無しさん
2006/04/11(火) 23:40:00できました!ありがとうございます。
猫は一通りやったんですが、このAPIは頭に入ってませんでした。
0916デフォルトの名無しさん
2006/04/12(水) 03:30:22changefilename(hFile, "c:\\foo.txt");
みたいなかんじで
0917デフォルトの名無しさん
2006/04/12(水) 09:04:28ハンドルがあると言うことは、ファイルを開いている事になる。
開いているファイルをリネーム出来るとでも?
0918デフォルトの名無しさん
2006/04/12(水) 09:12:100919デフォルトの名無しさん
2006/04/12(水) 09:12:51できないんですか? 随分仕様もないOSですね。
0920デフォルトの名無しさん
2006/04/12(水) 09:40:17うん、そーだね
0921デフォルトの名無しさん
2006/04/12(水) 09:43:13君が言うんならそーなのかもね
0922デフォルトの名無しさん
2006/04/12(水) 13:19:56日本語又は英語のサイトであって、
マイクロソフトMSDN以外のものをご存知でしたら、
どうか、どうか、教えてください。
(VC#ExpressPreview)
0923デフォルトの名無しさん
2006/04/12(水) 13:21:33開いててもリネームできるよ
(少なくともNT系はできる)
0924デフォルトの名無しさん
2006/04/12(水) 13:23:48ワードの画面で、例えばCtrl+Rを押したときに、
ワードを操作するアプリ(wordobjectlibrary9.0)にその旨(Ctrl+Rが押下された)を
伝えることはできますでしょうか。
0925924
2006/04/12(水) 13:26:34WndProcで、メッセージを監視するという方法もありますが、
これだと、ワード画面が非アクティブなときに
押下されたCtrl+Rも前述したアプリに拾われてしまうので、
この方法は避けたいと思っております。
もっとも、ワード画面が非アクティブになったという事実を
前述したアプリに送ることができれば、もう少し選択の幅が
広がるかも知れませんが。
0926デフォルトの名無しさん
2006/04/12(水) 14:49:120927デフォルトの名無しさん
2006/04/12(水) 15:21:51グロ−バルフックとかじゃだめ?
出来るかどうかさっぱりわからないけど、Wordのアドインとして
自プログラムを登録しておいて、キー押下とかコマンドとか
拾えないかな?
0928924
2006/04/12(水) 15:30:08ごめんなさい、さっきの文、間違えました。正しくは、
付記
「GlobalHotkey」で、メッセージを監視するという方法もありますが、
これだと、ワード画面が非アクティブなときに
押下されたCtrl+Rも前述したアプリに拾われてしまうので、
この方法は避けたいと思っております。
もっとも、ワード画面が非アクティブになったという事実を
前述したアプリに送ることができれば、もう少し選択の幅が
広がるかも知れませんが。
グローばるほっときーは、
半ば無差別にキーボードを監視するので、
ワード文書を操作しながら、平行して
オートキャドを操作する場合、不具合が生じてしまいまうのです。
0929924
2006/04/12(水) 15:32:20えっと確かじゃないですけど、
そのときは、
メッセージをワードに食われてしまう結果、
メッせーじを監視できなかったような気がします。
immGetContextのメッセージを監視しようとしても、
WndProcで監視してもメッせージが出てこなかったような・・
ところで、グローバルホットキーと、グローバルフックって
同じことをさすのですか?
0930924
2006/04/12(水) 15:35:21>自プログラムを登録しておいて、キー押下とかコマンドとか
>拾えないかな?
それ、すごくいい!!(・∀・)
どうやるの・・・??
0931924
2006/04/12(水) 15:37:01HonliangSoft.Utilities
を使用しております。
0932デフォルトの名無しさん
2006/04/12(水) 15:45:00GetForegroundWindow とか使えない? どうやって Word をホストしてるんか知らないけど。
0933924
2006/04/12(水) 15:46:55すると、マクロAが起動する。
マクロAは、現在実行中のプログラム一覧を取得する。
当該プログラム一覧の中に、「myAppli.exe」というものがあるか
確認する。
もし「myappli」が2以上見つかったら、もしくは見つからなかったらreturn;
さもなくば、「myappli」に所定の処理をさせるようにメッせージを送る。
myappliは、何らかの方法でこのメッせージを受け取る。
myappliの変数wdAppli(Word.Applicationインスタンス)を介して、
ワード文書内に適宜の文字を追加する。WdTypeText(string str);
理想はこんな感じです
---------------
(a)現在実行中のプログラム一覧を取得 → VBAでやったことないから自信ないけど不可能ではなさそう。
(b)「myappli」に〜〜メッせージを送る。→送れるのか・・・
(c)myappliは、何らかの方法でこのメッせージを受け取る。→受け取れるのか・・・
この3点さえ解決すれば、OKです
0934924
2006/04/12(水) 15:50:17僕がグローバルホットキーを使う方法は、こんな感じです。
///<summary>ホットキーが押された時に発生します。</summary>
public event HotkeyReceivedEventHandler HotkeyReceived;
///<summary>WndProcをオーバーライドします。</summary>
protected override void WndProc(ref Message m)
{
if (m.Msg == 0x312 && HotkeyReceived != null)
{
//LParamの上位ワードが仮想キーコード、下位ワードが修飾キー
Keys key = (Keys)((int)m.LParam >> 16);
Modifiers modifiers = (Modifiers)((int)m.LParam & 0xFFFF);
HotkeyReceived(this, new HotkeyReceivedEventArgs(key, modifiers));
}
base.WndProc(ref m);
}
0935デフォルトの名無しさん
2006/04/12(水) 15:52:24旧世代の人間だから、別のスレで聞いた方がいいと思うぞw
っていうか、そもそも.NET Frameworkはこのスレではないと思うが。
0936デフォルトの名無しさん
2006/04/12(水) 15:52:39その myAppli 内に COM オブジェクトを実装して(COMサーバ化して)、
word の マクロの中ではそれを CreateObject して myAppli と通信するってのが一般的。
ATL なら簡単にできる。MFC だとどうやるんだっけ・・。APIだけだとちょっと難しい。
0937924
2006/04/12(水) 15:54:02WordObjectLibrary9.0を使用しております。
http://support.microsoft.com/default.aspx?scid=kb;ja;316384
>GetForegroundWindow
>(a)現在実行中のプログラム一覧を取得 → VBAでやったことないから自信ないけど不可能ではなさそう。
ものすごく関連ありそうな、聞いたことあります。
現在実行中のプログラムをゲットする関数でしたっけ・・・それ
VBAでもimportdllとかすれば使えそうな・・・えっと、
0938924
2006/04/12(水) 15:56:16>>936様
孤独感から解放された気がしました。
0939924
2006/04/12(水) 15:59:11getforegroundwindowは、
「120.現在操作中のウインドウのハンドルを取得する 」
というものですね。http://homepage1.nifty.com/MADIA/vb/API/GetForegroundWindow.htm
しかし、myappliは、ワード文書を作成中(即ち、Ctrl+Rを押下する時点)では、
非アクティブとなっております。
0940デフォルトの名無しさん
2006/04/12(水) 16:06:10> しかし、myappliは、ワード文書を作成中(即ち、Ctrl+Rを押下する時点)では、
> 非アクティブとなっております。
逆。myAppliがグローバルフック仕掛けてC-r押されたときにWordがアクティブか判断する。
がホストしてるWordのウィンドウハンドルを手に入れるのは無理な気がする。
モジュール名の取得とかで行けないこともないか?
>>933で良いのならそれで良さそうだが。
SendMessage WndProc
0941924
2006/04/12(水) 16:09:11>>936様
ATL
http://www.codeproject.com/atl/
ATL+Office2003+VC++
http://www.codeproject.com/atl/outlook2k3addin.asp
ATL+Word
http://www.shoeisha.com/book/hp/pc/office/Word/files/index-first-wa.html
他に、船出のお祝いとして、何か紹介いただけないでしょうか。
0942924
2006/04/12(水) 16:15:31>逆。myAppliがグローバルフック仕掛けてC-r押されたときにWordがアクティブか判断する。
なるほど、よく理解できます。
これだったら、ワード文書の作成と並行して起動されているイラストレータ
をいじってるときに、イラストレータのショートカットであるCtrl+Rを
押しても、ワードがアクティブじゃなければ、WndProcプロシージャの中では
何もしなければいいんですものね。
でも、でも、ワード文書で日本語を入力しているときであって、
入力されている文字がまだ未確定の場合はどうなるでしょうか。
ワード文書はアクティブですが、文字が未確定(変換中を示す。)のときに、
myAppliがワード文書内に所定の文字を追加するようWdTypeText(String str)
を実行してしまうと、ワードばぐるんですよ
(この問題が発生しているので、私は他の手法を考えていたところだったのです)
0943デフォルトの名無しさん
2006/04/12(水) 17:04:14ctrl+R押すと右揃えになるんだわ。参考までに。
あと、さっきも書いたけどアドインでメニュー項目を追加できると
思うので、ctrl+[何か]からメニュー項目起動で、自分の
コードを実行できそうな気がするんだけど、よくわからん…。
Word アドイン
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/modcore/html/deovrwordaddins.asp
参考までに:アドイン、テンプレート、ウィザード、およびライブラリ
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/modcore/html/deovraddinstemplateswizardslibraries.asp
0944924
2006/04/12(水) 17:17:18どうもありがとう!
>ctrl+R押すと右揃えになるんだわ。参考までに。
デフォルトでは仰るとおりです。
0945デフォルトの名無しさん
2006/04/12(水) 18:35:510946デフォルトの名無しさん
2006/04/12(水) 18:40:150947デフォルトの名無しさん
2006/04/12(水) 18:44:55これなんですが自分の力量じゃ組めませんでした。
0948デフォルトの名無しさん
2006/04/12(水) 18:50:020949デフォルトの名無しさん
2006/04/12(水) 18:51:220950デフォルトの名無しさん
2006/04/12(水) 19:01:540951デフォルトの名無しさん
2006/04/12(水) 20:14:28ウイルスでも組む気か?
0952デフォルトの名無しさん
2006/04/12(水) 20:17:46MessageBox( NULL, "[email protected]に、開いたことをメールで通知して下さい。", "お願い", MB_OK );
0953デフォルトの名無しさん
2006/04/12(水) 21:10:52プロセス列挙かスナップショットでポーリング。
見つかったらCDOで送る。
ポーリングの間をすりぬけるケースを拾いたければ、、、知らん
0954デフォルトの名無しさん
2006/04/12(水) 21:25:14CreateProcessをフックすればいいんじゃない?
0955デフォルトの名無しさん
2006/04/12(水) 22:11:52時々フックが外れて何も通知されなくなってしまいます。
このときマウス等の他のフックは動いているようです。
いろいろ探していてExplorer.exeが再起動したときなんかはフックが外れる
ようなことをどこかで見たのですが、対処方法まではわかりませんでした。
フックが外れたことを検出する方法と、その際の復旧方法について教えてください。
0956デフォルトの名無しさん
2006/04/12(水) 22:18:05さあ、さっぱりわからんけど、explorer.exeの再起動を
検知する姑息な方法として思いついたのは、
・PIDを覚えておいて定期的にチェック
・タスクトレイ常駐アプリはexplorer.exeの再起動を
教えてもらえると思うので、それを利用
0957デフォルトの名無しさん
2006/04/12(水) 22:40:34なんかピッドとかいうハンドルみたいなものがあると思ってた
0958デフォルトの名無しさん
2006/04/12(水) 23:00:22シェルが再起動した場合は、RegisterWindowMessage("TaskbarCreated") のメッセージが来る
0959デフォルトの名無しさん
2006/04/12(水) 23:07:180960は@ c178.016.c3-net.ne.jp ◆cplnFO9T0I
NGNG>日本語版MSDN Online Libraryは不完全です
ってあるけど、本当だね。
FindFirstFileで英語版だとルートディレクトリも工夫次第で検索できることになっているのに
日本語版だと検索できないとしか書いてないという。
0961デフォルトの名無しさん
2006/04/12(水) 23:52:27ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/fs/findfirstfile.asp
ttp://www.microsoft.com/JAPAN/developer/library/jpwinpf/_win32_findfirstfile.htm
同じことしか書いてない気がするが。どこのどの版のMSDNライブラリ?
0962デフォルトの名無しさん
2006/04/13(木) 07:06:44ものすごい勘違いしている気がする・・・
0963デフォルトの名無しさん
2006/04/13(木) 07:45:43よくわからんが
RegisterWindowMessage() … つか、関数の戻り値を case ラベルに利用する方法を教えてくれ。
0964デフォルトの名無しさん
2006/04/13(木) 08:11:000965デフォルトの名無しさん
2006/04/13(木) 09:00:03switch-case使ってるのがほとんどだけどね。
0966デフォルトの名無しさん
2006/04/13(木) 09:14:390967デフォルトの名無しさん
2006/04/13(木) 13:48:18Win32API作成するのに一番主流なのはMFCですか?
0968デフォルトの名無しさん
2006/04/13(木) 13:51:530969デフォルトの名無しさん
2006/04/13(木) 13:59:50SendInput でキーストローク送っても受け付けないウィンドウがあるんですが、
受け付けさせるのに何か良い方法ありませんでしょうか?
0970デフォルトの名無しさん
2006/04/13(木) 14:00:04実力付けたきゃ全部自分で書け
0971デフォルトの名無しさん
2006/04/13(木) 14:00:080972デフォルトの名無しさん
2006/04/13(木) 14:01:58キーの入力状態を設定する関数
0973デフォルトの名無しさん
2006/04/13(木) 14:02:560974デフォルトの名無しさん
2006/04/13(木) 14:15:270975デフォルトの名無しさん
2006/04/13(木) 14:22:44Win32APIアプリの間違いです。
0976デフォルトの名無しさん
2006/04/13(木) 14:47:46>>986なんて相手にするなよw
意地悪かバカかのどっちかだ。どっちにしてもかまってロクなことはないw
まあリアルで友達いないんだろうな。ここでかまってあげる優しさもありか( ´艸`)
0977デフォルトの名無しさん
2006/04/13(木) 14:47:490978デフォルトの名無しさん
2006/04/13(木) 14:50:150979デフォルトの名無しさん
2006/04/13(木) 15:01:270980デフォルトの名無しさん
2006/04/13(木) 15:37:330982デフォルトの名無しさん
2006/04/13(木) 16:32:28ハァ?バカは氏ね
0983は@ c178.016.c3-net.ne.jp ◆cplnFO9T0I
NGNGVB6についてきたVS6版のMSDN
0984デフォルトの名無しさん
2006/04/13(木) 19:46:040985デフォルトの名無しさん
2006/04/13(木) 21:36:53やりたいことがわからんから多分外してるが
LockWorkstation
0986デフォルトの名無しさん
2006/04/13(木) 21:37:45CPUは32ビットですけど。どのプラットフォームSDKをダウンロードしたらい
すか?
たくさんありすぎてわかりません。
0987デフォルトの名無しさん
2006/04/13(木) 21:39:36x86じゃね?
0988デフォルトの名無しさん
2006/04/13(木) 21:45:12ありがとうございます。
Microsoft Platform SDK for Windows Server 2003 SP1
というやつをインストールしましたが、
これのどこをみたらAPIのヘッダファイルをみることができるか
教えてもらえないでしょうか?
0989デフォルトの名無しさん
2006/04/13(木) 21:45:330990デフォルトの名無しさん
2006/04/13(木) 21:47:320991デフォルトの名無しさん
2006/04/13(木) 23:38:38どこさがしてもヘッダファイルが見つかりませんが?
どこをみたらいいのでしょうか?
0992デフォルトの名無しさん
2006/04/13(木) 23:50:490993デフォルトの名無しさん
2006/04/13(木) 23:51:410994デフォルトの名無しさん
2006/04/14(金) 00:03:220995デフォルトの名無しさん
2006/04/14(金) 00:42:25具体的なやり方を教えてください。
0996デフォルトの名無しさん
2006/04/14(金) 00:47:190997デフォルトの名無しさん
2006/04/14(金) 02:23:04これはどういうことが考えられるのでしょうか?
0998SOURCE ◆tAo.kQ2STk
2006/04/14(金) 02:59:26constじゃなかったっけ?
0999デフォルトの名無しさん
2006/04/14(金) 04:02:211000デフォルトの名無しさん
2006/04/14(金) 04:37:5910011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。