Win32API質問箱 Build40
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2006/02/03(金) 00:25:59やさしいお兄さんたちが答えてくれるかも。
過去スレ、関連リンクは>>2-5くらい。
■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。英語版(http://msdn.microsoft.com)の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvencedWindowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで。
0002デフォルトの名無しさん
2006/02/03(金) 00:26:3839 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/02/03(金) 00:27:4231 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/02/03(金) 00:29:41http://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/
- WindowsR 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/02/03(金) 00:33:31/ ̄/ /  ̄/  ̄/ / / / ̄ / ̄  ̄/ / ̄/ / ̄/
/ / / / ̄  ̄/  ̄/  ̄/ / ̄/ / / ̄/  ̄/
 ̄  ̄  ̄  ̄  ̄  ̄
0006デフォルトの名無しさん
2006/02/03(金) 00:39:09父「詳細キボーヌ」
母「今日はカレーですが、何か?」
兄「カレーキターーーーーーーーー」
妹「キターーーーーーーーーー」
姉「カレーごときで騒ぐ奴は逝ってヨシ」
母「オマエモナー」
父 --------終了-------
兄 --------再開-------
妹「再開すなDQNが!それより肉うpキボンヌ」
母「ジャガイモうp」
姉「↑誤爆?」
兄「タマネギage」
父「ほらよ肉>家族」
妹「神降臨!!」
兄「タマネギage」
母「糞タマネギageんな!sageろ」
兄「タマネギage」
姉「タマネギage厨uzeeeeeeeeeeee!!」
母「ageって言ってればあがると思ってるヤシはDQN」
セールスマン「イタイ家族がいるのはこの家ですか?」
母「氏ね」
父「むしろゐ�`」
兄「タマネギage」
妹「兄 、 必 死 だ な ( 藁 」
0007デフォルトの名無しさん
2006/02/03(金) 02:18:51CrLfがCrCrLfに変換されているように見えますが
生データを受け取ることは出来ないの?
0008デフォルトの名無しさん
2006/02/03(金) 04:42:40てめーで使ってるファイル入出力ライブラリが変換してるだけだ
おめーはprintf("\r\n")でCRLFLFが出力されるのが不満なのか?
0009デフォルトの名無しさん
2006/02/03(金) 10:25:040010デフォルトの名無しさん
2006/02/03(金) 10:46:23もう見てないか・・・・
>ファームアップデートした段階で応答なくなっちゃうんです(死
>で、再起動するには抜き差し……と。
実際にデバイスマネージャからやってみればわかるが、デバイスの無効・有効や、削除・変更
スキャンでは、デバイスの電源は落ちない。
したがって、デバイス側マイコンのパワーオンリセットを期待しているならNG。
デバイスドライバでPoRequestPowerIrp()を用いて電源をオフする手法もあるが、一部ハブや
ルートハブでは、電源オフされないものあり。
したがって、
>ファームアップデートした段階で応答なくなっちゃうんです(死
をなんとかするしかない。
0011デフォルトの名無しさん
2006/02/03(金) 15:53:04SendMessageをネストさせて
1. 情報が欲しいと思った
2. 自分=>相手に適当にSend
3. 相手=>自分にWM_COPYDATAをSend
4. 自分のCOPYDATAハンドラでデータを保存
5. 処理続行
とすると名前付きカーネルオジェクトも不要で、簡単で良いと思いました。
3.と4.の処理が重いと危険な匂いがしますが、これらが充分少量な処理ならば
これは設計としてアリでしょうか?
0012デフォルトの名無しさん
2006/02/03(金) 16:11:244は3への返答をさっさとしてからゆっくりやればいい。
安定性を過度に求めるんでなければ別に問題はないぞ。
0013デフォルトの名無しさん
2006/02/03(金) 16:45:35昔っから使われてる手法だし
0014デフォルトの名無しさん
2006/02/03(金) 17:25:21otu
0016デフォルトの名無しさん
2006/02/03(金) 19:50:280017デフォルトの名無しさん
2006/02/03(金) 19:51:31自分と相手が別スレッドだとデッドロックしないか?
0018デフォルトの名無しさん
2006/02/03(金) 19:53:47可
0019デフォルトの名無しさん
2006/02/03(金) 19:59:17口丁
0020デフォルトの名無しさん
2006/02/03(金) 20:00:23Debug構成でコンパイルして実行すると下のようなエラーが出て動作しません。
------------------------------------------------------------------------------
Debug Assertion Failed!
Program: ...ttings\umimi\デスクトップ\test\test2.exe
File: c:\program files\microsoft visual studio .net\vc7\atlmfc\include\atlcom.h
Line: 3534
Expression: !InlineIsEqualGUID(*m_plibid, GUID_NULL) && "Did you forget to pass the LIBID to CComModule::Init?"
For information on how your program can cause an assertion
failure, see the Visual C++ documentation on asserts.
(Press Retry to debug the application)
------------------------------------------------------------------------------
Release構成だと全く正常に動くんですが・・・。
これ解決法ないですか?
デバッガ使えないのはイタイ
0021デフォルトの名無しさん
2006/02/03(金) 20:10:43コントロールを取得するにはどうすればよいのでしょうか?
0022デフォルトの名無しさん
2006/02/03(金) 20:18:10>File: c:\program files\microsoft visual studio .net\vc7\atlmfc\include\atlcom.h
>Line: 3534
ここ見ろよ。
>Release構成だと全く正常に動くんですが・・・。
正常に動いているように見えるだけ。
assertが出るって事は、何かミスしてる事を知らせてる。
0023デフォルトの名無しさん
2006/02/03(金) 20:22:32http://www.codeproject.com/wtl/cwtlaxcontrol.asp?df=100&forumid=4601&exp=0&select=479358#xx479358xx
>>21
GetFocusもしくは
GetWindowThreadProcessIdとGetGUIThreadInfo
0025デフォルトの名無しさん
2006/02/03(金) 20:42:15IE7のBeta2が出ているらしいんですが、
IE7が正式リリースされると、コモンコントロールが更新されたり、
PSDKが更新されたりするんでしょうか。
何か面白そうな機能は付かないかな。
0026デフォルトの名無しさん
2006/02/03(金) 21:12:340027デフォルトの名無しさん
2006/02/03(金) 23:02:52>ネストさせて
2.と3.がネストしてて同一スレッドで投げ受けだと
固まるよね?
0028デフォルトの名無しさん
2006/02/03(金) 23:22:39勉強してた方が飯の種になるのかな。
0029デフォルトの名無しさん
2006/02/03(金) 23:25:420030デフォルトの名無しさん
2006/02/03(金) 23:30:350031デフォルトの名無しさん
2006/02/04(土) 00:46:52不覚にも笑ってしまった
0032デフォルトの名無しさん
2006/02/04(土) 08:16:37あり
0033デフォルトの名無しさん
2006/02/04(土) 12:08:25師を探すことにします。どうもありがとうございました。
0034デフォルトの名無しさん
2006/02/04(土) 13:01:470035デフォルトの名無しさん
2006/02/04(土) 13:48:23同じ行ならputchar('\r');で先頭カラムに戻る。
#後はしらね。
0036デフォルトの名無しさん
2006/02/04(土) 13:56:07どうも ん〜なんとかやってみます
わからなかったらまた来るかもしれません
0037前869
2006/02/04(土) 14:27:30|>>869
|英語版も合わせてよく読め。SPIF_SENDWININICHANGE | SPIF_UPDATEINIFILE を
|指定するのは、SetForegroundWindowの動作を、95,NT4と同じようにするために
|アプリのインストール時に恒久的に変更する場合のことだ。
アプリのインストール時に恒久的に変更する必要は無い、SetForegroundWindowを
呼び出す直前にFOREGROUNDLOCKTIMEOUTを一時的に変更する方法で問題無いという
指摘と思います。
英語版 KB97925
On Microsoft Windows 98 and Microsoft Windows 2000, SetForegroundWindow
is subject to limitations.
If an application requires that SetForegroundWindow behave the same
on all platforms, the foreground lock timeout value should be changed
when the application is installed.
On Windows 2000, the SystemParametersInfo call fails unless the
calling thread can change the foreground window, so this must be
called from a setup or patch application.
私はこれは、Windows 2000ではSystemParametersInfoでFOREGROUNDLOCKTIMEOUTを
変更するためには呼び出し元のスレッドでフォアグラウンドウィンドウを変更
できる必要があり、そのためにはアプリのインストール時にFOREGROUNDLOCKTIMEOUT
値を恒久的に変更する必要がある(SetForegroundWindowを呼び出す直前に一時的
に変更する方法では駄目)と読み取りました。
そう考えたのは一時的に変更するタイミングでアプリがフォアグラウンドウィンドウ
を変更できる保証は無いが、アプリのインストールプログラムは使用者によって
フォアグラウンドウィンドウにされている状態が必ずあるはずなので
SystemParametersInfoを成功させることができると考えました。
恒久的に変更する必要は無いというのはなぜでしょうか。
0038デフォルトの名無しさん
2006/02/04(土) 15:26:47\bで文字を消して書きなおす
0039デフォルトの名無しさん
2006/02/04(土) 15:39:04デッドロックはしない。
他スレッドへSendしている最中のスレッドがSendされると
Windowsがウィンドウプロシージャを直に呼び出す。
詳しくはAdvanced Windows読め。
0040デフォルトの名無しさん
2006/02/04(土) 16:49:01いろいろやってみたんですが
どうもうまく行きません
カーソルの位置が問題だと思うんですけど・・カーソルのを特定の場所に持ってくるような
エスケープシーケンスがどうもうちの環境じゃあ使えないようです
図というかMAPみたいのを直接上書きとかは無理なんですか?
また、ググってきます
0041デフォルトの名無しさん
2006/02/04(土) 16:58:11SetConsoleCursorPosition()
0042デフォルトの名無しさん
2006/02/04(土) 17:11:23ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/messagesandmessagequeues/messagesandmessagequeuesreference/messagesandmessagequeuesfunctions/sendmessage.asp
Message Deadlocks
これか。
0043デフォルトの名無しさん
2006/02/04(土) 17:32:30凄いほとんどちらつかなくなりました
ありがとうございました
0044デフォルトの名無しさん
2006/02/05(日) 00:32:32「GUI関係の仕事が無い時、GetMessageはスレッドを眠らせる」
とあるんですが、内部的にはWaitForSingleObjectしてると考えて
良いのでしょうか?
というのは、ウィンドウを必要としないスレッド間(別プロセス)で
同期とって作業しようと思っていて、
(a) イベントオブジェクト(とか) + WaitForSingleObject
(b) あえてウィンドウ作成(不可視) + SendMessage
なんかを思いついたんすけど、(b)を選ぶメリットってあるのかなー
と思っておるのです。(内部動作が等価なら、あえて選ぶ必要はなさそう)
0045デフォルトの名無しさん
2006/02/05(日) 02:34:30> 内部動作が等価なら
メッセージキューを自作するぐらいなら、
WindowMessage使ったほうがマシだと思う。
0046デフォルトの名無しさん
2006/02/05(日) 03:05:33WaitForもGetMessageも、(もちろんその他のI/Oもだけど)
スレッドを「待ち状態」にしてるだけでしょ。
スレッドを待ちにするために
わざわざWaitForなどのユーザーランドから呼び出すAPIを使ってるとは
(俺には)思えないけどね。
0047デフォルトの名無しさん
2006/02/05(日) 05:16:49不可視のウィンドウを作ってやり取りするのは
Windowsアプリケーションではよく使われる手。
それと、どうしてもウィンドウを作りたくないのならば
ウィンドウ無しでメッセージキューを持つこともできるよ。
0048デフォルトの名無しさん
2006/02/05(日) 05:44:25ttp://www.microsoft.com/JAPAN/developer/library/jpuipf/_win32_postthreadmessage.htm
004944
2006/02/05(日) 18:58:13>>45
ええ、「俺キュー」を自作するつもりは毛頭ないです。
処理が比較的単純なんで、キュー(WindowMessage)を使うのは
「襷に長し」かなあと感じたのでした。
>>46
なるほどです。「WaitFor...は、待機状態を実現する唯一の低レベルAPI」という
浅はかな思いこみが私にあった事に気づきました。
最終的に実現される『待機状態』は、GetMessageもWaitFor...も変わりはないですよね?
>>47-48
不可視ウィンドウは常套手段なのですか。ならためらう必要もなさそうです。
ウィンドウ無しのメッセージキューについてですが、PostThreadMessageでも
作られる事を学びました。メッセージループは以下の感じでよろしいでしょうか?
#define MYMSG 0
/* ウィンドウが無いので、TranslateもDispatchも不要 */
while(GetMessage(&msg,NULL,0,0)){
if(msg.message==WM_USER+MYMSG) { /* 俺処理 */ }
else if(msg.message==WM_QUIT) { break; }
}
0050デフォルトの名無しさん
2006/02/05(日) 23:36:15単にvbsのファイル名のみの指定と
「wscript.exe 」を前に付けて実行を試したのですが、実行できません。
0051デフォルトの名無しさん
2006/02/06(月) 00:37:410052デフォルトの名無しさん
2006/02/06(月) 01:04:45起こらなかったことじゃなくて起こったことを書かないと
あっそう、で終わる
0053デフォルトの名無しさん
2006/02/06(月) 01:54:10GetMessageはWM_QUITがきたら0を返すので else if... はいらないと思う
あと、
#define MYMSG 0
の後に
WM_USER+MYMSG
するくらいなら
#define MYMSG WM_USER+0
とした方がソース的に見やすいと思う
0054デフォルトの名無しさん
2006/02/06(月) 02:21:32#defineに括弧を付けないなんて。
0055デフォルトの名無しさん
2006/02/06(月) 02:24:56かっこつけてみた
(#define) WM_USER+0
0056デフォルトの名無しさん
2006/02/06(月) 02:44:520057デフォルトの名無しさん
2006/02/06(月) 02:56:27#define MYMSG WM_USER+(0)
0058デフォルトの名無しさん
2006/02/06(月) 03:33:14#define MYMSG WM_USER+0 (笑)
005949
2006/02/06(月) 04:10:32>>53
おっしゃる通りです、お恥ずかしいです。(普段のコピペがバレバレ)
>>54-58
どうもです(なんだそれ)
0060デフォルトの名無しさん
2006/02/06(月) 06:00:37誰も、GetMessageがエラーのときに-1を返すと突っ込まないなんて!
0061デフォルトの名無しさん
2006/02/06(月) 07:11:50WM_APPのあと幾らかはユーザー定義しても安全だった気がする。
0062デフォルトの名無しさん
2006/02/06(月) 07:27:320063デフォルトの名無しさん
2006/02/06(月) 07:28:01WM_USER〜0x2000ぐらいまで使ってた希ガス
0064デフォルトの名無しさん
2006/02/06(月) 07:40:220065デフォルトの名無しさん
2006/02/06(月) 08:50:380066デフォルトの名無しさん
2006/02/06(月) 09:40:05どうでもいいけどな。
0067デフォルトの名無しさん
2006/02/06(月) 12:58:34GetMessage() が-1を返すのは、ウィンドウハンドルが不正とか
呼び出し側が指定した引数に問題がある場合だけだから、
防御的プログラミングに走る場合以外はチェックしないんじゃないかな。
0068デフォルトの名無しさん
2006/02/06(月) 14:04:06うーん。場当たり的だ。
0069デフォルトの名無しさん
2006/02/06(月) 17:31:47だっけな。
0070デフォルトの名無しさん
2006/02/06(月) 17:32:420071デフォルトの名無しさん
2006/02/06(月) 17:32:42!<
0072デフォルトの名無しさん
2006/02/06(月) 17:36:11ちがったっけ??
0073デフォルトの名無しさん
2006/02/06(月) 17:41:580074デフォルトの名無しさん
2006/02/06(月) 18:10:04こっちだっけな??
0075デフォルトの名無しさん
2006/02/06(月) 18:13:580076デフォルトの名無しさん
2006/02/06(月) 18:14:460077デフォルトの名無しさん
2006/02/06(月) 18:17:25-1がちょっとだけ主張してる。はず。
0078デフォルトの名無しさん
2006/02/06(月) 18:18:190079デフォルトの名無しさん
2006/02/06(月) 18:19:36もうぐだぐだ。。。
0080デフォルトの名無しさん
2006/02/06(月) 18:20:090081デフォルトの名無しさん
2006/02/06(月) 18:20:440082デフォルトの名無しさん
2006/02/06(月) 20:07:04それGetMessageがTRUE返してもループ抜けちゃうやん。
0083デフォルトの名無しさん
2006/02/06(月) 21:23:49TRUE て1ちゃうかったっけ?
0084デフォルトの名無しさん
2006/02/06(月) 21:39:31だから、1でもループ抜けるやん
0085デフォルトの名無しさん
2006/02/06(月) 21:48:220086デフォルトの名無しさん
2006/02/06(月) 22:16:49関西人だから
0087デフォルトの名無しさん
2006/02/06(月) 22:23:190088デフォルトの名無しさん
2006/02/06(月) 22:23:520089デフォルトの名無しさん
2006/02/07(火) 00:06:150090デフォルトの名無しさん
2006/02/07(火) 02:38:18このようなソフトウェアをつくってみたいと考えているのですが
どのように実装されているのか見当がつきません。
timeGetTime()あたりをHookしているのではないかと思っているのですが
0091デフォルトの名無しさん
2006/02/07(火) 02:45:09dumpbinやdependency walker等でインポートしているAPIが分かる。
0092デフォルトの名無しさん
2006/02/08(水) 11:31:00また、サブディレクトリを含むディレクトリの削除はありますか?
0093デフォルトの名無しさん
2006/02/08(水) 11:34:46SHFileOperationでできそうな気がする
0094デフォルトの名無しさん
NGNG0095デフォルトの名無しさん
2006/02/08(水) 12:02:27ケコーン
0096デフォルトの名無しさん
2006/02/08(水) 12:36:53前スレ嫁
0097デフォルトの名無しさん
2006/02/08(水) 13:34:15正しい時間が計測できないという可能性が指摘されてるんですが、
現実問題そういう環境は実在するんでしょうか?
一般論としてもう使うべきではないんでしょうかね。
0098デフォルトの名無しさん
2006/02/08(水) 13:46:19ありがとう。助かりました。
0099デフォルトの名無しさん
2006/02/08(水) 14:04:44SpeedStepとかPowerNowとか。
0100デフォルトの名無しさん
2006/02/08(水) 14:58:330101デフォルトの名無しさん
2006/02/08(水) 15:29:39SetSuspendState自信無し
0102MR大佐||☆
2006/02/08(水) 16:19:39実は、ハンガリー表記には未公開の別の表記法が存在(中略)伝統に従って
uType だが、実は内部では fuMB_、つまり、MB_ で始まるフラグ値集合の UINT 型。
この未公開のハンガリー表記が使われた未公開のヘッダを使えば、
エディタで MB_ を入力するだけで(中略)ツールにより文書化を効率化できる。
エラーコードをセットする処理は、配布時には不必要かもしれない。
Won98では、エラーコード設定に以下の関数を使う。
0103MR大佐||☆
2006/02/08(水) 16:21:00英語圏の人は、この変数名の意味が読める。
#define WON_NOIMPL(it) \
typedef char it##_is_not_implemented_in_this_API; \
typedef int it##_is_not_implemented_in_this_API;
WON_NOIMPLFAIL マクロはエラーコード ERROR_CALL_NOT
0104MR大佐||☆
2006/02/08(水) 16:23:08対をなして、プログラムの下位互換性を定義する。
型変換時の間違いを防ぐため、新たにLOWORD_INTとHIWORD_INTが追加された:
#define LOWORD_INT(dw) ((INT)(SHORT)LOWORD(dw))
...
MR は、Won2K 以降 UniBulls をサポートしていません。
MR は、法令を遵守する極めて「ノーマルな」集団であり、2006年1月現在、RudeEvilとは無関係です。
MR は、「間違った手段」による Counter Smith Revolution を支持しません。
ソフトウェア開発は、日々進化しています。美しく勝利してください(ajax!)。
0105デフォルトの名無しさん
2006/02/08(水) 17:13:140106デフォルトの名無しさん
2006/02/08(水) 17:20:230107105
2006/02/08(水) 17:21:480108デフォルトの名無しさん
2006/02/08(水) 17:37:33ならない
というか実物見ないと(ry
0109105
2006/02/08(水) 17:42:45// ここを適当に変えて
のところで適当に座標値を
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?mode=thr&no=1628
0110デフォルトの名無しさん
2006/02/08(水) 17:56:11見れネ
0111105
2006/02/08(水) 17:58:55ソースは添付ファイルです
0112デフォルトの名無しさん
2006/02/08(水) 18:04:27ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1628.txt
0113105
2006/02/08(水) 18:09:000114デフォルトの名無しさん
2006/02/08(水) 18:11:53呼び出し側プロセスには SE_SHUTDOWN_NAME特権が必要。
�@NT、2000などでExitWindowsEx() or ExitWindows()するサンプルをどっかから
拾ってくる
�A以下の一行書き換える。
//ExitWindowsEx( ... );
SetSystemPowerState( TRUE, FALSE );
0115デフォルトの名無しさん
2006/02/08(水) 18:12:410116デフォルトの名無しさん
2006/02/08(水) 18:14:540117デフォルトの名無しさん
2006/02/08(水) 18:19:01SendMessageで送るメッセージは何にすれば良いのでしょうか?
WM_???
0118デフォルトの名無しさん
2006/02/08(水) 18:30:13PostMessage(hButton, WM_LBUTTONDOWN, 0, 0);
PostMessage(hButton, WM_LBUTTONUP, 0, 0);
これでやったらできたけど正しいかはわからない
0119デフォルトの名無しさん
2006/02/08(水) 18:30:56SPYで捕まえて、それと同じやつを送れ
0121デフォルトの名無しさん
2006/02/08(水) 18:42:510122デフォルトの名無しさん
2006/02/08(水) 18:47:160123デフォルトの名無しさん
2006/02/08(水) 18:49:21とりあえずレーザーで盲点は作れるからおk
0124デフォルトの名無しさん
2006/02/08(水) 19:01:160125デフォルトの名無しさん
2006/02/08(水) 19:13:24あ、すみません、それするとdllいらずでできそうですか?
ちなみにどんなふうにかけばいいですか?
0126デフォルトの名無しさん
2006/02/08(水) 19:19:55というのをどこかで聞いたことがある
0127デフォルトの名無しさん
2006/02/08(水) 19:21:39サブクラス化でぐぐれ!
0128デフォルトの名無しさん
2006/02/08(水) 19:21:570129デフォルトの名無しさん
2006/02/08(水) 19:26:010130デフォルトの名無しさん
2006/02/08(水) 20:40:40SetDIBitsToDevice の cScanLines っぽいけど。
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpgdi/html/_win32_setdibitstodevice.asp
> lpvBits パラメータが指す配列中に含まれている DIB の走査行の数を指定します。
g_img の走査行の数は IMG_H では?
0131デフォルトの名無しさん
2006/02/08(水) 22:25:020132デフォルトの名無しさん
2006/02/08(水) 23:00:34その後TimerProcのVBでいうIntervalを変更したいんですが、
なにか方法があれば教えてください。
0133デフォルトの名無しさん
2006/02/08(水) 23:04:06SetTimer()とKillTimer()しかないわけだから、KillしてSetしなおすしか
ないだろうね。
0134デフォルトの名無しさん
2006/02/08(水) 23:04:55KillTimerして再度作るのが妥当かと
0135デフォルトの名無しさん
2006/02/08(水) 23:08:010136デフォルトの名無しさん
2006/02/08(水) 23:11:46kwsk
削除しないと永遠に発生するもんじゃなかったっけ・・・?
0137デフォルトの名無しさん
2006/02/08(水) 23:18:230139デフォルトの名無しさん
2006/02/08(水) 23:30:59TimerProc内でSetTimerを再定義したらそれらしくなりました、
どうもありがとうございます。
0140デフォルトの名無しさん
2006/02/09(木) 01:56:45WM_COMMANDは、コントロール作成時にも送られてくるのですか?
0141デフォルトの名無しさん
2006/02/09(木) 02:08:38ペーストを検出する方法を教えてください。
0142デフォルトの名無しさん
2006/02/09(木) 02:18:14GetKeyStatとかでできるが、どのキーがどのプロセスで押されたか判断するのは多分無理。
>>129
どうやってプロセスを判断するのかな??^^
0143デフォルトの名無しさん
2006/02/09(木) 02:23:16キーイベントはプロセス相手ではなくスレッドに属するウィンドウ相手じゃまいか?
getforegroundwindow()でどのウィンドウが対象か調べればいいかとおもお
0144デフォルトの名無しさん
2006/02/09(木) 02:31:45話の流れをよく嫁。
0146デフォルトの名無しさん
2006/02/09(木) 04:24:34DLLインジェクション使え
>>145
必死だなチンカス
0147デフォルトの名無しさん
2006/02/09(木) 08:15:150148デフォルトの名無しさん
2006/02/09(木) 08:20:55送られてきません
説明読めよ
0149デフォルトの名無しさん
2006/02/09(木) 08:28:080150デフォルトの名無しさん
2006/02/09(木) 11:03:110151デフォルトの名無しさん
2006/02/09(木) 11:43:52何故、道央・道東を差しおいて「どちらか」と言うのか?
0152デフォルトの名無しさん
2006/02/09(木) 11:47:00この道産子どもめが!!
0153デフォルトの名無しさん
2006/02/09(木) 11:51:170155デフォルトの名無しさん
2006/02/09(木) 14:57:18お、本当だ!
ありがとう!
0156デフォルトの名無しさん
2006/02/09(木) 17:41:42証拠を提出してください。
0157デフォルトの名無しさん
2006/02/09(木) 18:16:110158デフォルトの名無しさん
2006/02/09(木) 18:16:240159デフォルトの名無しさん
2006/02/09(木) 18:43:39マルチモニタ環境での場合の絶対座標の指定方法がよくわかりません。
SendInput に渡す MOUSEINPUT 構造体の x, y には 0 から 65535 の数値を指定するようにされているのですが、
その範囲ではプライマリモニタ内でしかカーソルは移動しません。
その値を +65535 するとセカンダリモニタ内でカーソルが移動したり
するのですが、そういう考え方でいいのでしょうか?
つまり、0-65535 の値はプライマリモニタの物理座標(例えば 1024x768)
にマップされ、セカンダリモニタなどはそのプライマリにマップされた
大きさで計算する必要があるという事でしょうか?
説明が下手ですみません。
0160デフォルトの名無しさん
2006/02/09(木) 21:18:04そのサイトでは、詳しくは説明されておらず、自分でもできる限り検索などしてみましたが解決できませんでした
SetPixel(またはSetPixelV)が内部的にどのような動作をしているのかを解説したサイトなどご存知の方おられませんか…
よろしくお願いします
0161デフォルトの名無しさん
2006/02/09(木) 21:23:17つDIBSection
0162160
2006/02/09(木) 21:42:21失礼しました、SetPixelの実際の使用は
HDC hdc=CreateDC("DISPLAY",NULL,NULL,NULL);
SetPixelV(hdc,1,1,color);
といった感じなので、DIBSectionでは解決できそうにないです。
失礼しました
0163デフォルトの名無しさん
2006/02/09(木) 21:59:29・・・え?
0164デフォルトの名無しさん
2006/02/09(木) 22:07:440165デフォルトの名無しさん
2006/02/09(木) 22:12:340166デフォルトの名無しさん
2006/02/09(木) 22:36:13つーか、DibSection相手だとSetPixelしてもそこそこ速かったりするんだけどな。
0167デフォルトの名無しさん
2006/02/09(木) 23:34:49ロードする時、ピクセルにアクセスする場合は、
DDBだけじゃなく、DIBとしてもロードしておく。
0168デフォルトの名無しさん
2006/02/10(金) 11:24:210169デフォルトの名無しさん
2006/02/10(金) 14:40:430170デフォルトの名無しさん
2006/02/10(金) 14:44:14SetStretchBltMode使って気に入らなきゃ自前でやっちゃって良いんでない?
0171169
2006/02/10(金) 14:59:47SetStretchBltModeでHALFTONEを指定してブラシ原点の設定(0,0)を行ってもだめでした
表示内容の変更のたびに一度転送を挟むのは無駄な気もしますけど
しょうがないんですね…
0172デフォルトの名無しさん
2006/02/10(金) 17:13:260173デフォルトの名無しさん
2006/02/10(金) 17:40:20ところで、デバッグの為にDOS窓を出してそこに結果を出力させたいのですが
fprintf(stderr,"....");としても何も得られません
そこでDOS窓を制御するにはどの様なAPI、または手法が考えられるのでしょうか
0174デフォルトの名無しさん
2006/02/10(金) 17:56:00AllocConsole();
freopen("CONOUT$", "w", stdout);
freopen("CONOUT$", "w", stderr);
0175デフォルトの名無しさん
2006/02/10(金) 18:31:320176デフォルトの名無しさん
2006/02/10(金) 18:54:350177デフォルトの名無しさん
2006/02/10(金) 19:25:440178デフォルトの名無しさん
2006/02/10(金) 19:43:040179デフォルトの名無しさん
2006/02/10(金) 20:08:31OutputDebugString
0180デフォルトの名無しさん
2006/02/10(金) 20:51:38ヤフーメッセンジャーの話すボタンを押しっぱなしにするツールがありますが
あれはどうやってやってるんでしょうか?
ボタンにWM_LBUTTONDOWNメッセージを送ってやってもマウスをぐりぐり
やってると解除されてしまいます。親ウィンドウにマウスオーバすると確実に駄目。
ボタンへのメッセージを全てフックしてフィルタかけるとか面倒な事をやらなければ
駄目なんでしょうか?
よろしくお願いします。
0181デフォルトの名無しさん
2006/02/10(金) 21:05:14つ spy++
でまあ、気になったから自分でも調べてみたわけだが、
"話す"ボタンに、BM_SETSTATEを投げているみたい。
実際にメッセージ投げて確かめたわけじゃないけど。
0182デフォルトの名無しさん
2006/02/10(金) 21:29:42サンクス。
それやって見ます。
あと、SPY++使ってみます。
0183デフォルトの名無しさん
2006/02/10(金) 21:36:36「話す」ボタンが押下された状態はどういうタイミングでクリアされるの?
それを外部から判断できれば、クリアされるたびにメッセージ送れば
押しっぱなしの状態になるけど・・・
0184デフォルトの名無しさん
2006/02/10(金) 21:41:22バッチリですたd(゚∀゚)b
0185デフォルトの名無しさん
2006/02/10(金) 21:43:18ttp://wisdom.sakura.ne.jp/system/winapi/win32/win53.html
0186デフォルトの名無しさん
2006/02/10(金) 21:56:54それがあんまりハッキリしないみたい。親ウィンドウにマウスオーバすれば確実に
ボタンは戻るんだけど、そのままボタンのうえにもっていくと押された状態になる。
親ウィンドウにマウスオーバしなくても勝手に戻ったりもする。内部的なイベントが
いろいろ有ると思うし…。
>>185
サンクス。
たまたまヤフーメッセンジャーのIMの話すボタンの実装がそうなっていたとか
使われているRADツール?のボタンコントロールのデフォルトコードがそうなってるのか
とかそんなような事ですかね?
サンクス>>ALL
0187デフォルトの名無しさん
2006/02/11(土) 06:45:38私が今やっている方法は以下の通りです。
1.まず、ツールヘルプで全プロセスを列挙してその中から該当のもののプロセスIDを取得する。
2.GetWindow()を使ってDesktopWindowの子すべてにGetWindowProcessThreadId()をして調べる。
3.2.で見つかったウィンドウの子孫すべてをGetWindow()で取得。
もっといい方法はあるでしょうか?
0188デフォルトの名無しさん
2006/02/11(土) 08:17:020189デフォルトの名無しさん
2006/02/11(土) 18:46:46通じて取得しているのですが、.lnk等のショートカットだとリンク先のファイル名
になってしまいます。.lnkのファイル名を取得する方法を教えてください。
現状は↓の動作結果になっています。
1: .lnk一つだけ選択 → リンク先のファイル名
2: .lnkとそれ以外の拡張子を選択し、.lnk上で右クリック → リンク先のファイル名のみ
3: .lnkとそれ以外の拡張子を選択し、.lnkでないファイル上で右クリック → .lnkのファイル名とそれ以外のファイル名
0190デフォルトの名無しさん
2006/02/11(土) 19:44:10?
WM_DROPFILESのハンドラから取得すると普通にC:\... .lnkになってるけど。
逆にリンク先のファイル名にする方法聞きたい。
0191デフォルトの名無しさん
2006/02/11(土) 20:42:39IShellExtInit::InitializeでCF_HDROPを取って、DragQueryFileすると
>>189のようになってる希ガス
0192デフォルトの名無しさん
2006/02/11(土) 22:44:27SetActiveWindow
SetFocus
BringWindowToTop
の違いとはなんでしょうか?
0193デフォルトの名無しさん
2006/02/11(土) 22:58:53つMSDN
0194デフォルトの名無しさん
2006/02/11(土) 23:02:50SetActiveWindow→呼び出し元アプリ内でのみアクティブになる(フォアグラウンドになるとは限らない)
SetFocus→SetActiveWindowと似たような動きだが、ウィンドウに送られるメッセージが違う
BringWindowToTop→よくわからんけどSetForegroundWindowとたぶん似た感じ
0195デフォルトの名無しさん
2006/02/11(土) 23:29:530196デフォルトの名無しさん
2006/02/11(土) 23:31:29うんこは寝て(r
0197デフォルトの名無しさん
2006/02/11(土) 23:32:18int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
HDC hdc = CreateCompatibleDC(NULL);
HFONT font = CreateFont(32, 0, 0, 0, 400, FALSE, FALSE, FALSE, DEFAULT_CHARSET,
OUT_TT_ONLY_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH, "MS ゴシック");
HFONT fontOld = (HFONT)SelectObject(hdc, font);
GLYPHMETRICS gm;
ZeroMemory(&gm, sizeof(gm));
static const MAT2 mat = {{0,1}, {0,0}, {0,0}, {0,1}};
DWORD size = GetGlyphOutline(hdc, 'A', GGO_GRAY8_BITMAP, &gm, 0, NULL, &mat);
if(size == GDI_ERROR){
MessageBox(NULL, "GDI_ERROR!!", "ERROR", MB_OK);
}
SelectObject(hdc, fontOld);
DeleteObject(font);
DeleteDC(hdc);
return 0;
}
ちなみにMAT2の前のconstを消すと動きます。これって何なんでしょう。
環境はVS2005とVC6で確認しました。
0198デフォルトの名無しさん
2006/02/12(日) 00:26:19たまに届かないとき無いですか?
ウィンドウを移動中とかに送ると届いて無いことが結構ありますよね?
0199198
2006/02/12(日) 00:33:57こういう場合ってどうしたらいいでしょうか?
別スレッドから重要なメッセージを送ったのに勝手に削除されたら困るんですが
0200デフォルトの名無しさん
2006/02/12(日) 01:41:42そう簡単に溢れないと思ったが。
0201デフォルトの名無しさん
2006/02/12(日) 08:30:490202デフォルトの名無しさん
2006/02/12(日) 12:16:11戻値を確認すればいいんじゃ?
0203189
2006/02/12(日) 14:55:28>>191の説明通りです。説明不足ですみません。
>>191
仕様ですかね…?
でもこれって条件次第では、例えばユーザが選択したファイルのウィルスチェックが
出来ないことになるわけで(実際に某ソフトで確認済み)、「穴」な気がしますが。
…これでいいのかWindows?
0204デフォルトの名無しさん
2006/02/12(日) 16:24:22Win の責任なのか?
ある程度知識がある人にはショートカットとリンク先が別物なのは常識だし、
無い人は AutoProtect とか使ってるだろうから、リンクを逆参照した時点で発見出来るじゃん。
0205デフォルトの名無しさん
2006/02/12(日) 17:01:08WM_DROPFILES を使えばおっけーって事じゃないのか?
0206デフォルトの名無しさん
2006/02/12(日) 17:05:32これでいいのかWindowsも無いもんだ
0207デフォルトの名無しさん
2006/02/12(日) 20:27:160208デフォルトの名無しさん
2006/02/12(日) 23:45:30ZeroMemory(&sid, sizeof(WIN32_STREAM_ID));
DWORD dwStreamHeaderSize = (LPBYTE)&sid.cStreamName - (LPBYTE)&sid+ sid.dwStreamNameSize;
これっておかしくないですか?
0209デフォルトの名無しさん
2006/02/12(日) 23:50:29「すれ立てるまでもない〜」でも書き込ませていただきました。
特定のプロセスの起動を制御したいのですが、
そのスマートな方法が思いつきません。
私としては、このプロセスが起動するとき、はじめからスレッドを止めておき、
ユーザーに許可を求めてからスレッドを走らせるようなことをしたいのです。
自分で思いついた方法は
Kernel32 の代わりのライブラリ Xernel32 をインポートさせる
このとき、この特定のプロセスはクラック
Snapshot によってまず起動しているプロセスを取得し、
その全てのプロセスの CreateProcessA/W を
DLL遠隔実行+NTヘッダ書き換え方式でフックして、監視する方式
というものですが、上はプログラムに直接手を加え、
下はシステムの誤動作につながる可能性があることからできれば使いたくないと考えております。
どなたか上記以外の方法をご教授願えませんでしょうか?
よろしくお願いいたします。
0210デフォルトの名無しさん
2006/02/13(月) 00:14:35なにが???
DWORD dwStreamHeaderSize
= ( (DWORD)(&(sid.cStreamName)) - (DWORD)(&sid) + sid.dwStreamNameSize );
にしろってこと?
0211デフォルトの名無しさん
2006/02/13(月) 00:15:12そのプロセスのEXEのエントリポイントでも書き換えれば。
0212デフォルトの名無しさん
2006/02/13(月) 00:19:39先にクラックしておくという意味でしょうか?
0213デフォルトの名無しさん
2006/02/13(月) 00:42:550214デフォルトの名無しさん
2006/02/13(月) 00:54:10ファイルシステム 上のプログラムは手を加えたくないのです。
わがままですが…。
できれば、そのプログラム起動時には命令を一つも実行させず、
スレッドを止めた状態でユーザーに確認を求め、スレッドを走らせるということをしたいのです。
そのため、CreateProcessA/W、Kernel32 プロキシによるフックを思いついたのですが、
その特定のプログラムが、どのような方法で起動したとしても、
ユーザーの確認を求めることができる状態にしたいのです。
やはりこれ以外の方法はないのでしょうか?
0215デフォルトの名無しさん
2006/02/13(月) 01:47:120216デフォルトの名無しさん
2006/02/13(月) 05:31:28�@別のプロセスにある Rich Editに色やフォントを指定して、
文字列を(クリップボード経由ではない方法で)転送するやり方が
知りたいのですが、わかれば教えてください?
ただ文字列を転送することはできましたが、これ以上進みません。
例:ワードパッドに明朝体で青い字を表示させる。
�A別のプロセス中でサブクラス化されたコントロールを
解除する方法がわかれば教えてください。
例:「スタートボタン」はサブクラス化されていますが、これを解除する。
両方とも高度な質問だとはわかっていますがよろしくお願いします。
0217デフォルトの名無しさん
2006/02/13(月) 08:07:21先に0で埋めてるでしょ
0をいくら計算しても0では
0218デフォルトの名無しさん
2006/02/13(月) 08:42:54要件満たさないけど、ポリシーいじれるなら
起動の抑止は出来たと思う。
ポリシーって内部で何やってんだろうね。
0219デフォルトの名無しさん
2006/02/13(月) 08:48:21アドレスは0じゃないよ
0221デフォルトの名無しさん
2006/02/13(月) 09:20:170222デフォルトの名無しさん
2006/02/13(月) 09:24:16確かに、最後の「+sid.dwStreamNameSize」は意味が無いな
0223デフォルトの名無しさん
2006/02/13(月) 15:37:08サブクラス化してWM_SETFOCUS捕まえる以外は方法茄子?
0224デフォルトの名無しさん
2006/02/13(月) 15:52:410225デフォルトの名無しさん
2006/02/13(月) 15:57:42どう考えても健忘です
本当にありがとうございました
0226デフォルトの名無しさん
2006/02/13(月) 16:13:35ttp://www.microsoft.com/japan/msdn/windows/windows2000/ntfs5.asp
MSのサンプルコード鵜呑みにしないように
0227デフォルトの名無しさん
2006/02/13(月) 16:50:34二重起動チェックにmutex使ってるけど、いんだろうか?
0228デフォルトの名無しさん
2006/02/13(月) 16:53:120229デフォルトの名無しさん
2006/02/13(月) 19:55:33EPSファイルを、GIFファイルに、変更するフリーのDLLないでしょうか。
できれば、EPSを読み込んだあと、GetPixel()とかできるのがよいです・・。
(初心者にC++を教えるスレとの重複投稿です。解決したら、両方のスレに報告させていただきます)
0230デフォルトの名無しさん
2006/02/13(月) 19:59:540231デフォルトの名無しさん
2006/02/13(月) 20:00:420232デフォルトの名無しさん
2006/02/13(月) 20:17:320233デフォルトの名無しさん
2006/02/13(月) 20:19:47外で反省しなさい!!
0234デフォルトの名無しさん
2006/02/13(月) 21:02:100235デフォルトの名無しさん
2006/02/13(月) 21:19:46マルチスレッドプログラミング相談室で質問した方が良いんじゃないかとは思うが…。
ttp://pc8.2ch.net/test/read.cgi/tech/1130984585/l50
atomってのが何か知らないけど(critical section?)
mutex
1つのスレッドだけでロックしたいところが複数あるとき使う。
複数のスレッドで共有している連結リストに追加する関数と削除する関数がある場合とか。
semaphore
例えば3つしかないリソースがあって
A,B,Cがそれぞれ持ってった後にDが欲しいって言ってきたら
A,B,Cの誰かが返しに来るまで待たせるとか。
つか、本買え、本。
>>229
マルチ云々よりスレ違いの方が問題だろう(しかも両方!)。
>232-234
うんちうんちってそんな楽しいか?ガキだな…。
0236デフォルトの名無しさん
2006/02/13(月) 21:38:470237デフォルトの名無しさん
2006/02/13(月) 21:54:55Win32APIのスレに居るくせにATOMってのが何かわからないって・・・本気かおまえ
RegisterClass(Ex)とか使ったことねぇのか
0238デフォルトの名無しさん
2006/02/13(月) 22:05:400239デフォルトの名無しさん
2006/02/13(月) 22:15:46は?atomとmutexとsemaphoreが並んで書かれてたから
マルチスレッド絡みの単語で知らないのがあるのかと思っただけだろ。
小文字で書いてあるしな。
大文字小文字の区別は言語仕様の範疇だぞ。
0240デフォルトの名無しさん
2006/02/13(月) 22:19:520241デフォルトの名無しさん
2006/02/13(月) 22:23:080242デフォルトの名無しさん
2006/02/13(月) 22:43:08C/C++と英語・日本語では大文字小文字の使い分け方も違います。
http://msdn.microsoft.com/library/en-us/winui/winui/windowsuserinterface/dataexchange/atoms/atomreference/atomfunctions/addatom.asp
> The AddAtom function adds a character string to the local atom table and returns a unique value (an atom) identifying the string.
"an atom"
0243デフォルトの名無しさん
2006/02/13(月) 23:27:050244デフォルトの名無しさん
2006/02/13(月) 23:35:440245デフォルトの名無しさん
2006/02/14(火) 00:35:27マルチに回答するのはアレだが、ちょっと気になる話題なので・・・。
GIFに直接変換するものは知らないが、ifepsgs.spiというSusieプラグインならある。
動作にはGhostscriptが必要。ファイル名を渡した場合には一応動くが、
メモリ上のファイルイメージを渡したときにはバグって動かない、
メモリを2回deleteするバグあり、プレビュー付きEPSだと扱えないなど
いくつか問題があった。
しょうがないので、自分でパッチを書いてみたが・・・まあ、マルチだし。
0246デフォルトの名無しさん
2006/02/14(火) 00:35:560247デフォルトの名無しさん
2006/02/14(火) 00:39:18今年は中止だよ
0248デフォルトの名無しさん
2006/02/14(火) 00:43:330249デフォルトの名無しさん
2006/02/14(火) 00:44:45第2第3引数に-1を指定してすることによりメモリの使用量を一時的に減らすことが出来たのですが
これはMSDNに書かれているようにスワップアウトしているだけで
実際の使用量については一切変わっていないのでしょうか?
それとも不必要な部分を解放してくれているのでしょうか?
0250デフォルトの名無しさん
2006/02/14(火) 00:50:040251デフォルトの名無しさん
2006/02/14(火) 00:51:33アクティブウインドウにキー入力を送信するのに
SendInput や keybd_event などがありますが、
一部のウインドウに対しては全く動作してくれません。
SendMessage WM_KeyDownなどでもだめでした。
(おそらくDirectInputで入力を拾っているためだと思います)
しかし、JoyToKeyというフリーソフトではそのようなウインドウに対しても
キー入力を送信できているので、なにかしらいい方法があるはずです。
どのような方法を使えばキー入力を行うことができると思いますか?
0253デフォルトの名無しさん
2006/02/14(火) 01:30:54Windowsからはまだ割り当てたままのヒープブロックがあるわけだ。
スワップアウトする時はそれを最適化する作業がおまけで付いてくるってこと。
0254デフォルトの名無しさん
2006/02/14(火) 09:00:30> 色々な人がメモリの使用量を抑えるために使っているので
それは、どこでどれだけのサンプルを取って言っているのだ?
最低限、統計学的に見て問題のないサンプル数を取ってのセリフか?
0255デフォルトの名無しさん
2006/02/14(火) 09:24:280256デフォルトの名無しさん
2006/02/14(火) 09:51:090257デフォルトの名無しさん
2006/02/14(火) 10:57:47いま、タスクマネージャで計ってるんですが、わかりづらくて。
出来れば時間を追ってログに吐き出したりしたいんですけど。
どうでしょう?
0258デフォルトの名無しさん
2006/02/14(火) 11:29:33つ NtQuerySystemInformation
0259デフォルトの名無しさん
2006/02/14(火) 11:33:290260デフォルトの名無しさん
2006/02/14(火) 14:24:530261デフォルトの名無しさん
2006/02/14(火) 14:26:01板違い
0262デフォルトの名無しさん
2006/02/14(火) 14:36:380263デフォルトの名無しさん
2006/02/14(火) 14:40:310264デフォルトの名無しさん
2006/02/14(火) 14:46:280265デフォルトの名無しさん
NGNG昔、EL&Pとかのプログレバンドが演奏後にギター叩き壊したりしてたろ。
あれのセロ版。オーケストラのチェロ奏者が演奏後に叩き割るんだよ。
0266デフォルトの名無しさん
2006/02/14(火) 15:05:290267デフォルトの名無しさん
2006/02/14(火) 15:06:51セロ「で」割る
0268デフォルトの名無しさん
2006/02/14(火) 15:11:120269デフォルトの名無しさん
2006/02/14(火) 15:12:27昔って、、、昔杉w
0270デフォルトの名無しさん
NGNGオーケストラのチェロ奏者が演奏後に(セロで他の楽器を)叩き割るんだよ。
0271デフォルトの名無しさん
2006/02/14(火) 15:54:400272デフォルトの名無しさん
2006/02/14(火) 19:00:000273デフォルトの名無しさん
2006/02/14(火) 19:02:28プログラム作る前にグラフィックソフトの使い方勉強しれ
0274デフォルトの名無しさん
2006/02/14(火) 19:07:05StrechBltModeを変更しよう
0275272
2006/02/14(火) 19:11:06>プログラム作る前にグラフィックソフトの使い方勉強しれ
このような的を得ていないつっこみへの対処は、どうしましょう?
0276デフォルトの名無しさん
2006/02/14(火) 19:13:19手前で的知ってるなら わざわざ質問するなってことだ
0277デフォルトの名無しさん
2006/02/14(火) 19:15:51(形)
(1)よごれていていい感じを与える。
「画像がめちゃくちゃ―」
民明書房提供「大痔林 第二版」より
0278デフォルトの名無しさん
2006/02/14(火) 19:20:48サンプルをコンパイルしようとすると、
未解決の外部シンボル __imp__CoInitialize@4 が…
のエラーが出ます。
CoInitialize()使うのに必要な.h or .lib って何ですか?
0279272
2006/02/14(火) 19:25:02>StrechBltModeを変更しよう
「SetStretchBltMode」で「HALFTONE」を与えることで綺麗になりますた。
ありがとうございます。
0280デフォルトの名無しさん
2006/02/14(火) 19:28:14なんでMSDNライブラリ見ないの?
0281デフォルトの名無しさん
2006/02/14(火) 19:36:320283278
2006/02/14(火) 19:50:42ole32.libなんですね。
どっかに.libの一覧表とか無いんでしょうかねぇ。。。
0284デフォルトの名無しさん
2006/02/14(火) 19:53:130285デフォルトの名無しさん
2006/02/14(火) 19:53:43見にいっちゃったよ。ちゃんとあってよかった。ε-(´ー`;)
逆にどんな探し方したら見つからないのか知りたい。
0286デフォルトの名無しさん
2006/02/14(火) 21:03:08MSDNに書いてあるだろ
0287デフォルトの名無しさん
2006/02/14(火) 21:58:05今、メインのウィンドウ(ダイアログでない)にチェックボックスをベタ貼りするプログラムを書いています。
チェックボックスはCreateWindowでウィンドウクラスを"BUTTON"として生成できることはわかりました。
またスタイルの指定でチェックボックスになることもわかりました。
ただ、どうしても背景色が灰色になってしまうのです。
俺はメインのウィンドウの背景色に合わせたいのですが。
このような場合、チェックボックスの背景色を変える(もしくは透明にする)方法はないのでしょうか。
メインのウィンドウのWM_CREATE:でチェックボックス(hButton)を生成後
HDC hdc = GetDC(hButton);
SetBkColor(hdc, RGB(0,0,0));
のようなことをしても背景色は変わりませんでした。
調べてみるとオーナードローという方法が使えそう(?)ですが、ちょっと大変そうです。
どなたか、簡単に背景色を変える方法を、ヒントだけでも教えてもらえないでしょうか。
よろしくお願い致します。
0288287
2006/02/14(火) 22:00:50環境はWindowsXP、VS2003です。
また、MFCは使わず、SDKで作っています。
0289デフォルトの名無しさん
2006/02/14(火) 22:01:51「コントロール 背景色 変更 Win32」でググるとかしないの?
0290デフォルトの名無しさん
2006/02/14(火) 22:03:01Preview 1.0 Type Library(shimgvw.dll)を使ってできませんか。
メソッドの使い方はある程度予測つきますが、Previewクラスへ
オブジェクトを得る方法が分かりません。
破損したファイルを読み込むと次の画像に進むボタンの位置が動いて
うまく制御できないので困ってます。
VB板で聞いたらレスつきませんでした。
0291デフォルトの名無しさん
2006/02/14(火) 22:41:28うるせー、この糞。わかんねーから質問スレで質問してんだろうがよ。
われこそ知らねーなら黙っときや。
0292デフォルトの名無しさん
2006/02/14(火) 22:42:24怖くて見れないんだけど・・・
0293デフォルトの名無しさん
2006/02/14(火) 22:43:21OK見てくる
アイススケートだった
0294デフォルトの名無しさん
2006/02/14(火) 22:44:240295デフォルトの名無しさん
2006/02/14(火) 22:47:19チェックボックスの文字の背景はスタティックコントールの色になってるみたい。
だからWM_CTLCOLORSTATICでブラシを戻すとよいようだよ。
0296デフォルトの名無しさん
2006/02/14(火) 22:48:03WM_CTLCOLOR*
>>291
おまえ287じゃないだろ?
0298デフォルトの名無しさん
2006/02/14(火) 23:30:13糞っていうからどんな検索結果が出てくるのか気になってやってみたけど、
それなりに質問の答えになってるような気がする・・・
http://www.google.co.jp/search?hl=ja&q=%E3%82%B3%E3%83%B3%E3%83%88%E3%83%AD%E3%83%BC%E3%83%AB+%E8%83%8C%E6%99%AF%E8%89%B2+%E5%A4%89%E6%9B%B4+Win32&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=
0299デフォルトの名無しさん
2006/02/14(火) 23:39:02確かに答えになってるね。
287=291=292=297で、この時期googleが見れないから質問したってとこか。
0300デフォルトの名無しさん
2006/02/14(火) 23:40:010301デフォルトの名無しさん
2006/02/14(火) 23:40:16マウスカーソルについてなんですが、エクスプローラなどでctrlキーを押しながらドラッグアンドドロップするとカーソルに[+]記号が追加されますが、あれはどのように実現しているかわかる方いませんか?
0302デフォルトの名無しさん
2006/02/14(火) 23:44:460303299
2006/02/14(火) 23:54:26残念!299は別人でした。しかしそう見えるなw
これだけだとあれなので、ついでに回答。
>>301
LoadCursorとかじゃないかな。
0304デフォルトの名無しさん
2006/02/14(火) 23:59:01追加されんるじゃなく、[+]がついたカーソルを使っているだけ。
普段は矢印で、ちょっと時間がかかる処理では、砂時計とかに変えたことは
ないの? SetCursor() だと思ったけど。
0305デフォルトの名無しさん
2006/02/15(水) 00:00:45アレと同じ形のカーソルリソースを用意して
WM_SETCURSORでSetCursorを呼び出す
0306デフォルトの名無しさん
2006/02/15(水) 00:08:43そのボタンを押したら何かこちらで処理できるようなことは可能ですか?
0307デフォルトの名無しさん
2006/02/15(水) 00:11:26[+] は*.lnkと一緒であとから追加されてると思われ。
そんなカーソル見当たらんし。
0308デフォルトの名無しさん
2006/02/15(水) 00:13:39MessageBoxを独自に作るのが一番早いかと
0309デフォルトの名無しさん
2006/02/15(水) 00:14:15わかりました。
ありがとうございました。
0310デフォルトの名無しさん
2006/02/15(水) 00:20:48はい、300も別人でした。
これだけだとあれなので、ついでに回答。
>>306
要らないと思うけど一応こんなのもあるみたい。
A reverse-engineered MessageBox()
http://www.codeproject.com/dialog/xmessagebox.asp
0311301
2006/02/15(水) 00:22:33システム標準のマウスカーソルの形を変えても、
エクスプローラでは、その変えたカーソルにも[+]記号が追加されるので、
ImageListかなにかかと思ったんですけど違いますか?
ベッキー等では、システム標準のカーソルに関係なく、決まった形の
アイコンに[+]が付いてくるので、それはそのやり方なのかなと思いますが。。
わかる方いませんでしょうか?
0312デフォルトの名無しさん
2006/02/15(水) 01:23:28ボタンとかメニューは自前での実装ですか?
それともWindowsでそうゆうコントロールを用意してるんでしょうか?
0313デフォルトの名無しさん
2006/02/15(水) 01:39:51自前です。
0314デフォルトの名無しさん
2006/02/15(水) 03:01:280315デフォルトの名無しさん
2006/02/15(水) 08:43:06Handle= CreateWindowEx(
WS_EX_CLIENTEDGE,WC_LISTVIEW,NULL,
WS_CHILD|LVS_REPORT|LVS_EDITLABELS,
PosX,PosY,Width,Height,
GetDesktopWindow(),(HMENU)id,
GetModuleHandle(NULL),NULL);
でリストビュー作った後にSetParent( Handle, ParentHandle )で
親指定するとWM_NOTIFYメッセージを親に渡してくれないんですが
なんか他にセットすることがあるんでしょうか?
WM_PARENTNOTIFYは渡してるみたいなんですが……。
0316デフォルトの名無しさん
2006/02/15(水) 14:38:380317デフォルトの名無しさん
2006/02/15(水) 15:20:05ショートカットのアイコンは編集しているみたいだから、カーソルも作ってるのでは
ないか。LoadCursorFromFile() などあるから編集してロードして表示できるのは
確か。編集は bitmap が作れれば、アイコンやカーソルにするのはそんなに面倒でも
ない。
0318デフォルトの名無しさん
2006/02/15(水) 15:32:37フォントについての情報を取得する方法はありますか?
0319デフォルトの名無しさん
NGNG0320デフォルトの名無しさん
2006/02/15(水) 16:28:13WM_NOTIFY は SetParent() の実行にかかわらずコントロール作成時の親に送信される。
WM_NOTIFY の送信先を変更する一般的な方法はおそらく存在しない。
0321デフォルトの名無しさん
2006/02/15(水) 17:05:10IP Helperを使う。接続しているアダプタ一覧は以下のようにして得る
DWORD size;
GetIfTable(NULL, &size, FALSE);
PMIB_IFTABLE pIf = malloc(size);
GetIfTable(pIf, &size, FALSE);
for(DWORD i = 0; i < pIf->dwNumEntries; i++){
if (pIf->table[i].dwOperStatus == MIB_IF_OPER_STATUS_CONNECTED){
printf("CONNECTED Interface: %s\n", pIf->table[i].bDescr);
}
}
free(pIf);
0323デフォルトの名無しさん
2006/02/15(水) 17:42:470324デフォルトの名無しさん
2006/02/15(水) 17:46:230325デフォルトの名無しさん
2006/02/15(水) 18:01:58SPI_GETNONCLIENTMETRICS
0328デフォルトの名無しさん
2006/02/15(水) 21:17:53アプリケーションのメインアイコンを変更するには
そのアプリのリソースを追加・変更するしか方法がないのでしょうか?
アイコンを外部ファイルとして持っておきたいのですが。
0329デフォルトの名無しさん
2006/02/15(水) 21:20:25アプリケーションというか、
エクスプローラー等から見えるそのアプリのexeファイルの
アイコンを変えたいのです。
0330デフォルトの名無しさん
2006/02/15(水) 21:53:42ネットに接続されているか確認するだけなら、HTTPハンドルを使って適当なサイトに接続すればいい。
接続できればネットにつながってると。
0331デフォルトの名無しさん
2006/02/15(水) 21:56:120332デフォルトの名無しさん
2006/02/15(水) 22:28:400333287
2006/02/15(水) 23:23:37>>298
>それなりに質問の答えになってるような気がする・・・
答になってねーよ。どこにチェックボックスのことが書いてあるよ?マヌケ。
おまえ>>289だろ。心を入れ替えてくだらんレスはやめとけ。
0334デフォルトの名無しさん
2006/02/15(水) 23:29:33遅漏の上に粘着と来たか・・・
そうとう腐ってるな?
0336デフォルトの名無しさん
2006/02/15(水) 23:39:220337デフォルトの名無しさん
2006/02/15(水) 23:51:290338デフォルトの名無しさん
2006/02/16(木) 00:19:14ありがとうございました。
0339デフォルトの名無しさん
2006/02/16(木) 02:06:54それ使うのダイアルアップ接続の画面出たりしてマズくね?
0340デフォルトの名無しさん
2006/02/16(木) 08:37:52ない
0341デフォルトの名無しさん
2006/02/16(木) 10:55:05でるの?俺常時接続なもんでわからなくて。
0342デフォルトの名無しさん
2006/02/16(木) 11:09:57PPPoEなダイヤルアップで今試したら出た。
0343デフォルトの名無しさん
2006/02/16(木) 17:41:55InternetGetConnectedState()だとどうでそ。
0344デフォルトの名無しさん
2006/02/16(木) 18:52:450345デフォルトの名無しさん
2006/02/16(木) 19:16:321)どのインターフェースでもいいからインターネットに接続されているか知りたい
2)各インターフェースのうちどれがインターネットかどうか関係なく接続状態なっているか知りたい
3)各インターフェースのうちどれがインターネットに接続されているか知りたい
どれなんだろ?
1)なら>>342、2)なら>>321じゃないかと思うんだが、とりあえず316を待ってみね?
0346デフォルトの名無しさん
2006/02/16(木) 19:18:270347デフォルトの名無しさん
2006/02/16(木) 19:18:330348デフォルトの名無しさん
2006/02/16(木) 19:19:510349デフォルトの名無しさん
2006/02/16(木) 20:17:36参考になるサンプルでもないでしょうか?
よろしくお願いします。
0350デフォルトの名無しさん
2006/02/16(木) 20:40:31Crystal Report 4.6の帳票印刷してるのですが、
指定した用紙サイズで印刷されない、フォントが急に大きくなるなどの現象に苦しんでいます。
環境は
・プリンタはドット
・帳票の種類が多く、用紙のサイズも多様。
・共有プリンタで複数端末から印刷ジョブを送る。OSは2000/XP中心に色々。
印刷をする頻度もかなり高い。
・印刷時にダイアログを出して用紙を選択させるのはNG
SetPrinterで用紙を変更しているんですが、3行目に書いたような現象が出て死に掛けました。
用紙サイズの変更とかトラブルなく行うのってどうやればいいんですかね・・・
ちょっとしたアドバイスとか、参考文献の紹介とかでもいいのでなんかお願いします・・・
0351デフォルトの名無しさん
2006/02/16(木) 20:43:37user32.dllから取り出せば?
0352デフォルトの名無しさん
2006/02/16(木) 21:13:58LoadIcon()のヘルプ見れ
例えばIDI_ASTERISKとか
0353デフォルトの名無しさん
2006/02/16(木) 21:20:510355デフォルトの名無しさん
2006/02/17(金) 15:25:25上限無しじゃない
少なくとも512文字は作れた
0356デフォルトの名無しさん
2006/02/17(金) 16:10:27アニメーション(枠線がタスクバーに収まるやつ)させたくないんですが
何か方法ありますか?
0357デフォルトの名無しさん
2006/02/17(金) 16:17:36デスクトップを右クリックしてプロパティ(以下略
0358デフォルトの名無しさん
2006/02/17(金) 16:26:32APIでどうにかしたいんです
というか、
自己解決しかけてます
WM_COMMANDのSC_MINIMAIZEで
消せばいいかもしれない
0359デフォルトの名無しさん
2006/02/17(金) 16:28:23そのアプリケーションだけUIが違うっていうのがそもそも間違いかと
もし不可視にしようとしてるなら、やめておいたほうが良いぞ
0360デフォルトの名無しさん
2006/02/17(金) 16:31:10最小化どうでもよかった。
DelphiかBuilderアプリってそんな感じなので
別にいいかと思った
おしまい。
0361デフォルトの名無しさん
2006/02/17(金) 16:35:100362デフォルトの名無しさん
2006/02/17(金) 16:41:410363デフォルトの名無しさん
2006/02/17(金) 16:54:16これに近いかな?
隠し親ウィンドウ
0364デフォルトの名無しさん
2006/02/17(金) 17:08:320365デフォルトの名無しさん
2006/02/17(金) 17:17:11げtくrせl
0367デフォルトの名無しさん
2006/02/17(金) 17:35:310368デフォルトの名無しさん
2006/02/17(金) 17:36:050369364
2006/02/17(金) 17:41:380370デフォルトの名無しさん
2006/02/17(金) 17:42:06LB_GETCURSEL
Send an LB_GETCURSEL message to retrieve the index of the currently selected item, if any, in a single-selection list box.
LB_GETCURSEL
wParam = 0; // not used; must be zero
lParam = 0; // not used; must be zero
Parameters
This message has no parameters.
Return Values
In a single-selection list box, the return value is the zero-based index of the currently selected item. If there is no selection, the return value is LB_ERR.
0371364
2006/02/17(金) 18:00:37環境変数をセットする時みたいなリストって、
あれはなんていうの?
2次元配列的にリスト作れるやつ。
0372デフォルトの名無しさん
2006/02/17(金) 18:06:09あれはリストコントロールのレポートビューだよ
0373デフォルトの名無しさん
2006/02/17(金) 18:07:44おまえエスパーだろ
俺>>371が何を伝えようとしてるのかわからなかったぞ…
0375371
2006/02/17(金) 19:38:08コモンダイアログの「名前を付けて保存」で、
lpstrFileに保存名を入れると思うんだけど、
入力した文字列をどうやって取得したらいいですか?
0376デフォルトの名無しさん
2006/02/17(金) 19:41:25strcpyでもなんでもしろや
0378デフォルトの名無しさん
NGNG0379デフォルトの名無しさん
2006/02/17(金) 19:52:100381デフォルトの名無しさん
NGNGWhen the GetOpenFileName or GetSaveFileName function returns successfully, this buffer contains the drive designator, path, file name, and extension of the selected file.
0382親切な俺
2006/02/17(金) 20:16:05初期化は必要でないなら、このバッファの最初のキャラクタがNULLであるに違いありません。
GetOpenFileNameかGetSaveFileName機能が首尾よく戻るとき、このバッファは選択された
ファイルのドライブ指示子、経路、ファイル名、および拡大を含んでいます。
0383は@ c178.016.c3-net.ne.jp ◆cplnFO9T0I
NGNG出来たら作成日時とかも取得できるといいです。
0384デフォルトの名無しさん
2006/02/17(金) 20:26:55王道としてはFindFirstFile方面>ファイルリスト
0385デフォルトの名無しさん
2006/02/17(金) 20:41:46포함하는 완충기에 포인터는 통제를 편집한다.
초기 설정이 필요하지 않으면 이 완충기의 첫번째
특성은 무효 이어야 한다.
GetOpenFileName또는GetSaveFileName기능이
성공적으로 돌려보낼 때, 이 완충기는 선정한
파일의 드라이브 지명자, 경로, 파일 이름,
및 연장을 포함한다.
0386デフォルトの名無しさん
2006/02/17(金) 20:51:200387デフォルトの名無しさん
2006/02/17(金) 20:51:59それ、なんて日本語?
0388デフォルトの名無しさん
2006/02/17(金) 21:10:50謝罪と賠償を要求する
0389デフォルトの名無しさん
2006/02/17(金) 22:14:310390デフォルトの名無しさん
2006/02/17(金) 22:21:55シェルエクステンション
0391デフォルトの名無しさん
2006/02/17(金) 23:36:05ここで販売されているような、
あたかも通常のプリンタで印刷するかの操作で、
GIFファイルを作成できるようなプリンタドライバ(?)を
作りたいと考えております。(スレ違いでしたら、申し訳御座いません。)
どなたか、上記のような所謂バーチャルプリンタとでもいいましょうか、
そのようなアプリケーション又はドライバ又はiniファイルなどの作り方、導入方法をご存知な方がいらっしゃいましたら、
教えてください。おながいします。
スレ違いでしたら、導いてください○rz...
0392デフォルトの名無しさん
2006/02/17(金) 23:55:36DDK
0393は@ c178.016.c3-net.ne.jp ◆cplnFO9T0I
NGNG最初どの様に結果が出るのか解らなかったんですが、
2番目の引数に設定したWIN32_FIND_DATA型で帰ってくるんですね。
瞬答ありがとうございました。
0394デフォルトの名無しさん
2006/02/18(土) 00:56:10atlstr.h(CString) でも string でも好きな方使えやって感じでしょうか?
0395デフォルトの名無しさん
2006/02/18(土) 00:57:43接続元、接続先のMACアドレスどちらでもかまいません。
0396デフォルトの名無しさん
2006/02/18(土) 00:57:500397デフォルトの名無しさん
2006/02/18(土) 02:09:340398は@ c178.016.c3-net.ne.jp ◆cplnFO9T0I
NGNG全部のファイルを列挙し終わったことを検知するのにはどうすればいいんでしょうか?
0399デフォルトの名無しさん
2006/02/18(土) 02:30:340400デフォルトの名無しさん
2006/02/18(土) 02:33:080401デフォルトの名無しさん
2006/02/18(土) 03:40:110402デフォルトの名無しさん
2006/02/18(土) 07:53:09A) 現在選択されているアイテムのインデックス番号を取得するにはどうしたらよいのでしょうか? (LVS_SINGLESELでたった一つしか選択できないようにしています。)
リストボックスの場合はLB_GETCURSELメッセージで取得できました。
でもリストビューにはそれに相当するものが見当たりません。
思いつくのはLVM_GETITEMメッセージで全アイテムを一つ一つstate & LVIS_SELECTEDチェックする、というものですが、ちょっとバカみたいな気がするのですが・・・
B) あと、カラムヘッダの部分を右クリックすると暴走してしまうんですが、これはCOMCTL32のバグなんでしょうか? リストビューを他のウィンドウの子ウィンドウにしていると暴走しないみたいなんですが・・・Win98+IE5.5でもWin2000+IE6.0でもそうなります。
以下、選択アイテム検出部がリストボックスのものになっています。
#include <windows.h>
#include <stdio.h>
#include <commctrl.h>
void main(){
HINSTANCE hInst = GetModuleHandleA(NULL);
InitCommonControls();
HWND hwnd = CreateWindowA("SysListView32", "LIST", WS_VISIBLE | LVS_REPORT | LVS_SINGLESEL, 20, 20, 200, 180, NULL, NULL, hInst, NULL);
if (hwnd == NULL){
printf("CreateWindow() error\n");
exit(-1);
}
0403デフォルトの名無しさん
2006/02/18(土) 07:57:03LVCOLUMNA column;
column.mask = LVCF_TEXT | LVCF_WIDTH;
column.cx = 48;
column.pszText = "No.";
SendMessageA(hwnd, LVM_INSERTCOLUMNA, 0, (LPARAM)&column);
column.pszText = "Name";
SendMessageA(hwnd, LVM_INSERTCOLUMNA, 1, (LPARAM)&column);
LVITEMA item;
item.iItem = 0;
item.iSubItem = 0;
item.mask = LVIF_TEXT;
item.pszText = "0";
SendMessageA(hwnd, LVM_INSERTITEMA, 0, (LPARAM)&item);
item.iItem = 1;
item.pszText = "1";
SendMessageA(hwnd, LVM_INSERTITEMA, 0, (LPARAM)&item);
item.iItem = 2;
item.pszText = "2";
SendMessageA(hwnd, LVM_INSERTITEMA, 0, (LPARAM)&item);
0404デフォルトの名無しさん
2006/02/18(土) 07:57:38item.pszText = "a";
SendMessageA(hwnd, LVM_SETITEMTEXT, 0, (LPARAM)&item);
item.pszText = "b";
SendMessageA(hwnd, LVM_SETITEMTEXT, 1, (LPARAM)&item);
item.pszText = "c";
SendMessageA(hwnd, LVM_SETITEMTEXT, 2, (LPARAM)&item);
MSG msg;
for(;;){
GetMessage(&msg, NULL, 0, 0);
TranslateMessage(&msg);
DispatchMessage(&msg);
if ((msg.message == WM_KEYDOWN) && (msg.wParam == VK_RETURN)){
LRESULT index = SendMessageA(hwnd, LB_GETCURSEL, 0, 0);
}
if (msg.message == WM_SYSCOMMAND){
if (msg.wParam == SC_CLOSE){
exit(0);
}
}
}
}
0405デフォルトの名無しさん
2006/02/18(土) 08:04:19> A) 現在選択されているアイテムのインデックス番号を取得するにはどうしたらよいのでしょうか? (LVS_SINGLESELでたった一つしか選択できないようにしています。)
LVM_GETNEXTITEM
0406デフォルトの名無しさん
2006/02/18(土) 08:12:38子ウィンドウじゃないなんてアリエナイ
0407デフォルトの名無しさん
2006/02/18(土) 08:14:420408デフォルトの名無しさん
2006/02/18(土) 08:15:420409デフォルトの名無しさん
2006/02/18(土) 08:49:19LPTSTR
0410デフォルトの名無しさん
2006/02/18(土) 10:00:12WinAPIスレとしてはstd::stringを使うなら、
それよりもstd::basic_string<TCHAR>を使えと言っておく。
0411デフォルトの名無しさん
2006/02/18(土) 15:41:19section name に使える文字と字数の上限は何でしょうか?
0412デフォルトの名無しさん
2006/02/18(土) 16:24:53ASCII8byteじゃなかったかな
0413デフォルトの名無しさん
2006/02/18(土) 19:42:30HBRUSH oldbr = (HBRUSH)SelectObject(g_hdcOff, g_hbrBg);
SelectObject(g_hdcOff, GetStockObject(WHITE_BRUSH));
Rectangle(g_hdcOff, -1, -1, CLIENT_WIDTH+1, CLIENT_HEIGHT+1);
SelectObject(g_hdcOff, oldbr);
でうまく画像が消去できません」。
ヘルプ
0414デフォルトの名無しさん
2006/02/18(土) 19:46:13左上は(0,0)の筈だが(-1,-1)ってどこから書きたいんだ?
0415デフォルトの名無しさん
2006/02/18(土) 19:49:26FillRectはつかわんの?
0416デフォルトの名無しさん
2006/02/18(土) 19:58:520417デフォルトの名無しさん
2006/02/18(土) 19:59:380418デフォルトの名無しさん
2006/02/18(土) 20:57:20ウィンドウの作成/破棄されたかどうか調べているのですが、
一部のアプリケーションについては、
HSHELL_WINDOWCREATEDは送られてくるのですが、
HSHELL_WINDOWDESTROYEDは送られてきません。
また、両方とも送られてこないアプリケーションも存在します (例えば cmd.exe)。
送られてこない原因は何なのでしょうか?
また他の方法でウィンドウの作成/破棄を調べることはできるでしょうか?
0419418
2006/02/18(土) 21:19:310420デフォルトの名無しさん
2006/02/18(土) 22:06:57↑
で文字が正常に表示されません!
低い確率で、ちゃんと表示さてるときはあります。
ヘルプー
0421デフォルトの名無しさん
2006/02/18(土) 22:08:050422デフォルトの名無しさん
2006/02/18(土) 22:10:56引数のそれぞれが適切な値か確かめてみる。
GetLastErrorで何が返ってくるか確かめる。
これくらいをまずやってから来い。
0423デフォルトの名無しさん
2006/02/18(土) 22:15:56「腹が痛い」だけで原因を突き止められる医者はいないだろ?
0424デフォルトの名無しさん
2006/02/18(土) 22:26:31http://read.kir.jp/file/read38074.txt
ソースです
0425デフォルトの名無しさん
2006/02/18(土) 22:35:07特に理由が無い限りCreatePointFontを使う方が確実で簡単。
0426デフォルトの名無しさん
2006/02/18(土) 22:47:340427デフォルトの名無しさん
2006/02/18(土) 22:54:56どうやら確保していた変数の量を超えていたらしいです!
オーバーフローっていのかな?
うぉぉぉぉ!!!!
俺っておばかチン!
ハッハッハハハハハハッハア
正義は勝つ!!
0428デフォルトの名無しさん
2006/02/18(土) 23:00:040429デフォルトの名無しさん
2006/02/18(土) 23:02:580430デフォルトの名無しさん
2006/02/19(日) 00:06:09ウィンドウの下側に貼り付ける方法とスプリッターの出し方がわかりません。
これってどちらもウィンドウのリサイズとかを検出して
自前で実装する物なんでしょうか?
0431デフォルトの名無しさん
2006/02/19(日) 00:38:22どうすればいいですか?
0432デフォルトの名無しさん
2006/02/19(日) 00:42:21「↓数字だけ入れてね」とでも書いておく
0433デフォルトの名無しさん
2006/02/19(日) 00:51:20スタイルにES_NUMBER付けとけばとりあえず数字以外の入力の抑止はできるが
コピペは抑止できないので、後はごにょごにょする。
めんどくさければ432の如く
0434デフォルトの名無しさん
2006/02/19(日) 00:56:590435431
2006/02/19(日) 01:14:13一応432さん提案のコメントも置いておきますが、
無法者もいるとおもいますので、
433さんにごにょごにょを教えていただきたいです。
0436デフォルトの名無しさん
2006/02/19(日) 02:04:150437433
2006/02/19(日) 02:09:24貼り付けで考えられるのは
1.Ctrl+Vで貼り付け
2.右クリックメニューから貼り付け
3.別のプログラムからWM_SETTEXTで無理やり入力
1.WM_CHARで数字以外の入力は全てはじく
(CTRL+Vは抑止できるが、CTRL+C,CTRL+X,CTRL+Zも使えなくなるので
その動作を残したければその点も考慮にいれて書く)
2.WM_CONTEXTMENUで抑止してしまう(コピー等もできなくなるが・・・)
3.これは考えなくてもいいと思うけど一応
あと、EN_CHANGEでチェックするのもありか?
MFCベースのサンプルがいろいろあるから
あとは適当に参考にしてやってください。
ttp://www.codeproject.com/editctrl/
0438431
2006/02/19(日) 02:23:46結構手間がかかるようですが、
なんとかやれそうです。
0439デフォルトの名無しさん
2006/02/19(日) 02:23:46どちらもAPIでは用意されていない。
0440デフォルトの名無しさん
2006/02/19(日) 02:25:21SelectObjectを使ってできたりするんでしょうか?
0441デフォルトの名無しさん
2006/02/19(日) 02:26:02>>392も書いてるけど要DDKだし
↓あたりで
【WDM】Windows Driver Model相談室【デバドラ】
http://pc8.2ch.net/test/read.cgi/tech/1063453024/
0442デフォルトの名無しさん
2006/02/19(日) 08:14:24CreateFont
あとは自分で
0443デフォルトの名無しさん
2006/02/19(日) 10:21:50API直使用でMDIのアプリ(と言ってもMDIのフレームとドキュメントウィンドウが出るだけ)を作りました
そのフレームにCreateToolbarExでツールバーをつけたのですが、
その状態でドキュメントウィンドウを作ると、初期位置でタイトルバーがツールバーの下に隠れてしまいます。
ツールバー付きのMDIアプリって、どうやって位置調整してるのでしょうか?
やっぱりMDICLIENTのサブクラス化ですかね?
0444デフォルトの名無しさん
2006/02/19(日) 12:45:13WM_SETFONT
0446デフォルトの名無しさん
2006/02/19(日) 16:08:59猫でも分かる...に例がある。tool bar の高さで調整したと思う。
SizeWindow() で加味したはず。
この部分は何年も前のソースを今も使いまわしていて、どうしているか
気にもしなくなった。
0448デフォルトの名無しさん
2006/02/19(日) 19:32:37警告 W8057 first.cpp 31: パラメータ 'lpsCmdLine' は一度も使用されない(関数 __stdcall WinMain(HINSTANCE__ *,HINSTANCE__ *,char *,int) )
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
Error: 外部シンボル '_main' が未解決(F:\PROGRAM FILES\BORLAND\BCC55\LIB\C0X32.OBJ が参照)
上のような警告やエラーが出てきてexeファイルが作られません。
どうすればいいでしょう。ソースは猫でもわかる...のwebサイトからとってきたので間違いはないと思います。
0449デフォルトの名無しさん
2006/02/19(日) 19:35:46ttp://gimite.ddo.jp/bcbqtree/qtreemain.cgi?mode=thread&thread=341
0451デフォルトの名無しさん
2006/02/19(日) 20:06:50その警告はC++ならこのように仮引数の名前を与えなければよい。
int WINAPI WinMain(HINSTANCE hinst, HINSTANCE, PSTR, int nCmdShow)
0452デフォルトの名無しさん
2006/02/19(日) 23:48:48Cなのにこれらの関数が使えません><
0453デフォルトの名無しさん
2006/02/19(日) 23:57:01何故使えない?
それはともかくそれぞれAPIでやるとなると
HANDLE, CreateFile, ReadFile(行単位でなくfreadに近い), ReadFileを呼んで判断するとなる。
0454デフォルトの名無しさん
2006/02/20(月) 00:49:55#include<stdio.h>してる?パスは通っている?
あと質問するは、なんてエラーが出てるか書こうね。
0455デフォルトの名無しさん
2006/02/20(月) 06:57:56本見るとつかえるようなつかえないようなよくわからん表現になってるw
だから、とりあえず使わないでおこうかってなるw
0456デフォルトの名無しさん
2006/02/20(月) 08:33:020457デフォルトの名無しさん
2006/02/20(月) 12:37:48MFCにはそれっぽいものがあるようなのですが……。
ベタのAPIだと機能として提供はされていないのでしょうか?
0458デフォルトの名無しさん
2006/02/20(月) 12:43:20自前で作るしかない
0459デフォルトの名無しさん
2006/02/20(月) 12:58:170460デフォルトの名無しさん
2006/02/20(月) 13:00:170461デフォルトの名無しさん
2006/02/20(月) 13:11:250462デフォルトの名無しさん
2006/02/20(月) 13:14:14・フレーム部分でマウスドラッグが発生したらBとCのウィンドウサイズ・位置を適当に調整する。
だけ。
0463デフォルトの名無しさん
2006/02/20(月) 13:14:16MFCのソース
0464デフォルトの名無しさん
2006/02/20(月) 13:31:04まぁ、確かにその通りなんだが、
・スプリッタ自身がリサイズされた時の子ウィンドウの再配置
・上記のときのスプリッタの位置の調整
・3分割もサポートするか。3分割はスプリッタのネストにするか。
・子ウインドウのワクを、どのように(どんなデザインで)描くか。
とか考えながら再利用できるものにしようとすると、えらくめんどくさくなる。
この手のWidget、もう2,3回書いた気がする。
C++から使える、MFCじゃないウィジェットセット、どこかに無料で転がってないもんだろか。
look&feelはMFC互換で。
0465デフォルトの名無しさん
2006/02/20(月) 13:33:55とりあえず>>462さんに従って適当にやってみます。
どうもありがとうございました。
0466デフォルトの名無しさん
2006/02/20(月) 13:49:47【C++】マイナーGUIツールキット
ttp://pc8.2ch.net/test/read.cgi/tech/1065627704/
MFC的つーとwxWidgetあたりか
0467デフォルトの名無しさん
2006/02/20(月) 14:02:350468デフォルトの名無しさん
2006/02/20(月) 14:03:06VC のチュートリアルに載っているでしょ。
0469デフォルトの名無しさん
2006/02/20(月) 14:04:300470デフォルトの名無しさん
2006/02/20(月) 14:12:34何が?
0471デフォルトの名無しさん
2006/02/20(月) 14:16:01人生はリセットボタンはなくても電源ボタンならあります
気が向いたら試してみてください
っ П
0472デフォルトの名無しさん
2006/02/20(月) 14:16:340473デフォルトの名無しさん
2006/02/20(月) 15:23:50WTLを忘れるな。
0474デフォルトの名無しさん
2006/02/20(月) 15:45:22WTLは確かにすばらしいけど、ATLがなければ使えないから。
無料で〜という条件にあたらない。
まあ、Windowsな以上、
VCが、さまざまな点において、最適だとは思うけど。
0475デフォルトの名無しさん
2006/02/20(月) 16:07:220476デフォルトの名無しさん
2006/02/20(月) 16:08:070477デフォルトの名無しさん
2006/02/20(月) 16:37:46ドラが記述してなかったり、時間のかかる処理をスレッド化してなくて、
ウィンドウが真っ白になるようなアプリケーションは組まないで頂きたい。
いまどき、クラスも理解できなくて、C+SDKで生産性の低いコーディング
スタイルしかできないのを棚に上げて、MFCや、WTL,ATLの所為にされても
なぁ。
0478デフォルトの名無しさん
2006/02/20(月) 17:53:500479デフォルトの名無しさん
2006/02/20(月) 17:55:54ATLって無料で配布しているような…
0480デフォルトの名無しさん
2006/02/20(月) 18:22:07あんなクソフレームワーク誰が使うか
自分で作ったほうが数倍軽いわ
0481デフォルトの名無しさん
2006/02/20(月) 18:54:310482デフォルトの名無しさん
2006/02/20(月) 19:33:07論点がずれてます
0483デフォルトの名無しさん
2006/02/20(月) 20:02:010484デフォルトの名無しさん
2006/02/20(月) 20:10:130485デフォルトの名無しさん
2006/02/20(月) 20:13:210486デフォルトの名無しさん
2006/02/20(月) 20:24:360487デフォルトの名無しさん
2006/02/20(月) 20:31:22よろしく頼むぜ >>486 !
0488デフォルトの名無しさん
2006/02/20(月) 20:40:45_MAX_PATH以内確定ってことでプログラムしてるんですが、まずいですか?
0489デフォルトの名無しさん
2006/02/20(月) 20:45:21\\?\
で始まる形式のとき。
詳しくはmsdnみるよろし。
ま、普通は考慮せんでもええけどね。
0490デフォルトの名無しさん
2006/02/20(月) 20:47:26そんなことだからいつまでも安定動作しないんだよ。
0491デフォルトの名無しさん
2006/02/20(月) 20:50:270492デフォルトの名無しさん
2006/02/20(月) 20:59:330493デフォルトの名無しさん
2006/02/20(月) 21:01:50_MAX_PATHはCRTの定数。WindowsSDKはMAX_PATH。
0494デフォルトの名無しさん
2006/02/20(月) 22:26:21_MAX_PATHとMAX_PATHのどっちを使うべきか悩む。
_UNICODEとUNICODEとか・・・。
0495デフォルトの名無しさん
2006/02/20(月) 22:34:02#define _UNICODE_ _UNICODE&&UNICODE
0496デフォルトの名無しさん
2006/02/20(月) 22:38:02#define _UNICODE_ _UNICODE||UNICODE
の間違いじゃないか?
0497デフォルトの名無しさん
2006/02/20(月) 22:52:250498デフォルトの名無しさん
2006/02/20(月) 22:53:48「_UNICODEが定義されているけれどUNICODEが定義されていなければUNICODEを定義する。
UNICODEが定義されているけれど_UNICODEが定義されていなければ_UNICODEを定義する。」
だから混同してもまあいいかという気持ちでいる。
またUNICODE(TCHAR)に関しては、CRTとWinAPIを比べたら
まず間違いなくWinAPIでお世話になることが多いから、UNICODEを俺は使うことにしている。
どうせ<tchar.h>は標準でもなんでもないし。
それに合わせて_MAX_PATHではなくMAX_PATHを使う。
あと_MAX_PATHはVC++独自。標準C/C++に存在するのはFILENAME_MAX。
0499デフォルトの名無しさん
2006/02/20(月) 23:06:03MAX_PATHもWindowsAPIでは標準なものだ。
0500デフォルトの名無しさん
2006/02/21(火) 10:58:32WM_CREATEメッセージでGetLastErrorでエラーコードを調べると
ERROR_FILE_NOT_FOUNDが返ってくるのですが・・・。
これは気にしないで構わないでしょうか?
ちなみにWinXP SP1だと問題なく(ERROR_SUCCESSが返ってくる)、
Win2k SP4で発生しています。
0501デフォルトの名無しさん
2006/02/21(火) 11:10:45そのGetLastErrorの値は意味が無い。
GetLastErrorでエラー情報が取れると明記されたAPIの呼び出し直後のみ、意味がある値が取れる。
0502デフォルトの名無しさん
2006/02/21(火) 12:38:35気にしないことにします。
ありがとうございました。
0503デフォルトの名無しさん
2006/02/21(火) 15:09:29deletefile関数はダメでした。
0504デフォルトの名無しさん
2006/02/21(火) 15:13:03何がやりたいかわからない
何がどうダメなのか書け
0505デフォルトの名無しさん
2006/02/21(火) 15:15:22悲しいな、逝ってよし。
0506デフォルトの名無しさん
2006/02/21(火) 15:16:480507デフォルトの名無しさん
2006/02/21(火) 15:18:41NTなら、MoveFileEx()を使う。
9xなら、WININIT.INIを使う。
詳しくはMSDNのMoveFileExの説明に載っている。
0508デフォルトの名無しさん
2006/02/21(火) 15:20:33deletefileを使用すると、ゴミ箱にはファイルは入らないのですが
ファイル復活ツール(ノートンのゴミ箱)だとしっかり復活できて
しまいます、早い話が復活できないようにファイルを削除したいのです。
0509デフォルトの名無しさん
2006/02/21(火) 15:23:310510デフォルトの名無しさん
2006/02/21(火) 15:24:100511デフォルトの名無しさん
2006/02/21(火) 15:25:01よからぬことを考えてるヨカーン
0512デフォルトの名無しさん
2006/02/21(火) 15:26:43ノートンはいろいろと面白いことをごにょごにょしているからね。
だいたい、ノートンがなくても、結局HDDに残って入れば、復旧できる可能性はあるわけだし。
まずまず信頼性の高い方法
ファイル全体に対して、ランダムな値を何度か書き込んだ後、削除すること。
完全を求める場合
HDDを物理的に破壊する。
0513デフォルトの名無しさん
2006/02/21(火) 16:12:58とりあえず、これに返事した方がいいよ
http://forums.belution.com/ja/vc/000/350/26s.shtml
0514デフォルトの名無しさん
2006/02/21(火) 16:34:21ワロス。少なくとも3か所にマルチポストか。
HM3さんよ、マルチポストはダメですよ。
0515デフォルトの名無しさん
2006/02/21(火) 16:45:51答えて損した
0516デフォルトの名無しさん
2006/02/21(火) 16:47:170517デフォルトの名無しさん
2006/02/21(火) 17:02:50複数のスレに質問することでレイテンシが最小に抑えられるし
複数のレスが得られれば情報の確度も飛躍的に向上する。
忌むべきはレスをもらった後に放置することでありマルチ自体ではないはずだ。
0518デフォルトの名無しさん
2006/02/21(火) 17:03:070519デフォルトの名無しさん
2006/02/21(火) 17:04:14無知にして無恥
0520デフォルトの名無しさん
2006/02/21(火) 17:06:03お前は銀バエの鼻くそより価値が無い
0521デフォルトの名無しさん
2006/02/21(火) 17:17:30まともな後始末できないから結局ダメ。
0522デフォルトの名無しさん
2006/02/21(火) 17:18:390523デフォルトの名無しさん
2006/02/21(火) 17:20:59答える側はたいてい暇なことが多い。
また答えが重複したところでコミュニティの大きさが十分大きければ
その無駄も相対的に0に等しい。
よってマルチの価値は高く、反面実害はほぼ0であることが証明された。
0524デフォルトの名無しさん
2006/02/21(火) 17:22:490525デフォルトの名無しさん
2006/02/21(火) 17:23:174:主観で決め付ける
20:条件の包含関係を間違える
0526デフォルトの名無しさん
2006/02/21(火) 17:27:41これでも読んでろ
ttp://www.ippo.ne.jp/g/53.html
0527デフォルトの名無しさん
2006/02/21(火) 17:29:13裸の自作自演王
0528デフォルトの名無しさん
2006/02/21(火) 17:31:54掲示板、特に質問と冠されたもの質問する側の人間の為に存在する物だ。
そのような主客の転倒した論調には首肯しかねる。
0529デフォルトの名無しさん
2006/02/21(火) 17:32:190530デフォルトの名無しさん
2006/02/21(火) 17:36:07じゃぁ一片首折ってみる?
0531デフォルトの名無しさん
2006/02/21(火) 17:36:24その掲示板に集まる人を自分の質問に答えるための道具のように扱っていると思われても仕方ありません。
そのような扱いを受ければ誰だって気分を害します。
質問への回答は善意から行なわれるもの
0532デフォルトの名無しさん
2006/02/21(火) 17:40:15ま、2chにあるうちは無理だろうなぁ
0533デフォルトの名無しさん
2006/02/21(火) 17:43:48そんなの、513みたいな暇人が指摘しなければ気がつかんよ
0534デフォルトの名無しさん
2006/02/21(火) 17:44:02しかしネットニュースにはクロスポストというシステムがあり、これを使っている限り複数のグループに投稿された記事は同じものとして扱われ、
適切なクライアントソフトを使っていれば何度も同じ記事を読まされるということはなかった。
マルチポストをするなというのはその時代の名残。決して同じ記事を複数の場所に投稿すること自体を禁じるものではない。
0535デフォルトの名無しさん
2006/02/21(火) 17:46:360536デフォルトの名無しさん
2006/02/21(火) 17:48:36そんなことでしか情報の確度とやらを上げられない^^;
>答える側はたいてい暇なことが多い。
回答者は日々勉強した知識で答えているのに、それを「暇」だって?
回答者やってみろよ。まともに答えたことないだろ?
0537デフォルトの名無しさん
2006/02/21(火) 17:57:58それは無駄になる割合が高いと言える。(その割合と言うのがどれくらいかは知りようが無いけれど)
答える人間も答えたくてうずうずしていてあちこちを回っているかもしれない、というより俺がそうだ。
だからマルチしなくてもいいのに、と俺は思っている。
0538デフォルトの名無しさん
2006/02/21(火) 18:01:130539デフォルトの名無しさん
2006/02/21(火) 18:38:12完全という意味がわからないか?
悲しいな、逝ってよし。
508 :デフォルトの名無しさん :2006/02/21(火) 15:20:33
説明不足でした、すみません。
0540デフォルトの名無しさん
2006/02/21(火) 20:56:53最初ウインドウが現れるまでに時間がありました。
ウインドウが現れてからその処理をするように変えたいのですが、
どうしたらいいのでしょうか?
ウインドウが表示されるタイミングっていつですか?
0541デフォルトの名無しさん
2006/02/21(火) 20:59:48ただ、どっちにしろメッセージループを回さないと、ウインドウは固まってしまうけど。
0542デフォルトの名無しさん
2006/02/21(火) 21:03:540543540
2006/02/21(火) 21:06:40以下のようには試してみたんですが、
ダメでした・・・
(ウインドウが表示されるまでに時間がかかる)
なぜなんですかね?
541さんが言っているのは全然別のことですか?
switch (msg) {
case WM_CREATE:
SendMessage(hWnd,WM_PAINT,0,0);
SendMessage(hWnd,WM_USERDEFINE,0,0);
break;
case WM_USERDEFINE:
// 重い処理
break;
case WM_PAINT:
// 描画処理
break;
}
0544デフォルトの名無しさん
2006/02/21(火) 21:11:410545デフォルトの名無しさん
2006/02/21(火) 21:13:57WM_CREATEからWM_PAINTをSendMessageすんなバカ
SendMessageは対象ウィンドウのウィンドウプロシージャを直接呼び出して、
メッセージの処理が終了するまで呼び出し元に返ってこないから、
それだとWM_CREATEに重い処理書いてるのと一緒だ
>>541がわざわざPOSTすると言ってるのに何やってんだよ
ウィンドウが表示されるタイミングは、ShowWindowなどによってウィンドウの表示状態が「表示」にセットされた時
メッセージで知りたいならWM_SHOWWINDOW
0547デフォルトの名無しさん
2006/02/21(火) 21:17:53今の貴方にスレッドは・・・
うーん・・・
0548デフォルトの名無しさん
2006/02/21(火) 21:20:28あとWM_PAINTはSendするものでもPostするものでもない。
InvalidateRectなんかを使え。
0549デフォルトの名無しさん
2006/02/21(火) 21:21:38CreateWindow → ShowWindow → 関数呼び出し
とやった方が今の>>540には優しいかもしらん
0550デフォルトの名無しさん
2006/02/21(火) 21:22:160551540
2006/02/21(火) 21:38:48グローバル変数とか使えなくなりますか?
メモリが共有できないとか?
0552デフォルトの名無しさん
2006/02/21(火) 21:40:010553540
2006/02/21(火) 21:41:21これまでWM_CREATEメッセージ時に呼んでた関数を、
スレッドから呼んだらエラーになるようになったんですけど・・・
あー、なんて質問していいのかもわかんね
0555デフォルトの名無しさん
2006/02/21(火) 22:02:580556デフォルトの名無しさん
2006/02/21(火) 22:13:00WM_CREATE 中の「重い処理」とやらを見直すべきかも知れない。
起動に時間が掛かることを許容すべきかも知れない。
0557デフォルトの名無しさん
2006/02/21(火) 22:30:25両方同時に覚えたら収集付かないぞ。
0558540
2006/02/21(火) 22:59:56グローバル変数のクラスの関数内で、
DdeInitialize()を行うんですが、
それがエラーになってしまうようになりました。
0559デフォルトの名無しさん
2006/02/22(水) 02:40:46どっかの本のコピペだな。
0560デフォルトの名無しさん
2006/02/22(水) 03:54:15親がCloseHandleすれば子と縁が切れる(デタッチ)ところまで理解しました。
デタッチすれば、親を先に終了しても子には全く関係無し(実行されつづける)
つう理解でOKですか?
0561デフォルトの名無しさん
2006/02/22(水) 07:12:15CreateProcessで作られた子供が親の寿命と同期して自動的に
死ぬってことは、ないんじゃないかなー。
0562デフォルトの名無しさん
2006/02/22(水) 10:10:250563デフォルトの名無しさん
2006/02/22(水) 10:23:500564デフォルトの名無しさん
2006/02/22(水) 12:13:55それで大金稼いだりできりゃ多少の救いは有るが
忘れたくても忘れられないまま墓まで付き合いたくねぇよ。
なるべく覚えないでかつうまく捜して使いこなすのがコツだな。
0565デフォルトの名無しさん
2006/02/22(水) 12:14:490566デフォルトの名無しさん
2006/02/22(水) 12:27:390567デフォルトの名無しさん
2006/02/22(水) 12:38:36みなさん、真似しないように。
0568デフォルトの名無しさん
2006/02/22(水) 14:36:32緊急度が高いならいつ返事が来るかもわからず信頼性も不明な掲示板で聞かずに、メーカーに直接聞けや
0569デフォルトの名無しさん
2006/02/22(水) 16:01:25俺。中卒だから関数とか習ってません。
ありがとう。
0570デフォルトの名無しさん
2006/02/22(水) 16:09:180571デフォルトの名無しさん
2006/02/22(水) 17:16:100572^ω^ ◆8vOv.D2p4.
2006/02/22(水) 18:36:480573デフォルトの名無しさん
2006/02/22(水) 18:40:350575デフォルトの名無しさん
2006/02/22(水) 23:58:24_beginthread(Thread, 0, 0);とか
0576デフォルトの名無しさん
2006/02/23(木) 00:26:53そりゃもちろんできる。
0577デフォルトの名無しさん
2006/02/23(木) 01:27:100578デフォルトの名無しさん
2006/02/23(木) 01:37:270579デフォルトの名無しさん
2006/02/23(木) 04:02:350580デフォルトの名無しさん
2006/02/23(木) 09:44:180581デフォルトの名無しさん
2006/02/23(木) 09:49:07ダイアログの中でCreateWindowを使って釦を作成しました。
その釦のタイトルフォントとサイズを変えたいのですが、どうすればいいのか分かりません。
.rcのソースリストからでは簡単に出来るのですが、APIではどうすればいいのでしょう。
ご存知の方、よろしくご教示ください。
0582デフォルトの名無しさん
2006/02/23(木) 10:00:170583デフォルトの名無しさん
2006/02/23(木) 10:04:31あっちで物知らずの池沼がスレ違いの話題をして困っています。
だれか2k以降のSleepの精度が駄目駄目でSleep(1)とSleep(10)が等価な事、
timeBeginPeriodやQueryPerformanceCounterを使えば回避できることを
優しく丁寧に、莫迦に分かるように教えてやって下さい。
0584デフォルトの名無しさん
2006/02/23(木) 10:20:37Sleep(1)を1000回ほど繰り返すロジック書いて実測しろと。
0585デフォルトの名無しさん
2006/02/23(木) 10:42:10早速のご教示、ありがとうございます。
しらべて見ます。
0586デフォルトの名無しさん
2006/02/23(木) 14:50:23Sleepの精度が低い環境があるのは事実。
timeBeginPeriodで精度を上げられるのも事実。
timeBeginPeriodが他のプログラムに影響するのも事実。
他のプログラムが、精度の低いSleep(1)を期待している
もしくは精度が低いとは知らずに利用している場合は問題となる。
Sleepは0以外の値が指定されたときに、
指定された時間"以上"スレッドを中断させる。
0587デフォルトの名無しさん
2006/02/23(木) 14:52:170588デフォルトの名無しさん
2006/02/23(木) 15:17:100589デフォルトの名無しさん
2006/02/23(木) 16:12:410590デフォルトの名無しさん
2006/02/23(木) 16:15:040591デフォルトの名無しさん
2006/02/23(木) 16:29:10答えを見る前に既に作ってた
0592デフォルトの名無しさん
2006/02/23(木) 16:51:31APIはないが、popen("dir <target directory>", "r")とでもして数えてみたらどうだろう。
0593デフォルトの名無しさん
2006/02/23(木) 16:58:19PathIsDirectoryEmptyってのもあるな
0594デフォルトの名無しさん
2006/02/23(木) 17:57:39ちょ、おまwwwwwwwwwwww
その2つをちょっと調べてみます!
0595デフォルトの名無しさん
2006/02/23(木) 18:12:310596デフォルトの名無しさん
2006/02/23(木) 18:17:050597デフォルトの名無しさん
2006/02/23(木) 18:19:490598デフォルトの名無しさん
2006/02/23(木) 18:27:30dir /b の結果を取り込めばOK
0599デフォルトの名無しさん
2006/02/23(木) 18:29:550600デフォルトの名無しさん
2006/02/23(木) 20:30:04ログファイルに書き出したい。
APIフックとか使えば何とかなるんでしょうが、
既存のツールでなんかないですか?
なお、「あるアプリが」という条件がつくとキツい、というなら、
単に、NTFSのファイルリード関数をフックして、
すべてのファイルアクセスをロギングするツールでもOKです。
ただ、データファイルへのアクセスだけではなく、
DLLファイルや関連アプリファイルへのアクセスもロギングできるとうれしいです。
0601デフォルトの名無しさん
2006/02/23(木) 20:40:250602デフォルトの名無しさん
2006/02/23(木) 20:46:45CWinThread *tAcFlash[TCP_SOCK_NO+1];
for( i=0;i<TCP_SOCK_NO+1;i++){
tAcFlash[i]=AfxBeginThread(AcceptSock,this,THREAD_PRIORITY_NORMAL,NULL,NULL,NULL);
if(tAcFlash[i] == NULL){
Ercount++;
sprintf(wkText,"%d番目のスレッドを開始できませんでした",i);
AddLog(wkText);
}else{
count++;
Sleep(5);
}
}
みたいな感じでスレッドを立ち上げていくんですが、
1992個でスレッドの開始ができなくなります。
マシンはCeleron 666MHz mem256MBとDuron1.2GHz mem128MBのマシンの
両方で実験してみましたけど、時間が違うだけで立ち上がる数は一緒でした。
スレッドの最大数って何によって制限されるのでしょうか?
また、スレッドのエラーの取得方法はどうすればよいでしょうか?
0603デフォルトの名無しさん
2006/02/23(木) 20:57:50イジワルいわずにおしえてよ。
つーか、このスレがスレ違いならどこがいーんだYO!。
0605デフォルトの名無しさん
2006/02/23(木) 21:05:590606デフォルトの名無しさん
2006/02/23(木) 21:12:40http://www.sysinternals.com/Utilities/Filemon.html
0607デフォルトの名無しさん
2006/02/23(木) 21:13:42まずそんなにスレッドを起こして何をするのかはっきりしる
返答によっては当局に通報する
0608デフォルトの名無しさん
2006/02/23(木) 21:36:23普通はOSのバージョンで変わるもの
ハンドル数とかもな
0609デフォルトの名無しさん
2006/02/23(木) 21:47:12失せろよ精神障害
0610デフォルトの名無しさん
2006/02/23(木) 21:56:07そんなコンパイラはありません
0611デフォルトの名無しさん
2006/02/23(木) 22:18:36こちらへどうぞ
Visual Studio 2005スレ Part11
http://pc8.2ch.net/test/read.cgi/tech/1140652366/
0612デフォルトの名無しさん
2006/02/23(木) 22:19:50デバッガでプロセスにアタッチ
0613602
2006/02/23(木) 22:29:12>>607
ソケットのコネクトをポーリングで待ち受けてます。
1ポートでマルチコネクトを実現する場合、スレッドで立ち上げるものじゃないんでしょうか?
>>608
つ〜ことは、OSが起動しているスレッドやハンドルを減らさないと、
スレッドでマルチコネクトは1992までしか確率できないって事でしょうか?orz
windowsでマルチコネクトを実現する手法ってどんななんだろ?
0614デフォルトの名無しさん
2006/02/23(木) 22:37:44それは同時接続数が少ないときのやり方。
同時接続数を大きく取りたいのなら、IOCP or 1つのスレッド当り32個くらいの
ソケットを同時に処理するように作ると世ろし。
0615デフォルトの名無しさん
2006/02/23(木) 22:40:56基本的にはスレッドでいいと思うが、入り制御をしないと
死ぬほど接続しに来たときにそういうこと(スレッド生成不可)になっちゃうね
最大数を超える分はエラーで弾くか、キューイングするかかな
0616615
2006/02/23(木) 22:42:530617602
2006/02/23(木) 22:47:56IOCP調べてみた。難しそうだけど頑張ってみる
ありがとう
>>615
条件が2000コネクトで、サンプルで動いていると言われて貰ったプログラムが
1992個以降のスレッド作成でこけてたわけです。
(サンプルは、エラー出力してないからわからなかったんだと思う)
Linuxの場合は、無駄は多いけどワーッとプロセス立ち上げて対処できた気がする
とりあえず、ありがとう
0618デフォルトの名無しさん
2006/02/23(木) 22:51:16I/O完了ポート なら個数制限に悩まない。
でも、切断でバグらないようにするのが大変だったりもする。
0619デフォルトの名無しさん
2006/02/23(木) 23:10:43Windowsでもできるがな
0620602
2006/02/23(木) 23:18:28IOCP難しい。とりあえず、サンプルプログラム探してる。
>>619
プロセスなら数に制限ないのか〜。
どうしても駄目ならそっちに逃げます。
0621デフォルトの名無しさん
2006/02/23(木) 23:20:23スタックサイズの制限はかけてる?
スレッドひとつに1MB割り付けば、それで2GBいく。
仮想メモリの上限が2GB.
0622602
2006/02/23(木) 23:31:06前に調べてかけた気がするけど、現状、どこでかけるか忘れて試せない。
仮想メモリの上限が2Gとしても、同じプログラムで物理メモリが違うマシンで実行して
同じ数しか起動できないのは、別の問題な希ガス。
0623デフォルトの名無しさん
2006/02/23(木) 23:36:41現状で、スレッドを何十何百と作るのは間違っているだろ。
>>620
IO完了ポートについて解説した、ただで読める文章は、ほとんどない。
たしかCodeProjectに、サンプルコードがあったはず。。
それと、SysInternalsに、IO完了ポートの詳細な説明がある。
まあ、基本的にはスレッドプーリングという考えだから、
Advanced Windowsも多少は参考になるかと。
0624デフォルトの名無しさん
2006/02/23(木) 23:41:11ふつーの32bitプロセスが使えるメモリ量は2GB−α。
0625デフォルトの名無しさん
2006/02/24(金) 00:04:37そのうち2GBはシステムが予約しているのでアプリ側で使用可能なのは2GB。
ただし、Windows Serverでは設定によってアプリが使用可能なアドレス空間を3GBまで拡張可能。
これとは別に、物理メモリ搭載量+ページファイルの上限サイズでシステム全体の使用可能なメモリ量が決定される。
0626602
2006/02/24(金) 00:18:43それも調べて見ます。
とりあえず間違いなのはわかったけど、サンプルの間違いを指摘するなら、
原因は別かなと思っただけです。
win32マルチスレッドプログラミングって本にもあるらしいから、
土日にでも本屋にいってみます。
>>624
なるほど。そういう事ですか。納得。
windows2000の仮想メモリは可変だったと思うけど、
最大値を超えて変更されたりしますか?
しないなら、32bitの壁以前に、物理メモリ+仮想メモリの限界が
32bitの壁以前に来るので、原因ではなさそう。
0627602
2006/02/24(金) 00:22:23通常であれば、メモリ128M、仮想メモリ最大値の設定256Mであれば
2G+128M+256Mがシステム最大のメモリ使用量と考えてOKですか?
ん〜、なんか難しいです。
単純に、メモリ不足のダイアログが出てないから全然疑っていませんでした。
0628デフォルトの名無しさん
2006/02/24(金) 00:23:59っ[とりあえず仮想メモリを仲間にしてあげて]
0629デフォルトの名無しさん
2006/02/24(金) 00:26:190630デフォルトの名無しさん
2006/02/24(金) 00:29:18どのようにすればいいかご教示ください。
0631630
2006/02/24(金) 00:42:31でできました。すみません、ありがとうございました。
0632デフォルトの名無しさん
2006/02/24(金) 00:54:10( ´・∀・`)へーthx
0633デフォルトの名無しさん
2006/02/24(金) 04:28:05それだと1088が上限だしねぇ。
0634デフォルトの名無しさん
2006/02/24(金) 07:27:15GetLastErrorの値は?
0635デフォルトの名無しさん
2006/02/24(金) 07:56:20そのアドレス空間はアドレスの空間であって実際のメモリではない。
0636デフォルトの名無しさん
2006/02/24(金) 10:34:16窓を開けただけで1800KBほどのメモリを食っているのですが、
メモリを削っていく方法ってないですか?
Delphiで書いていてメモリを食うので、今はCで書いているのですが、
実行ファイルサイズは小さくなったのですが、メモリ使用量は
あまり小さくなりませんでした。
このパラメータをこれにしたら小さくなるというようなのがあれば、
教えてください。
0637デフォルトの名無しさん
2006/02/24(金) 10:48:10画面がちらつかない方法ってないですか?
画面上の更新したい部分だけ更新とかってできないものでしょうか?
0638デフォルトの名無しさん
2006/02/24(金) 11:01:01~~~~~~
0639デフォルトの名無しさん
2006/02/24(金) 11:05:35SetProcessWorkingSetSizeを試してみては?
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpdnaskdr/htm/gui45.asp
0640デフォルトの名無しさん
2006/02/24(金) 11:06:410641デフォルトの名無しさん
2006/02/24(金) 11:08:41もう一つ質問。
タイマーのイベントでタイマーの間隔以上の処理をしたらどうなりますか?
例えば、
1000ms間隔でタイマーを作っといて、
そのタイマーイベントで3000msの処理をした時など。
やりたいことは、
3000ms処理→1000ms休む→3000ms処理→1000ms休む・・・
メッセージ処理内でSleepなんか使うとメッセージ処理できなくなりますよね?
スレッドを作ったりするしかないですか?
0642デフォルトの名無しさん
2006/02/24(金) 11:41:21新たなメッセージがキューに積まれないようになっている。
長時間占有するような処理を書くなら普通は別のスレッドを使う。
0643デフォルトの名無しさん
2006/02/24(金) 11:45:49ありがとうございます。
スレッドを使ってやりたいのですが、
スレッド内でDDE通信を開始すると、
そこで登録した割り込みが入って来ないんです・・・
スタックが別であることが問題となっているのでしょうか?
0644デフォルトの名無しさん
2006/02/24(金) 11:47:460645デフォルトの名無しさん
2006/02/24(金) 11:55:520646デフォルトの名無しさん
2006/02/24(金) 12:06:00すでにあるアプリと通信するためにDDE通信を使う必要があるんです。
>>645
どういう意味でしょうか?
スレッド内でDDE通信登録
↓
ホットリンクなので値が変わると割り込みがくるはずが来ない
0647デフォルトの名無しさん
2006/02/24(金) 12:10:420648デフォルトの名無しさん
2006/02/24(金) 12:12:57DDE はウィンドウメッセージベースでの通信なので、
ウィンドウをCreateWindow したスレッドでしか使えません。
ウィンドウを持つほうのスレッド(UIスレッドなどと言う)側で
DDE の処理を行って、ワーカスレッドではそういうことは
しないようにしましょう。
っていうかDDEごと別スレッドにもっていったんじゃ、
結局時間のかかる処理中にDDEに反応できなくなって、
DDE ブロードキャスト使ってる他のアプリが迷惑する。
0649デフォルトの名無しさん
2006/02/24(金) 12:22:12わかりづらくてすいません。
結局やりたいことは、DDE通信だけなんです。
ただTOPICが300ほどでITEMもできれば30000ほど登録したいと思ってます。
(これはDDE通信する相手のアプリの仕様です)
時間のかかる処理っていうのは、
DDE通信のための接続処理なんです。
だいたい20秒ほどかかってしまうので、
それをどうしたらスマートなのか悩んでいます。
0650デフォルトの名無しさん
2006/02/24(金) 12:24:06ユーザメッセージとして処理するのは何の処理ですか?
割り込みで行う処理内でメッセージを投げて、
本来行いたい処理をユーザメッセージ処理内で行うという意味ですか?
0651デフォルトの名無しさん
2006/02/24(金) 14:05:27完全に出遅れてしまった…
CreateThread
http://www.microsoft.com/JAPAN/developer/library/jpwinpf/_win32_createthread.htm
> 解説
> 1 つのプロセスが作成できるスレッドの数は(ry
0652640
2006/02/24(金) 14:19:35これってどんなもんでしょ?
0653デフォルトの名無しさん
2006/02/24(金) 14:24:31IMEを一切使わないのなら、ImmDisableIME。
0654636
2006/02/24(金) 15:18:53SetProcessWorkingSetSizeは有用ですね!!
400Kくらいで安定するようになりました!
ありがとうございます。
>>653
IME使わないだけで60%くらいにできました!
ありがとうございます。
0655デフォルトの名無しさん
2006/02/24(金) 16:21:24これを、ワンクッション置いてから処理するようにしたいのだけど、可能ですか?
0656デフォルトの名無しさん
2006/02/24(金) 16:23:07何やりたいのかわからん
とりあえずsendmessageを内部で呼ぶラッパー関数でも作ってみたら?
0657655
2006/02/24(金) 16:47:45今考えてるのは、SendMessageから受けたリクエストを即座に処理をするのではなくて、バッファに貯めて処理をせずにreturn
タイマーで定期的にバッファを確認し、貯まってるようだとそれを処理する。
って感じで実装を考えてますけど、そのような事をやってるくれるAPIは無い物かと思いまして。
SendMessagePoolのようなものが無いかと。。。
0658655
2006/02/24(金) 16:49:51でいいのかな?
0659デフォルトの名無しさん
2006/02/24(金) 16:50:57そんなAPIは内と思う。自分でキューを作れ。
0660デフォルトの名無しさん
2006/02/24(金) 17:01:40postmessage()使っても良いけど、その代わりポインタへ読み書きするようなメッセージは全てできなくなる
そのためのsendmessage()なんだから
0661655
2006/02/24(金) 17:28:48そう、今それを質問しようとしたんですけど、パラメータでポインターを渡したとき誰がdeleteしてくれるのかと。。。
BSTRとか、ComPtrで渡せば勝手に解放してくれるのかしら?
0662デフォルトの名無しさん
2006/02/24(金) 18:14:15> その代わりポインタへ読み書きするようなメッセージは全てできなくなる
それはプロセスを跨いだ時だろ?
>>661
> パラメータでポインターを渡したとき誰がdeleteしてくれるのかと。。。
メモリ管理はプログラマの責任で!
0663デフォルトの名無しさん
2006/02/24(金) 18:22:23枠の色とは、XPより前のでいう、明るい灰色の部分(デフォルト)の事です
GetSysColor(COLOR_3DSHADOW)
だと思っていたのですが、今やってみたら微妙に違う感じで
0664デフォルトの名無しさん
2006/02/24(金) 18:33:55だいたい出来たんですが、メニューの外枠(3D)が邪魔だと思うようになりました。
これをどうにか消したいんですが、調べた所サンプルが見つかりませんでした。
もともと外枠のないポップアップメニュー(フラットなの)を作れたら一番良いのですが、ポップアップメニューのHWNDからGetWindowDCできれば何とかなりそうだと思いました。
ポップアップメニューのHWNDはどうやって取得したら良いでしょうか。
実験として、右クリックした時にGetCursorPosして、その時のPOINT構造体を元にWindowFromPointしてもだめでした。
CreatePopupMenuした後のHMENUからHWNDを逆引きするとか、そんなイメージで考えています。
よろしくお願いします。
0665デフォルトの名無しさん
2006/02/24(金) 18:37:41COLOR_3DSHADOW
~~~~~~~~~
明るいわけないじゃん。
0666デフォルトの名無しさん
2006/02/24(金) 18:38:33とりあえず落ち着け
0667デフォルトの名無しさん
2006/02/24(金) 18:52:12>>663
最も明るい色 COLOR_3DHILIGHT
ちょっと明るい色 COLOR_3DLIGHT
0668デフォルトの名無しさん
2006/02/24(金) 18:54:59元々そういうことをするようにはできてないんで、1から自分でポップアップメニュー互換のウィンドウ作ったほうがはやい。
0669デフォルトの名無しさん
2006/02/24(金) 19:29:27XPではメニューをオーナードローするときのDCはオフスクリーンDCで、
α付き透過ウィンドウとしてスクリーンに表示されます。
(メニューの影とふわっと出てくる視覚効果のため)。
メニューのHWNDが得られたからそのGetDCして何でも描けるかというと
それはかなり難しい。
0670デフォルトの名無しさん
2006/02/24(金) 19:31:00そういう情報はどこから手に入れてくるのか希望します
0671デフォルトの名無しさん
2006/02/24(金) 19:38:28日本語でお願いします
0672デフォルトの名無しさん
2006/02/24(金) 19:42:50↓
Such information is hoped for though doesn't know where to obtain it.
↓
もっとも情報が望まれているそのようなものは、どこでそれを得るかを知りません。
0673デフォルトの名無しさん
2006/02/24(金) 19:49:15↓
As for such the one that information is hoped for, it doesn't know where to obtain it most.
↓
情報が期待されるくらいのものに関して、それは、どこでそれを最も得るかを知りません。
0674デフォルトの名無しさん
2006/02/24(金) 20:16:270675デフォルトの名無しさん
2006/02/24(金) 20:19:210676デフォルトの名無しさん
2006/02/24(金) 20:20:260677デフォルトの名無しさん
2006/02/24(金) 20:23:26一番バカっぽく見えるお
0678デフォルトの名無しさん
2006/02/24(金) 20:24:56↓
Only foolishness
↓
愚かだけ
↓
只愚笨
↓
ただ馬鹿なだけ
0679663
2006/02/24(金) 20:30:30失礼コピペミス。正しくは GetSysColor(COLOR_3DFACE) でした
COLOR_3DLIGHTと同じ色みたいです
GetSysColor(COLOR_3DFACE)で取った値を、そのままDIBのメモリに
入れていたら微妙に変だったのですが、ビットのRとGを入れ替えたら上手く行きました
スレ汚し失礼
0680デフォルトの名無しさん
2006/02/24(金) 20:50:57ttp://www.dumpalink.com/media/1140251493/Most_Patient_Guy_In_The_World
↑>>676
0681664
2006/02/24(金) 22:06:22回答ありがとうございました。
0682デフォルトの名無しさん
2006/02/24(金) 23:31:48~~~~~~~
どう見ても表面の色です、本当にありがとう御座いました
0683デフォルトの名無しさん
2006/02/25(土) 02:40:340684デフォルトの名無しさん
2006/02/25(土) 07:21:04Platform SDKなんですが、Win98用(?)とかWin2000用(?)はもう落とせないんでしょうか?
あと、昔はPlatform SDKの各部分が必要なものだけ落とせるようになっていたと思うのですが、もうそういうことはないのでしょうか?(というか各CABの内容リストをどこかに書いておいてくれればいいのに・・・)
0685デフォルトの名無しさん
2006/02/25(土) 08:51:51SDKのヘッダファイルを覗いてみれば解決することでしょう。
>あと、昔はPlatform SDKの各部分が必要なものだけ落とせるようになっていたと思うのですが、
ダウンロードした後に自分が必用なものを抽出すれば解決することでしょう。
0686デフォルトの名無しさん
2006/02/25(土) 08:56:33WINVERなどを適切に設定してヘッダをインクルードすれば平気。
0687デフォルトの名無しさん
2006/02/25(土) 13:32:07マウスの左ボタンを押しても押さなくても、0が返ってきます。
WindowsMeのマシンが2台あり、両方で試してみたのですが、そうなりました。
0688687
2006/02/25(土) 13:51:16GetKeyStateを呼び出していたのが原因のようです。
0689デフォルトの名無しさん
2006/02/25(土) 17:09:56グローバル変数にしちゃっていいかしら?
0690デフォルトの名無しさん
2006/02/25(土) 17:20:190691デフォルトの名無しさん
2006/02/25(土) 17:57:130692デフォルトの名無しさん
2006/02/25(土) 17:59:110693デフォルトの名無しさん
2006/02/25(土) 18:36:58それぞれが自分のメモリ確保ルーチンとか使っても大丈夫なのでしょうか?
開放は、確保したDLL なりが行います(別のランタイムで開放したりはしません)。
bcc32 5.6.4 と、VC++ Express Edition で試したのですが、特に問題が無いようでした。
ランタイムのつくりによるのでしょうか?
それとも、Win32 にそういうことを可能にする仕組みなり規約なりがあるのでしょうか?
または適切なスレへの誘導をお願いします・・・
0694デフォルトの名無しさん
2006/02/25(土) 18:59:45に表示したいのですがどうやればいいですか?
次のようにやってみましたが、駄目でした。表示したいテキストはSTLのリストに入れてます。
case WM_PAINT:
hdc = BeginPaint(hwnd, &ps);
if(!lst.empty()) {
p = lst.begin();
TextOut(hdc, 1, 1, p->title, lstrlen(p->title));
}
EndPaint(hwnd, &ps);
break;
同じコードでWM_PAINTでなく、WM_COMMANDからメニューボタンが押されたら表示
みたいにすればうまくいったのですが、どこがまずいかお願いします。
0695デフォルトの名無しさん
2006/02/25(土) 19:03:280696デフォルトの名無しさん
2006/02/25(土) 19:10:52大丈夫。つーかそれがダメだったら、kernel32.dllとかuser32.dllとか使えないじゃん。
0697デフォルトの名無しさん
2006/02/25(土) 19:22:500698694
2006/02/25(土) 20:00:56WM_COMMANDから表示したものも、最小化、最小化から復帰で
消えてしまうのでWM_PAINT内が機能してないみたいなんですが。。
UpdateWindow()は呼んでます。
0699デフォルトの名無しさん
2006/02/25(土) 20:12:51InvalidateRect()
0700デフォルトの名無しさん
2006/02/25(土) 20:21:080701694
2006/02/25(土) 20:28:49仮想ウィンドウに書き込んで、WM_PAINT内でコピーにしたら出来ました。
WM_PAINT内でTextOut()って駄目なんですか。
0702デフォルトの名無しさん
2006/02/25(土) 20:35:18その中で、InternetConnect関数を使用しているのですが、
第二引数が実際に存在してないサーバー名でも、
関数が失敗せずに値を返してしまいます。
エラー処理はできないのでしょうか?
0703デフォルトの名無しさん
2006/02/25(土) 20:41:06>WM_PAINT内でTextOut()って駄目なんですか。
だめなわけ無いだろ。
おまいさんの処理がおかしいだけだよ。
0704デフォルトの名無しさん
2006/02/25(土) 20:43:12内容が↓に酷似しているのは気のせいか
ttp://hpcgi1.nifty.com/MADIA/Vcbbs/wwwlng.cgi?print+200509/05090002.txt
0705デフォルトの名無しさん
2006/02/25(土) 20:43:42WM_PAINT時はメモリDC→デバイスDCへのBitBltしか呼ばんと思うけどね
0706デフォルトの名無しさん
2006/02/25(土) 20:48:390707デフォルトの名無しさん
2006/02/25(土) 21:04:57ってレイモンドが言ってた記憶がある。
0708デフォルトの名無しさん
2006/02/25(土) 21:10:31酷使してますね。
解決方法がいまいちよくわからないです。
結局、何か送らないことにはわからないってことですか??
0709デフォルトの名無しさん
2006/02/25(土) 21:19:07GUIプログラミングの定石だお
0711デフォルトの名無しさん
2006/02/25(土) 21:36:50直接接続の場合です。
試しにProxy経由でもやってみましたが、
結果は同じで、ハンドルに値がかえってきました。
0712デフォルトの名無しさん
2006/02/25(土) 21:39:33なるべくデバイスDCに直接描画しないのは当然だよ。
応答速度が速いアプリはみなメモリDC使ってるはず。
最近はVNCとかRDP経由で使う場合も増えてきたし、
データ転送量低減のためにも余計な書き換えはしない。
Officeとかダイアログ系アプリでよくあるけど直接描画していく
類のソフトは、通信でブロック転送される際に更新矩形が
正常に転送されず、イメージを取りこぼす場合が多い。
RDPソフト側のバグなのかもしれないけど
BitBltが安定してるのは確か。
0713デフォルトの名無しさん
2006/02/25(土) 21:43:27重要なのはそこではない
0714デフォルトの名無しさん
2006/02/25(土) 21:56:47おれは706じゃないが、なんでもかんでも「メモリDC->BitBlt」というのには反対。
InvalidateRect()で必要なところだけ無効化し、WM_PAINTで必要なところだけ
再描画できるロジックが組める内容の場合には、そのほうがメモリDCより高速。
いまでこそCPUが早くなってビデオカードのアクセラレータなんて2Dではあまり
気にしなくなったが、メモリDCだとこれが効かない。
メモリDCが良いかどうかは、ケースバイケースでしょ。
0716デフォルトの名無しさん
2006/02/25(土) 22:08:15世の中のどれだけのアプリケーションが「まとも」かどうかわからない。
0717デフォルトの名無しさん
2006/02/25(土) 22:16:13入力を与えたいです。
たとえば、「K」を入力すると、10ms間隔で順番にA,B,Cとそのソフトに
入力するなどです。
Win32APIを駆使してこのようなプログラムを作成する場合、
どのような方針、アルゴリズムで進めていけば良いでしょうか??
0718デフォルトの名無しさん
2006/02/25(土) 22:19:170719デフォルトの名無しさん
2006/02/25(土) 22:25:480720717
2006/02/25(土) 22:28:47はい、そんなかんじです。
「K」を受けてタイマーで順番に「A」、「B」、「C」・・・と処理していけばイイとは思うのですが、
それを他のアプリケーションにどうやって渡せば良いか検討がつきません。
0721デフォルトの名無しさん
2006/02/25(土) 22:37:33WM_KEYDOWN
WM_KEYUP
0722デフォルトの名無しさん
2006/02/25(土) 22:48:35SendInput
0723デフォルトの名無しさん
2006/02/25(土) 23:09:590725デフォルトの名無しさん
2006/02/26(日) 11:46:48いろいろ探してみるとASPIやらなんやら出てきましたが、
肝心な情報にヒットしなくて困ってます
0726デフォルトの名無しさん
2006/02/26(日) 11:54:07ありがとう。
0727デフォルトの名無しさん
2006/02/26(日) 11:57:20単純にあけたかったら、MCI使えばいい。
set cdaudio door open
こんなんだっけ?
0728デフォルトの名無しさん
2006/02/26(日) 12:05:180729デフォルトの名無しさん
2006/02/26(日) 12:07:44Winampのスキンのように、ウインドウの外見を変える方法を教えてください
0730デフォルトの名無しさん
2006/02/26(日) 12:12:42自前実装してください。
ただ、しっかりと作らないと、
Windowsが用意してくれているGUIより貧弱で、
使い勝手が悪いものが出来上がります。
Winampもそのひとつ。
はい、次の人
0731デフォルトの名無しさん
2006/02/26(日) 12:27:10DeviceIoControl
0732デフォルトの名無しさん
2006/02/26(日) 12:28:02WS_POPUPで、縁やタイトルの部分は画像を使うっていう方法でいいのですか?
0733デフォルトの名無しさん
2006/02/26(日) 13:04:39ケースバイケース。好きなようにやれ。
0734デフォルトの名無しさん
2006/02/26(日) 13:14:38これはCreateCompatibleDC()関数なんかでメモリデバイスコンテキストを作成して、そこに描画してBitBlt()で転送
という形でいいんでしょうか
0735デフォルトの名無しさん
2006/02/26(日) 13:24:40訊く前に自分なりにやってみて玉砕しろ。経験だ。
0736デフォルトの名無しさん
2006/02/26(日) 13:32:171つだけキーワードをあげよう
CreateDIBSection
0737デフォルトの名無しさん
2006/02/26(日) 13:32:250738デフォルトの名無しさん
2006/02/26(日) 13:34:13便利だけど。
0739デフォルトの名無しさん
2006/02/26(日) 13:34:480740デフォルトの名無しさん
2006/02/26(日) 13:42:44そんなことどこにも書いてないか。
たんにGDIの描画をバッファしたいだけなら、CreateCompatibleBitmapでいい。
ただ、これはメモリDC使って作成するとモノクロビットマップを作るから要注意。
俺はつい最近それでハマった。
0741デフォルトの名無しさん
2006/02/26(日) 15:01:39memDC = CreateCompatibleDC(hdc);
として
例えばFillRect(memDC , &rect , (HBRUSH)GetStockObject(BLACK_BRUSH));
としてhdcへBitBltしてみたのですが何故か転送されません
ただしHBITMAPを取得してSelectObject(memDC, hBmp);と選択して転送するとそのビットマップがきちんとhdcに転送されているようです。(描画された)
もう何なんでしょうか(´・ω・`)
0742デフォルトの名無しさん
2006/02/26(日) 15:10:560743デフォルトの名無しさん
2006/02/26(日) 15:20:06試しに500x500のHBITMAPを作成してSelectObjectでメモリデバイスコンテキスト(以下memDC)に選択させてから
memDCにFillRectで矩形を描画してみたら上手くいきました。
しかしなんか無理やり感があるのでもっと調べたいと思います
すみませんでした
0744デフォルトの名無しさん
2006/02/26(日) 15:21:03それは間違い。
1x1、モノクロのビットマップがある。
転送されていないんじゃなくて、気付かないだけ。
>>741
適切な大きさ、色深度のビットマップを作成し、Selectしろ。
0745デフォルトの名無しさん
2006/02/26(日) 15:23:52わかりました、わざわざありがとうございます
0746デフォルトの名無しさん
2006/02/26(日) 16:16:33左クリック・右クリックを検出して、その座標に図形を描画してます。
クリックされる毎にこれまで描画した位置の図形は消されます。
作れたのはいいんですが、改めて考えるとと、どうして図形が消されるのか
分かりません……。
確かにクリック時一発目のInvalidateRect()では図形のある位置に再描画要求
をかけてますが、「消える」のはおかしいような……。
二回目のInvalidateRect()でクリック位置に描画されるのは納得なんですが。
下らない質問ですいません。
0747デフォルトの名無しさん
2006/02/26(日) 16:34:05つ InvalidateRectは、即座に再描画されるわけではない
0748デフォルトの名無しさん
2006/02/26(日) 16:35:25WM_PAINTで描かないから消える。
0749デフォルトの名無しさん
2006/02/26(日) 16:46:520750デフォルトの名無しさん
2006/02/26(日) 16:58:030751デフォルトの名無しさん
2006/02/26(日) 17:03:410752デフォルトの名無しさん
2006/02/26(日) 18:01:03(LoadImageのpngバージョン)がありましたら教えてください。
使用コンパイラは、VC6、BCCです。
0753デフォルトの名無しさん
2006/02/26(日) 18:06:580754デフォルトの名無しさん
2006/02/26(日) 18:07:420755752
2006/02/26(日) 18:22:33imgctl.dllは知っていたんですが、
外部ファイル名専用みたいなので、
リソースの場合はどうすればいいのかなと。
pnglibを調べてみます。
0756デフォルトの名無しさん
2006/02/26(日) 18:25:17それはともかく、gdiplusというものもある。
0757752
2006/02/26(日) 18:31:370758デフォルトの名無しさん
2006/02/26(日) 18:33:200759デフォルトの名無しさん
2006/02/26(日) 18:40:240760デフォルトの名無しさん
2006/02/26(日) 18:41:19kwsk
0761752
2006/02/26(日) 19:06:54imgctlを作るのにlibpngを利用したみたいですので、
多機能なimgctlにその機能がないという事は、
元のlibpngにもなかったらからとも考えられる。
0762デフォルトの名無しさん
2006/02/26(日) 19:09:100763デフォルトの名無しさん
2006/02/26(日) 19:14:50むりです(><)
0764デフォルトの名無しさん
2006/02/26(日) 19:19:55直接読み取る関数が無いかだけで、出来ないと決めつけるのは無能にも程がある。
0765デフォルトの名無しさん
2006/02/26(日) 19:20:14さっさと手を動かせ。
0766752
2006/02/26(日) 19:21:46俺の頭のスペックではむりです(><)
0767デフォルトの名無しさん
2006/02/26(日) 19:22:05ttp://www.kcrt.net/program/uselibpng_read.html
0770デフォルトの名無しさん
2006/02/26(日) 20:09:50SPY++とかウィンドウエクスプローラ(WINMAP.EXE)のように
画面上のオブジェクトを細かく追っかけていくには
どのようなAPIを用いればいいでしょうか?
何がしたいかと言うと、例えばヤフーメッセンジャーとかの
Internet Explorer_serveクラスのrコンポーネントを弄りたいのです。
よろしくお願いします。
0771デフォルトの名無しさん
2006/02/26(日) 20:22:520772デフォルトの名無しさん
2006/02/26(日) 20:30:490773デフォルトの名無しさん
2006/02/26(日) 20:33:080774デフォルトの名無しさん
2006/02/26(日) 20:44:010775デフォルトの名無しさん
2006/02/26(日) 21:10:58具体的には、ゲーム等のexeが起動したら、それを強制終了させるものです。
そこで、質問なのですが
どうすればプロセスを特定できるでしょうか?
よろしくお願いいたします。
0776デフォルトの名無しさん
2006/02/26(日) 21:33:580777デフォルトの名無しさん
2006/02/26(日) 21:39:15ポリシーで起動禁止にする手もある
0778760
2006/02/26(日) 21:51:23なるほど、「libpngで」リソースから読めるわけじゃないのね。
#それなら余りに当たり前だ。
##てっきり、元質が>752だからリソースから直接読めるのかと思っちまったぜ。
0779デフォルトの名無しさん
2006/02/26(日) 21:58:23っ[WMI使ってみる?]
WinAPIなのにWMIをすすめる俺の凄さ
0780デフォルトの名無しさん
2006/02/26(日) 22:14:540781デフォルトの名無しさん
2006/02/26(日) 22:52:19InvalidateRect()の最後の引数をTRUEにするとWM_PAINTが呼ばれた
瞬間に内容を消去するからじゃない?ここをFALSEにしてみては。
0782デフォルトの名無しさん
2006/02/26(日) 22:56:10C/C++ スレから誘導されて着ました。
フォントのビットデータを取得しようとしています。
以下のコードは、まずデータ取得に必要なサイズを調べているところですが、
GetGlyphOutline に失敗します。
UINT uChar = 'a';
GLYPHMETRICS gm;
uChar &= 0x0000ffff;
MAT2 mat = {{0,1}, {0,0}, {0,0}, {0,1}};
// フォントを取得
HDC hDC = CreateCompatibleDC(0);
DWORD size = GetGlyphOutline(hDC, uChar, GGO_GRAY8_BITMAP, &gm, 0, NULL, &mat);
if (size == GDI_ERROR)
return false; // ここで失敗
GetGlyphOutline を呼び出す直前に各変数の値を調べてみましたが、特に異常な値は見当たりません。
にも関わらず、GetGlyphOutline がエラーを返してくれます。
何が原因か分からないでしょうか。
よろしくお願いします。
0783デフォルトの名無しさん
2006/02/26(日) 23:00:07ウィンドウを動かさない、かつ他のウィンドウを被せない、って事ならそれでもいいだろうけど…
0784デフォルトの名無しさん
2006/02/26(日) 23:03:26フォントを設定しないと駄目なんじゃない?
0786デフォルトの名無しさん
2006/02/26(日) 23:08:24ウィンドウの削除をしてもプロセスが残ってしいます。
WinMainからメイン処理用関数を呼んでその中で
永久ループを回しているのですが、ループの中で
while(1){
(いろんな処理)
if (::PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) {
::TranslateMessage(&msg);
::DispatchMessage(&msg);
}
}
としてWINDOWSメッセージを受け取れるようにして
処理を行っています。
コールバックの部分での終了処理は
case WM_CLOSE:
DestroyWindow(hWnd);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
としています。
プロセスが残る原因がわからないのですが、永久ループを抜ける
処理を何か入れてあげなければならないのでしょうか?
原因がわかる方いらっしゃいましたらお願いいたします。
0787デフォルトの名無しさん
2006/02/26(日) 23:09:420788デフォルトの名無しさん
2006/02/26(日) 23:16:36いえ、前の図形は消したいので、現状の動きが実現したい動きでいいんです。
ただ、クリックが検知された時、一回目のInvalidateRect()のredraw_rectの
値は前にクリックした場所で、実際に○や□があるところ。
ここでWM_PAINTが呼び出されても、消すような処理はしてないように思えて……。
ちなみに第3引数をFALSEにしても同じで、前までの位置の図形はきえます。
>>747では非同期ということですが、だから「消える」という理由になっている
のでしょうか……。
混乱してきました。NULLで全画面描画にすれば悩むこともなかったのに……。
0789デフォルトの名無しさん
2006/02/26(日) 23:27:08やはり抜ける処理がいりますよね?
PostQuitMessage(0); でそこらへんも勝手に抜けて
終わらせてくれるのかなぁと思ったのですが・・・。
永久ループのとこのPeekMessageでWM_CLOSEが着てたら
抜けるように良いのかな…。
0790・∀・)っ-○●◎- ◆Pu/ODYSSEY
NGNGてか、なんでそこで「いろいろな処理」やる必要あるんだ
0791デフォルトの名無しさん
2006/02/26(日) 23:33:39第3引数って片方のInvalidateRectだけFALSEにしたとか?
0792デフォルトの名無しさん
2006/02/26(日) 23:37:21WinMainでやる場合には、PeekMessageを使わずにGetMessageを使って
while (GetMessage(....
とするのが簡単。
PeekMessageを使う場合には、WM_QUITが来たらループを抜ける。
0793デフォルトの名無しさん
2006/02/27(月) 00:02:57モノクロビットマップなのに、第3パラメータでグレースケールの指定をしているからかもしれん。
試してみんとわからんけど。
0794デフォルトの名無しさん
2006/02/27(月) 00:03:20WM_ERASEBKGND
0795デフォルトの名無しさん
2006/02/27(月) 00:09:00ゲームのメインループでここでタイマーの計算とかして
一定時間起きにInvalidateRectして画面更新、とかやって
いるのです。
>>793
PeekMessageのあとにmsg.messageの内容見てbreak;
させるようにしたらちゃんと終了できるようになりました。
どうもありがとうございました。
0796デフォルトの名無しさん
2006/02/27(月) 00:46:05伝統的なPM_NOREMOVE + GetMessageも薦めてみる
while (::PeekMessage(&msg,NULL,0,0,PM_NOREMOVE))
{
int gmr = ::GetMessage(&msg,NULL,0,0);
if ((gmr == 0) || (gmr == -1))
return msg.wParam;
::TranslateMessage(&msg);
::DispatchMessage(&msg);
}
0797746
2006/02/27(月) 01:57:58なるほど……!
私の疑問を解決するのに、その一言で必要十分でした。
InvalidateRect()を行うと、WM_ERASEBKGND→WM_PAINTの順番でメッセージが
来るんですね。そのメッセージを掴んでなかったからDefWindowProc()にて
背景塗りつぶしが行われて……。
勉強になりました。感謝感謝です。
0798デフォルトの名無しさん
2006/02/27(月) 03:01:13「未解決の外部シンボル_imp_MessageBoxA@16が関数_WinMain@16で参照されました。」
とエラーがでたのですが、解決方法がわかりません・・・
winmainの中は
{MessageBox(NULL , TEXT("message") , TEXT("message") , MB_OK);} だけです。
何がいけないのでしょうか?
ちなみに、使っているのはVisualStadio2005でc++です。
0799デフォルトの名無しさん
2006/02/27(月) 03:12:400800デフォルトの名無しさん
2006/02/27(月) 03:27:232. カーソルキーを離すと滑らかにスクロールストップ(現在位置が目標位置に漸近するように)、
3. カーソルキーを短く押して離すと1コマ分スムーズにスクロールしてストップ、
ということをやりたくて以下のようにしてみたんですが、
概ね実現できたものの、3のときに例えばカーソルキーを連打すると、
「連打した回数」滑らかスクロール&ストップを繰り返してウザイデス。
このキーリピートのような振る舞いをなくしたいのですが、いい知恵ないでしょうか。
case WM_TIMER: {
switch (wp) {
case TIMER_KEYACCEPT: { // 例えば100msec間隔
if (HIBYTE(GetAsyncKeyState(VK_UP))) scroll(VK_UP); // カーソルキーを押し続けるとスクロール
else if (HIBYTE(GetAsyncKeyState(VK_DOWN))) scroll(VK_DOWN);
break;
}
}
}
case WM_KEYUP: {
switch (wp) {
case VK_UP:
case VK_DOWN: {
while (!smooth_stop(wp)) { // ←カーソルキーを離したら滑らかにスクロールストップ
InvalidateRect(hwnd, 0, true); // 「少し移動して描画」を繰り返す。移動幅は段々小さく。
UpdateWindow(hwnd);
}
}
}
}
0801デフォルトの名無しさん
2006/02/27(月) 03:46:24うわ〜こりゃひどいわ。直すべきところはいろいろあるけど、
まずすぐ質問すればいいやという根性を直すのが最初だな。
・・・MSDNでMessageBoxを調べてみるんだね。十分に調べて、
それでわからなかったら、おまいさんにはまだ早すぎたってことだ。
0802デフォルトの名無しさん
2006/02/27(月) 03:56:40スクロール停止処理後に
while( PeekMessage(&msgtemp,hwnd,WM_KEYFIRST,WM_KEYLAST,PM_REMOVE) );
でキーメッセージを握りつぶすとか。
0803800
2006/02/27(月) 04:49:07どうもありがとう。
そういう風にするのって普通にアリなんでしょうか(ひょっとして定石!?)
そもそもWM_KEYUPが続けて呼ばれる理由がよく分からないので
その辺はっきりさせる必要がある気もしつつ。
0804デフォルトの名無しさん
2006/02/27(月) 05:22:19滑らか処理を始めるかどうかを知るためのタイマーと、
滑らか処理そのもののタイマー。
タイマーコールバック内でGetAsyncKeyState()を使い
キーアップされたかどうか調べてキーアップしているようならタイマー削除。
0805デフォルトの名無しさん
2006/02/27(月) 06:10:21キーを押して離したらその回数だけメッセージが来る。
処理してなかったら後から当然のように呼ばれるだけで。
0807デフォルトの名無しさん
2006/02/27(月) 12:57:46メッセージがキューに溜まっているからじゃないかな?
>>806, 798
見ているかわからんけど、MSDNにはどんなライブラリが必要か書いてあったよね?
過去にC++でコードを書いたことがあれば、SDKを使ったことなくても、あんな感じのエラーが
どういう状態ででるか経験するはず。VS使わずエディタとコマンドラインからコンパイルしながら
練習してごらん。
0808デフォルトの名無しさん
2006/02/27(月) 13:12:060809デフォルトの名無しさん
2006/02/27(月) 13:24:42厨房LV5以上 → 知ったか厨
0810デフォルトの名無しさん
2006/02/27(月) 13:37:190811デフォルトの名無しさん
2006/02/27(月) 18:17:17ネタじゃないんですが…。
よろしくお願いします。
WSHとかじゃうまく掴んないんでAPI使って捕まえたいんですよ。
0812デフォルトの名無しさん
2006/02/27(月) 18:22:39もっと有益なレスが得られるかもしれない。
0813デフォルトの名無しさん
2006/02/27(月) 18:36:09誰がネタって言ったよ
弄るなって言ってんだ
0814デフォルトの名無しさん
2006/02/27(月) 18:37:27>>770見ても意味がよくわからんかったんだけど、
・EnumChildWindows, GetWindowなんかで子ウィンドウをなめていく
・GetClassName, GetWindowLongなんかでそのウィンドウの情報を取得
ってことか????
0815デフォルトの名無しさん
2006/02/27(月) 19:35:06OSはwindowsXP、開発環境はwindows2000かXPで、
コンパイラはVC++6かボーランドCです。
ググって見たけど、うまい検索ワードがわからなくなて見つからず、
WSAStartup()した後に、gethostbyname()して、
strcut hostentのh_addr_listを直接書き換えるのも駄目だったので。
よろしくお願いいたします。
0816デフォルトの名無しさん
2006/02/27(月) 19:42:50//ローカルかグr−バルか改めて書き込まなくてもいいからな、吊れよ
0817デフォルトの名無しさん
2006/02/27(月) 19:45:11今月最高のバカ
0818デフォルトの名無しさん
2006/02/27(月) 19:47:070819デフォルトの名無しさん
2006/02/27(月) 19:48:320820デフォルトの名無しさん
2006/02/27(月) 20:00:08ネットワークアプリの経験はあまりないんだけど、ググッて5分以内に
目的の関数が見つかったんだけど・・・
それ用のAPIがあったよ。Aから始まるAPIで。ググれば見つかるから、
もうちょっと頑張ってみたら?特別なキーワードじゃなくて見つかるよ。
0821デフォルトの名無しさん
2006/02/27(月) 20:05:480822デフォルトの名無しさん
2006/02/27(月) 20:08:50たまにメモリリークを起こすのは仕様ですか?
0823デフォルトの名無しさん
2006/02/27(月) 20:41:43知ったかは環境持ってなくても聞きかじりの知識で首を突っ込んでくるぞ
0824デフォルトの名無しさん
2006/02/27(月) 21:06:200825デフォルトの名無しさん
2006/02/27(月) 21:06:58どうしようもないでしね
0826デフォルトの名無しさん
2006/02/27(月) 21:08:110827デフォルトの名無しさん
2006/02/27(月) 21:09:290828デフォルトの名無しさん
2006/02/27(月) 21:10:190829デフォルトの名無しさん
2006/02/27(月) 21:15:220830デフォルトの名無しさん
2006/02/27(月) 21:26:590831デフォルトの名無しさん
2006/02/27(月) 21:39:420832デフォルトの名無しさん
2006/02/27(月) 21:55:120833デフォルトの名無しさん
2006/02/27(月) 22:02:12ありがとうございました。
検索の仕方が下手なのか、結構頑張ったつもりなのですが・・・
windowsとIPアドレスと設定で検索かけると、
普通にネットワークのプロパティから設定しているものが沢山かかったので、
それを見ているだけで時間を食ってました。
APIとかwin32とかwinsockとかを検索ワードに入れればよかったんですね
0834820
2006/02/27(月) 22:18:08そっかー自力で見つかった方がいいかなって思ったんだけど、
うまくいかなかったら仕方なし。検索は慣れなのかな?
使ったキーワードは、"windows api ipアドレス 変更"そのまんま。
2ページ目に「ソフトでPCのIPを変更〜」みたいなのが出てくるから、そっから辿ればよし。
0835デフォルトの名無しさん
2006/02/27(月) 22:21:320836デフォルトの名無しさん
2006/02/27(月) 22:31:160837デフォルトの名無しさん
2006/02/27(月) 22:58:260838デフォルトの名無しさん
2006/02/27(月) 23:00:500839デフォルトの名無しさん
2006/02/28(火) 01:30:10ttp://www.geekpage.jp/programming/iphlpapi/
ttp://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=24302&forum=11&start=8&12
0840デフォルトの名無しさん
2006/02/28(火) 01:38:060841デフォルトの名無しさん
2006/02/28(火) 04:46:41サンクス。それやってみます。
0842デフォルトの名無しさん
2006/02/28(火) 10:40:11APIでサポートがありますか?
よろしくお願いします。
0843デフォルトの名無しさん
2006/02/28(火) 10:45:390844デフォルトの名無しさん
2006/02/28(火) 10:55:33MoveFileEx()
次回起動時、という意味でリセットを使っているのならな。
0845842
2006/02/28(火) 11:21:12レスありがとうございます。
>次回起動時、という意味でリセットを使っているのならな。
そうでした、説明不足ですいません。
MoveFileEx()
まさにこれでした、ありがとうございます。
0846デフォルトの名無しさん
2006/02/28(火) 11:24:00本当に説明不足だと思っての? 脳が足りないだけだろ 氏ねよ
0847デフォルトの名無しさん
2006/02/28(火) 12:09:51CreateMutex(NULL,TRUE,"unique");
こんな感じでmutexを作成後、エラーなどでmutexを解放しないでプロセスが終了した場合、mutexはどなってしまうんでしょう?
0848デフォルトの名無しさん
2006/02/28(火) 12:23:09一度プロセス無理矢理終了させた後もう一度作り直してみれば分かる。
0849デフォルトの名無しさん
2006/02/28(火) 12:39:11解放されると思うけど、試してみるのが早い
0850デフォルトの名無しさん
2006/02/28(火) 13:47:07なぜそんなに怒っているんだ・・
0851デフォルトの名無しさん
2006/02/28(火) 14:34:24ある無料アプリケーションのオマケ機能で、アプリケーションの主機能でできたデータを CD/DVD に焼く機能を付けようとしています。
CD/DVD 双方書き込めるドライブの情報を取得しようとすると、CD のほうしか取得できていないようです (実際、CD でしか焼けません)。
「CD のほうしか」というのは、ドライブの ID のうしろに「CD-R/RW」と付くのです。
市販の焼きアプリケーションなどでは、同じ ID のうしろに「CD-R/RW」が付く場合と「DVD-RAM」が付く場合とあるので、
恐らく別々に取得できるのではないかと憶測しています。
憶測を含め、間違いがあったら、忌憚なく訂正してください。
お願いします。
0852デフォルトの名無しさん
2006/02/28(火) 14:51:48オマケ機能なら、CD-Rに限定しておく方が吉。
0853デフォルトの名無しさん
2006/02/28(火) 14:52:28int A;
〜
ReadProcessMemory( hWnd , (LPCVOID)0x... , A , 4 , &Read );
printf( "%d" , A );
これだとうまく数字が表示されます。しかし
int A;
char buf[256];
〜
ReadProcessMemory( hWnd , (LPCVOID)0x... , A , 4 , &Read );
wsprintf(buf , "%d" , A);
MessageBox(NULL , buf , "" , MB_OK);
で表示させてやると正常な値が出力されません。
何か根本的なところで詰まっているのでしょうか・・・。
0854デフォルトの名無しさん
2006/02/28(火) 14:55:44ReadProcessMemory( hWnd , (LPCVOID)0x... , &A , 4 , &Read );
です。スレ汚し申し訳ない。
0855デフォルトの名無しさん
2006/02/28(火) 14:58:17読み取ったメモリ内容を表示させたいのだったら、
どちらもうまく表示されないと思うけど。
>ReadProcessMemory( hWnd , (LPCVOID)0x... , A , 4 , &Read );
hWnd ってのも何だか変だし、A じゃなくて &A としないとダメだし。
0856デフォルトの名無しさん
2006/02/28(火) 15:26:41〜の部分はGetWindowThreadProcessIdとOpenProcessでハンドルは取得しています。
前者のソースではうまく表示されているのですが・・・。後者のソースを
char A[4];
int B;
char buf[256];
ReadProcessMemory( hWnd , (LPCVOID)0x... , A , 4 , &Read );
memcpy(&B , A , sizeof(int));
wsprintf(buf , "%d" , B);
MessageBox(NULL , buf , "" , MB_OK);
にしてもダメでした。
0857デフォルトの名無しさん
2006/02/28(火) 15:29:330858デフォルトの名無しさん
2006/02/28(火) 15:34:09全く同じプログラムで、前者の
>printf( "%d" , A );
を
>char buf[256];
>wsprintf(buf , "%d" , A);
>MessageBox(NULL , buf , "" , MB_OK);
にすると表示が変ということですか?
他所のプロセスなので実際に値が違っている可能性も
あると思いますが、そこは確認しましたか?
0859デフォルトの名無しさん
2006/02/28(火) 15:40:190860デフォルトの名無しさん
2006/02/28(火) 16:27:07カーネルによって、自動的にミューテックスオブジェクトの参照カウンタがデクリメントされる。
ほかに、"unique"という名前のミューテックスオブジェクトを参照しているプロセスがない場合、
自動的に破棄される。
CloseHandle()せずにプロセスが終了すると、リークするんじゃないか、
などという心配は無用。
0861デフォルトの名無しさん
2006/02/28(火) 16:29:32下記のソースでハンドルの取得にミスがありました。
プロセスハンドルhWndと書いていることからお察し下さいorz お騒がせしました。
0862デフォルトの名無しさん
2006/02/28(火) 18:03:50ワラタ。
0863デフォルトの名無しさん
2006/02/28(火) 18:07:49>wsprintf使うならTCHAR buf[256]にしとけ。
wsprintf使うならwchar_t buf[256]にしとけ。
_stprintf使うならTCHAR buf[256]にしとけ。
なのでは?
0864デフォルトの名無しさん
2006/02/28(火) 18:12:32wsprintfはWindowsAPIだ
0865デフォルトの名無しさん
2006/02/28(火) 18:13:17MSが安直にwsprintfなんて*API*を作ってしまったせいだ。
0866デフォルトの名無しさん
2006/02/28(火) 18:15:41int wsprintf(
LPTSTR lpOut, // 出力バッファ
0867デフォルトの名無しさん
2006/02/28(火) 18:21:220868デフォルトの名無しさん
2006/02/28(火) 19:53:05質問は次の内容になります、何方か情報ありましたらよろしくお願いします。
> VBやJScriptのようCOMを#importなどを使わずに動的に呼び出したいんですけど、例えば次のように、
>
> VBの場合、
> Set fso = CreateObject("Scripting.FileSystemObject")
>
> JScriptの場合、
> fso = new ActiveXObject("Scripting.FileSystemObject");
>
> 方法ご存じでしたらよろしくお願いします。
0869デフォルトの名無しさん
2006/02/28(火) 20:07:350870デフォルトの名無しさん
2006/02/28(火) 20:46:370871デフォルトの名無しさん
2006/02/28(火) 22:07:05COMのディスパッチインターフェースとオートメーションを勉強してきてね。
0872デフォルトの名無しさん
2006/02/28(火) 22:14:31#import でも多分>>868が必要としている程度には動的だから、
おとなしく #import を使うのが良いと思う。
0873デフォルトの名無しさん
2006/02/28(火) 22:34:02もちろんそれ以上に動的になんでもやれる方法はある。(>>871)
しかしあまりにも面倒すぎてわけわからないから、
868が混乱をきたさないよう敢えて皆触れずにいるということに気付け。
0874デフォルトの名無しさん
2006/02/28(火) 22:35:200875デフォルトの名無しさん
2006/02/28(火) 22:38:50IDispatchは簡単でよいけど、C++ が VB に負けるのはシャクだから
ここはやはりITypeInfoからインタフェイス情報を得てアセンブラコード経由で
vtableインタフェイスで呼び出すべき。
ん?VBのvtable呼び出しはearly bindingだったか・・・
0876デフォルトの名無しさん
2006/02/28(火) 22:53:19こ、こうかな・・・
ifstream vbs("com.vbs");
vbs << "Set fso = CreateObject(\"Scripting.FileSystemObject\")" << endl;
vbs.close();
system("com.vbs");
CoInitializeとかCoCreateInstanceとかのあたりかな・・・
0877デフォルトの名無しさん
2006/02/28(火) 22:53:47ステータスバーに説明が表示されるアプリが良くありますが、
あれってどうやって実装してるんでしょうか?
0878デフォルトの名無しさん
2006/02/28(火) 22:57:47IDispatch経由でしかメソッド・プロパティを公開しないdispinterfaceというものもある。
0879デフォルトの名無しさん
2006/02/28(火) 23:00:46ツールチップ
0880デフォルトの名無しさん
2006/02/28(火) 23:04:57SB_SETTEXT
かなあ…
0881デフォルトの名無しさん
2006/02/28(火) 23:21:33いえ、それはまた別のものです、はい
>>880
SB_SETTEXTでステータスバーに文字列を出す部分は分かるのですが、
問題は、そのタイミングをどうやって知るのかわからなくて
WM_MENUSELECTはポップアップメニューを開いた時しか来ませんでしたし・・・
NOTIFYメッセージも数有りすぎて良く分からないのが現状です・・・orz
0882デフォルトの名無しさん
2006/02/28(火) 23:38:19>WM_MENUSELECTはポップアップメニューを開いた時しか来ませんでしたし・・・
普通のコマンドメニューでもセパレータでも来ますよ。
前に使ったことあるし、今Spy++でも確認しますた。
0883デフォルトの名無しさん
2006/02/28(火) 23:55:28MFCのソース見れ
0884800
2006/03/01(水) 00:03:18結局以下のようにして解決ということにしました。
どうも〜。
TIMER部分
if (HIBYTE(GetAsyncKeyState(VK_UP))) scroll(VK_UP), flag=false;
KEYUP部分
if (flag==false) {
while (!smooth_stop(wp)) {
...
}
}
flag=true;
0885・∀・)っ-○●◎- ◆Pu/ODYSSEY
2006/03/01(水) 00:03:46WTLでも使えるがソースよく読んだことないや
0886デフォルトの名無しさん
2006/03/01(水) 00:11:24MenuHelpっていうAPIで全部勝手にやってくれる。
0887デフォルトの名無しさん
2006/03/01(水) 01:00:53マウスやキーボードの入力を監視して
必要なら自分で処理してその入力を握りつぶすような処理は
どうやってやればいいんでしょうか?
0888デフォルトの名無しさん
2006/03/01(水) 01:01:102003スタンダード版には付いてたぞ。
0889デフォルトの名無しさん
2006/03/01(水) 01:30:15同じEXE複数同時に実行しても同じ値しかでないんだけど。気のせいかな。
ソースはこんな感じです。
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow )
{
char A[10];
sprintf(A,"%d",hInstance);
MessageBox(NULL,A,"インスタンスハンドルの値",MB_OK);
return 0;
}
0890デフォルトの名無しさん
2006/03/01(水) 01:31:550891デフォルトの名無しさん
2006/03/01(水) 01:45:59Win32ではインスタンスハンドル変わらなくていいんですか?
売ってた本には
「インスタンスハンドルはOSがそれぞれのインスタンスを識別するために〜」
的なことが書いてあったんですが。
0892デフォルトの名無しさん
2006/03/01(水) 02:24:19フック
0893デフォルトの名無しさん
2006/03/01(水) 02:27:34エントリーポイントがWinMainではなくmainの場合
どうしてもDOS窓が出現してしまいます。
もしmainの場合このDOS窓を出現させる事をさせなくする手法はありますか?
0894デフォルトの名無しさん
2006/03/01(水) 02:33:13自分のポインタを突っ込む方法が使われてたと思うのですが、
64bit版では使えなくなってしまいました。
他の何か良いアイデアで解決された方居ませんか?
0895デフォルトの名無しさん
2006/03/01(水) 02:38:00すまんが意味がまったく分からん
もうすこし説明を頼む
0896デフォルトの名無しさん
2006/03/01(水) 02:42:10Set/GetProp
0897・∀・)っ-○●◎- ◆Pu/ODYSSEY
2006/03/01(水) 02:45:26コンソール上で動くからコンソールアプリケーションなの。
素直にWinMainで始まるアプリ使いましょう。
mainの前処理に、コンソールウィンドウを作成・割り付ける処理が入ってるから
それをどうにかするのは無理。
ただ、あとで隠す方法はあるにはある。
ただし、こんなことやったら大目玉食らうぜ
ShowWindow(GetForegroundWindow() , HW_HIDE);
まさに邪道
0899・∀・)っ-○●◎- ◆Pu/ODYSSEY
2006/03/01(水) 02:48:09ShowWindow(GetForegroundWindow() , SW_HIDE);
こんなことやったら、自分でコマンドプロンプト開いてコマンドラインから呼び出した時に
コンソール画面が消えちゃうからね。
だから、絶対やらないの。
0900デフォルトの名無しさん
2006/03/01(水) 02:48:43はぁそうですか
0901デフォルトの名無しさん
2006/03/01(水) 02:52:47はいはい、ワロスワロス
0902デフォルトの名無しさん
2006/03/01(水) 03:12:40インスタンスハンドルってのは、実はモジュールのベースアドレスを指す
ポインタそのもの。
Win16では全てのプロセスが同じメモリ空間で動いていたから、各プロセスは
お互いに重なり合わないように別のアドレスにロードされていたので、
プロセスごとにインスタンスハンドルが異なっていた。
Win32ではプロセスは自分専用のメモリ空間を持っていて、プロセスごとに
リロケート(再配置)する必要がないので、通常は実行可能ファイルに記載された
ベースアドレス通りに読み込まれる。
インスタンスハンドルはプロセス内でのモジュールを識別するためのもので、
異なるプロセス間でのやり取りに使われる物ではないので、同じプロセス内で
一意であれば問題ない。
同じ実行ファイルの別インスタンスを識別するには、プロセスハンドルを使う。
(プロセスハンドルまで必要になるのは稀で通常はウィンドウハンドルで十分)
0903デフォルトの名無しさん
2006/03/01(水) 08:28:52あれ、そうですか・・・?
やり方悪かったかなぁ・・・
もう一度やってみます
>>886
MenuHelpは、Inset表示にしてても勝手にプレーンな表示されちゃうんでちょっと・・・
0904デフォルトの名無しさん
2006/03/01(水) 12:39:01うろ覚えだけど
WM_NCHITTEST
じゃねーの?
これのHITTESTCODEみる
自前処理ならって前提
0905デフォルトの名無しさん
2006/03/01(水) 12:41:53俺は使えなくなったなんて話、聞いたことがない。
0906デフォルトの名無しさん
2006/03/01(水) 12:50:35せめてFreeConsole()を使おうぜ……。
0907デフォルトの名無しさん
2006/03/01(水) 12:51:11堀江メール事件のような事件を起こすんだろうな。
0908デフォルトの名無しさん
2006/03/01(水) 12:54:49BCCでできるかは知らんけどsubsystemとエントリーポイントが
別々に指定できるのなら可能。
0909デフォルトの名無しさん
2006/03/01(水) 13:59:04フックを欠けたのですが、この場合、まずプロセスの本来のメッセージ処理ルーチンを通ってから、
フックした GetMessageProc に来るので正しいでしょうか?
だとしたら、この順番を逆に、まず自前の GetMessageProc を通るようにすることはできますか?
0910デフォルトの名無しさん
2006/03/01(水) 13:59:07ILINK32を使い、C0X32.OBJを渡しておきながら/aaを指定すればよい。
BCC32からは無理だと思う。
こういうことは本当はBCCのスレへ行け。
0911デフォルトの名無しさん
2006/03/01(水) 14:02:08それ、逆
0912デフォルトの名無しさん
2006/03/01(水) 14:14:52コンソールアプリじゃなくできないのか?
てかランタイムやローダの問題と思うのだが…。
WinMainはやっぱ不自然。
0913デフォルトの名無しさん
2006/03/01(水) 14:17:50だからできるってば。
0914デフォルトの名無しさん
2006/03/01(水) 14:53:16> WinMainはやっぱ不自然。
そうは言ってもな、おとなしくWindowsの流儀に従っておくが吉。
argc,argvが使いたいというのなら、VCの場合は、それと同じ
内容を持つグローバル変数がある。(__argc,__argvだっけ?)
BCは知らん。
0915251
2006/03/01(水) 14:54:14もう一度だけ書き込みます。
何か分かることがあればご教示願います。
> アクティブウインドウにキー入力を送信するのに
> SendInput や keybd_event などがありますが、
> 一部のウインドウに対しては全く動作してくれません。
> SendMessage WM_KeyDownなどでもだめでした。
> (おそらくDirectInputで入力を拾っているためだと思います)
> しかし、JoyToKeyというフリーソフトではそのようなウインドウに対しても
> キー入力を送信できているので、なにかしらいい方法があるはずです。
> どのような方法を使えばキー入力を行うことができると思いますか?
0916デフォルトの名無しさん
2006/03/01(水) 14:56:48JoyToKeyの作者に聞くという方法はどうだろう。
0917デフォルトの名無しさん
2006/03/01(水) 15:05:30嫌ならそうMSに要望でも出しとけば?
他人の作ったもの使っておいてその流儀が嫌だとか言われてもな
0918デフォルトの名無しさん
2006/03/01(水) 15:19:08それね、
JoyToKeyは、keybd_eventを使っているが、
まあ、これからはそういうコードを書くべきではない。
SendInput()を使うべき。
で、DirectInputとかはどうすればいいのかって話だけど。
KEYBDINPUT構造体の説明をしっかり読んでいれば、簡単にわかるはず。
まあ、ここは自分も苦労したしね。
答えは、スキャンコードで指定すること。
Windowsで、普通使うのは、仮想キーコードだから、
スキャンコードに変換してやらなければならない。
直接やってもいいけど、MapVirtualKey()というAPIがある。
0919デフォルトの名無しさん
2006/03/01(水) 15:22:52え? JoyToKey は keyboard mini driver 経由じゃないのか?
0920918
2006/03/01(水) 15:26:00昔、ごにょごにょして調べてみたら、keybd_event()使っていた。
で、引数に渡している値が変だったから、調べてみたら、スキャンコード使っていた。
keybd_event()でスキャンコード指定ができるというのは、
確かMSDNには書かれていないんだけどね。
ちゃんと明示されている、SendInput()を使うのか吉。
0921デフォルトの名無しさん
2006/03/01(水) 15:29:26おお thx
>keybd_event()でスキャンコード指定ができるというのは、
>確かMSDNには書かれていないんだけどね。
平気でスキャンコードおくってたけど…
確かに載って無いなw (bScan が NOT USE になってるし)
明示されてる SendInput() を使うべきだろうね
0922デフォルトの名無しさん
2006/03/01(水) 15:33:34そういえば、MapVirtualKey()ってカーソルキーが上手く
変換できなかった記憶があるけど、なんでだろう?
だいぶ前の記憶なんて曖昧だが、たしかVK_RIGHT等を渡すと
テンキーのコードが返ってきた気がする。
0923デフォルトの名無しさん
2006/03/01(水) 16:18:09NumLock との兼ね合いで 多対1対応 になるからじゃね?
0924デフォルトの名無しさん
2006/03/01(水) 16:28:230925デフォルトの名無しさん
2006/03/01(水) 16:40:190926915
2006/03/01(水) 16:55:47頂いた情報を元にコードを組んでみたのですが、万事解決とまでは行きませんでした。
delphiで申し訳ないですけど、下記のように書いたところ
一般のプログラムではキー入力が行われますが、DirectInputっぽいソフトでは
うまく動きません。何かおかしいでしょうか?
procedure TForm1.Timer1Timer(Sender: TObject);
var
i: Integer;
a: array[0..1] of TInput;
begin
for i := 0 to 1 do begin
a[i].Itype := INPUT_KEYBOARD;
a[i].ki.wVk := Ord('C'); // SCANCODE使用時は無視される
a[i].ki.wScan := MapVirtualKey(Ord('C'), 0);
a[i].ki.dwFlags := $08; //KEYEVENTF_SCANCODE
if i = 1 then a[i].ki.dwFlags := $08 or $02; //KEYEVENTF_SCANCODE or KEYEVENTF_KEYUP
a[i].ki.time := 0;
a[i].ki.dwExtraInfo := GetMessageExtraInfo();
end;
SendInput(2, a[0], SizeOf(a[0]));
end;
0927894
2006/03/01(水) 17:34:49>>907
ポインタでもハンドルでもない、GWLP_USERDATAの値が64ビットに拡張されたという情報は見つけられませんでした。
もし情報があるなら教えて頂けると助かります。
0928デフォルトの名無しさん
2006/03/01(水) 17:44:51ttp://windowssdk.msdn.microsoft.com/library/default.asp?url=/library/en-us/win64/win64/rules_for_using_pointers.asp
0929デフォルトの名無しさん
2006/03/01(水) 18:07:34なんのためのGet/SetWindowLong「Ptr」だと思っている。
0930918
2006/03/01(水) 18:13:02よりによってDel厨か……。
個人的に、PASCALの文法は、あまり好きになれないな。
文法をよく知らないから、間違っているのかもしれないが……
>if i = 1 then a[i].ki.dwFlags := $08 or $02; //KEYEVENTF_SCANCODE or KEYEVENTF_KEYUP
これが気になる。
これひょっとして、
if (i == 1)
a[i].ki.dwFlags = KEYEVENTF_SCANCODE ;
else
a[i].ki.dwFlags = KEYEVENTF_KEYUP ;
こういう意味なんじゃないのか?
だったら、動かないのは当然だが。
>dwFlags
>Specifies various aspects of a keystroke. This member can be certain *combinations* of the following values.
キーをあげるときは、こうする。
dwFlags = KEYEVENTF_SCANCODE | KEYEVENTF_KEYUP ;
それからもひとつ。
キーを押し下げてから、あげるまでに、ディレイが必要なこともある。
特に、ゲームなどだと、キーが押し下げられた時間などが、必要なことが多いし。
0931デフォルトの名無しさん
2006/03/01(水) 18:16:260932デフォルトの名無しさん
2006/03/01(水) 18:17:23ああ、間違ってる
0933918
2006/03/01(水) 18:20:57キーの押し下げ押し上げの間に、適当にディレイをはさんでもダメだったら、わからない。
0934デフォルトの名無しさん
2006/03/01(水) 19:22:42SendInputの戻り値は?
0935デフォルトの名無しさん
2006/03/01(水) 19:31:01間違えたときには誤ろうよ。
0936デフォルトの名無しさん
2006/03/01(水) 19:43:270937926
2006/03/01(水) 20:59:43SendInputの戻り値は 0 なので、「ほかのスレッドによって入力が
すでにブロックされている」らしいですが、具体的な意味が分かりません。
適当にDelayを入れてみたり、得意じゃないけどC++で
書き直してみたりしたんですが、やはり思ったようには動作していないです。
GetLastErrorを呼ぶと 127 が返って来ていたので
エラーメッセージを取得しようとFormatMessageの使い方を
調べていたというのが今の状況です。
0938デフォルトの名無しさん
2006/03/01(水) 21:16:46あれ、逆でしたか。実際にDLLつくって試したところ、
本来来ているはずのWM_ACTIVATEやWM_KILLFOCUSなどが全然捕まらなかったので、
てっきり元のプログラムが吸い取っているのかと・・。
なにか勘違いしているようなので、調べ直してみます。
ありがとうございました。
0939デフォルトの名無しさん
2006/03/01(水) 21:19:28winerror.h
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/randz/protocol/winerror_h__part_1.asp
0940デフォルトの名無しさん
2006/03/01(水) 21:36:02127 : 指定されたプロシージャが見つかりません。
0941デフォルトの名無しさん
2006/03/01(水) 23:01:46>本来来ているはずのWM_ACTIVATEやWM_KILLFOCUSなどが全然捕まらなかった
それはメッセージがsendされるか、postされるかの違いかと思われ。
確か、WH_GETMESSAGEはpostされるメッセージを補足する
ようだった気がする。
0942デフォルトの名無しさん
2006/03/01(水) 23:14:50適当なメッセージをPostMessageし、そのメッセージ処理で目的ウィンドウをサブクラス化。
じゃなかったか?
0943デフォルトの名無しさん
2006/03/02(木) 02:27:56今はPeekMessageでメッセージループを回して、メッセージがないときに
GetAsyncKeyStateでキーボードの状態をチェックしていますが、
この方法ではCPUにかなり負荷がかかってしまいます。
適当にSleepさせればある程度押さえられるのですが、この場合
キーボードの状態をチェックし損なう確率が高くなってしまいます。
何かいい方法はありませんでしょうか?
0944デフォルトの名無しさん
2006/03/02(木) 02:35:590945デフォルトの名無しさん
2006/03/02(木) 02:54:240946デフォルトの名無しさん
2006/03/02(木) 03:23:19子ウインドウを新規で作るときに最大化しようと重いmdicreate.styleにWS_MAXIMIZEを指定しました。
そうすると、メニュー書き換えのときに子ウインドウのアイコンが2個表示されたりします。
メニューの書き換えは子ウインドウプロシージャにWM_MDIACTIVATEがきたら
WM_MDISETMENUで書き換えてます。
なにか解決策はないでしょうか?
0947デフォルトの名無しさん
2006/03/02(木) 03:28:430948デフォルトの名無しさん
2006/03/02(木) 03:58:18ランチャがアクティブでないときにもキーを受け付けたいなら
RegisterHotKey()を使うといいかと。
0949デフォルトの名無しさん
2006/03/02(木) 12:44:28キーフックと言う手も
0950デフォルトの名無しさん
2006/03/02(木) 13:01:33ありがとうございます!
それならなんか出来そうな気がするのでやってみます
>>949
キーフック、聞いたこないですけどとりあえずググって試してみようと思います。。
0951デフォルトの名無しさん
2006/03/02(木) 19:48:17回避方法はありませんか?
よろしくお願いします。
0952デフォルトの名無しさん
2006/03/02(木) 19:57:130953デフォルトの名無しさん
2006/03/02(木) 20:05:46んでもって、ページファイルの設定をなしにするんだ。
0954デフォルトの名無しさん
2006/03/02(木) 21:17:30その辺の回避策として、アプリが死んでもちゃんとデタッチできる様にDLLじゃないとできなくなってるんでしょうか?
0955デフォルトの名無しさん
2006/03/02(木) 21:42:350956デフォルトの名無しさん
2006/03/02(木) 22:09:590957デフォルトの名無しさん
2006/03/02(木) 22:14:45ユーザの側でLUNAが有効無効にかかわらず、GetBkColor()が白を返すです。
どうして表示されてるダイアログは灰色なのに白が返ってくるですか?
0958デフォルトの名無しさん
2006/03/02(木) 22:17:07LARGE_INTEGER
0959デフォルトの名無しさん
2006/03/02(木) 22:45:380960デフォルトの名無しさん
2006/03/02(木) 22:58:270961デフォルトの名無しさん
2006/03/02(木) 23:35:58あと書き忘れてましたが、プログラミングWindows第\5版についてたMDIサンプルプログラムで同様のことをためしても同じ現象が発生しました。
0962デフォルトの名無しさん
2006/03/02(木) 23:56:47たとえば、32*16のように横長表示にして、6文字くらいの文字列(主に数字)をしたいのですが。
0963デフォルトの名無しさん
2006/03/03(金) 00:09:02あるいはTClock2chのエリアを間借りさせてもらうとか。
0964デフォルトの名無しさん
2006/03/03(金) 00:36:240965デフォルトの名無しさん
2006/03/03(金) 00:40:380966デフォルトの名無しさん
2006/03/03(金) 00:51:46やはりフックしないと無理ですか・・・。
なるべく目立たないプログラムを作ろうとしてたんですが、
TOPMOSTなウインドウで我慢します。
0967デフォルトの名無しさん
2006/03/03(金) 00:53:140968デフォルトの名無しさん
2006/03/03(金) 05:07:57GetIconInfo()で取得したICONINFO構造体のhbmMaskとhbmColorは
DeleteObject()しないといけないんでしょうか?
0969デフォルトの名無しさん
2006/03/03(金) 08:53:23っmanifestを削除する
0970デフォルトの名無しさん
2006/03/03(金) 11:02:51MSDNに書いてあるがな
0971デフォルトの名無しさん
2006/03/03(金) 11:05:08既製のゲームの補助ツールを作りたいと考えています。
ツールからでゲーム内の情報を参照したい (所持金、現在位置など) と
思っているのですが、検索エンジンで調べてみても、他プロセスの変数は
基本的に参照できないという情報しか得られませんでした。
しかし、実際にそのようなツールは存在するわけでして……
自分で作ったプロセス間で通信する方法はわかるのですが……
どのようにして実装しているのか、わかる方がいらっしゃいましたら、
どうかご教授お願いします。
0972デフォルトの名無しさん
2006/03/03(金) 11:33:440973デフォルトの名無しさん
2006/03/03(金) 11:35:06変数は参照できないわな
逆アセンブルとかで
見たい変数がどこのアドレスにあるかを調べて、
ReadProcessMemoryかけてるだけ
0974971
2006/03/03(金) 11:45:21方法すらわからなかったもので……
もっと精進します。ありがとうございました。
0975デフォルトの名無しさん
2006/03/03(金) 12:57:02間違った方向に精進するなよ。
0976デフォルトの名無しさん
2006/03/03(金) 13:12:18すみません、日本語の方しか見ていませんでした。
英語の方にちゃんと書いてあるとはorz
0977デフォルトの名無しさん
2006/03/03(金) 13:37:23情報ありましたら教えてください、サンプルなどあると助かります。
よろしくお願いします。
0978デフォルトの名無しさん
2006/03/03(金) 13:40:55よけいなお世話だと思うが。
0979977
2006/03/03(金) 13:46:13だいじょぶです、うざく無いの作りますから。
そして、僕もうざく無いです。
0980デフォルトの名無しさん
2006/03/03(金) 13:47:59SetWindowRgn()でどうだ?
0981977
2006/03/03(金) 13:52:32>SetWindowRgn()でどうだ?
GIFとかの抜きカラーみたいにして抜けるやつがいんですが。
ご存じないでしょうか?
0982デフォルトの名無しさん
2006/03/03(金) 13:55:44自前でシコシコどうぞ。
というか、いまさら9xなんて考えたくないな。
MSすら捨てているし。
0983977
2006/03/03(金) 14:12:51失礼!、SetWindowRgn()で実現できそうでした。
これ参考になりそうです。
http://www.codeproject.com/dialog/CRegionCreator.asp
http://www.codeproject.com/dialog/BitmapHandling.asp
0984980
2006/03/03(金) 14:13:17マスクカラーで型抜きするのは自分で実装するのでは?
ビットマップでスキン画像用意して
それを走査してリージョン作ってSetWindowRgn()するんだと思うけど。
codeprojectでSetWindowRgnで検索
ttp://www.codeproject.com/dialog/CRegionCreator.asp
ttp://www.codeproject.com/dialog/BitmapHandling.asp
ttp://www.codeproject.com/gdi/rgncreator.asp
中身確かめてないけどたぶん参考にはなるでしょ
0985977
2006/03/03(金) 14:21:25980さん、ありがとうございます。
0986デフォルトの名無しさん
2006/03/03(金) 14:28:02と思った
0987デフォルトの名無しさん
2006/03/03(金) 17:45:08ALT+TABでアプリ切り替えなどをすると初めて表示される、これをたちどころに反映させるようにしたいんですけど、
どのようにすればいんでしょうか?
あと、これも同じ現象なんですが「WS_VISIBLE」でも同じような事が発生します。
よろしくお願いします。
0988デフォルトの名無しさん
2006/03/03(金) 18:40:35hide/showしてみるとか
SHChangeNotify投げてみるとか
多分違うけどSHAppBarMessage
0989デフォルトの名無しさん
2006/03/03(金) 18:55:04「SetWindowPos 関数を呼び出すまでは〜」ってあたり。
0991デフォルトの名無しさん
2006/03/03(金) 20:51:29Unicode変換で困っています。
SJISのfromからUnicodeのtoへ変換はできたのですが、
動的確保したtoの解放でエラー(HEAP CORRUPTION DETECTED)が発生してしまいます。
これは別に解放する必要はないってことでしょうか?
詳しい方教えてください。
以下プログラムの一部です
DWORD len;
char from[] = "変換対象";
LPTSTR to;
len = MultiByteToWideChar(CP_ACP, 0, from, sizeof(from), NULL, 0);
to = (LPTSTR)malloc(len);
MultiByteToWideChar(CP_ACP, 0, from, sizeof(from), to, len);
free(to);
0992デフォルトの名無しさん
2006/03/03(金) 20:58:53ヒープをぶっ壊してる。
to = (LPTSTR)malloc(len * sizeof(WCHAR));
0993デフォルトの名無しさん
2006/03/03(金) 21:17:34あ、すっごい初歩的なミスでした・・・
どうもすみません。
0994デフォルトの名無しさん
2006/03/03(金) 21:39:300995デフォルトの名無しさん
2006/03/03(金) 21:58:420996デフォルトの名無しさん
2006/03/03(金) 22:04:55コードページは何を指定するのが普通?
0997デフォルトの名無しさん
2006/03/03(金) 22:05:500998デフォルトの名無しさん
2006/03/03(金) 22:09:45char *from = "変換対象"; だったら、sizeofじゃだめだけどな。
0999デフォルトの名無しさん
2006/03/03(金) 22:11:2510011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。