■過去ログ置き場に戻る■ 1- 次250 最新50


[memo] "9999999999_00.html#R20" という感じで、URLの最後に "#RレスNo" を追加すると幸せになれます。

Win32API質問箱 Build40
1 名前:デフォルトの名無しさん :2006/02/03(金) 00:25:59
スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんたちが答えてくれるかも。

過去スレ、関連リンクは>>2-5くらい。

■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。英語版(http://msdn.microsoft.com)の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvencedWindowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで。

2 名前:デフォルトの名無しさん :2006/02/03(金) 00:26:38
-過去スレ
39 ttp://pc8.2ch.net/test/read.cgi/tech/1136673250/
38 ttp://pc8.2ch.net/test/read.cgi/tech/1133798345/
37 ttp://pc8.2ch.net/test/read.cgi/tech/1131884991/
36 ttp://pc8.2ch.net/test/read.cgi/tech/1128951330/
35 ttp://pc8.2ch.net/test/read.cgi/tech/1125850096/
34 ttp://pc8.2ch.net/test/read.cgi/tech/1122723009/
33 ttp://pc8.2ch.net/test/read.cgi/tech/1120153520/

3 名前:デフォルトの名無しさん :2006/02/03(金) 00:27:42
32 ttp://pc8.2ch.net/test/read.cgi/tech/1117271829/
31 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

4 名前:デフォルトの名無しさん :2006/02/03(金) 00:29:41
- MSDN Online
http://www.microsoft.com/japan/msdn/
- 猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/
- Platform SDK Update
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
- Google
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

5 名前:デフォルトの名無しさん :2006/02/03(金) 00:33:31

  / ̄/   /   ̄/   ̄/ /  / / ̄  / ̄   ̄/ / ̄/ / ̄/
  /  /   / / ̄   ̄/   ̄/    ̄/ / ̄/   / / ̄/   ̄/
   ̄         ̄   ̄         ̄    ̄       ̄

6 名前:デフォルトの名無しさん :2006/02/03(金) 00:39:09
母「おい、おまいら!!夕食ができますた。リビングに集合しる!」
父「詳細キボーヌ」
母「今日はカレーですが、何か?」
兄「カレーキターーーーーーーーー」
妹「キターーーーーーーーーー」
姉「カレーごときで騒ぐ奴は逝ってヨシ」
母「オマエモナー」
父 --------終了-------
兄 --------再開-------
妹「再開すなDQNが!それより肉うpキボンヌ」
母「ジャガイモうp」
姉「↑誤爆?」
兄「タマネギage」
父「ほらよ肉>家族」
妹「神降臨!!」
兄「タマネギage」
母「糞タマネギageんな!sageろ」
兄「タマネギage」
姉「タマネギage厨uzeeeeeeeeeeee!!」
母「ageって言ってればあがると思ってるヤシはDQN」
セールスマン「イタイ家族がいるのはこの家ですか?」
母「氏ね」
父「むしろゐ`」
兄「タマネギage」
妹「兄 、 必 死 だ な ( 藁 」

7 名前:デフォルトの名無しさん :2006/02/03(金) 02:18:51
winsockのrecv関数を使ってWebサーバからデータ受信したら
CrLfがCrCrLfに変換されているように見えますが
生データを受け取ることは出来ないの?

8 名前:デフォルトの名無しさん :2006/02/03(金) 04:42:40
勝手に変換なんかされねーよ
てめーで使ってるファイル入出力ライブラリが変換してるだけだ
おめーはprintf("\r\n")でCRLFLFが出力されるのが不満なのか?

9 名前:デフォルトの名無しさん :2006/02/03(金) 10:25:04
イヤです

10 名前:デフォルトの名無しさん :2006/02/03(金) 10:46:23
>>旧スレ995
もう見てないか・・・・

>ファームアップデートした段階で応答なくなっちゃうんです(死
>で、再起動するには抜き差し……と。
実際にデバイスマネージャからやってみればわかるが、デバイスの無効・有効や、削除・変更
スキャンでは、デバイスの電源は落ちない。
したがって、デバイス側マイコンのパワーオンリセットを期待しているならNG。

デバイスドライバでPoRequestPowerIrp()を用いて電源をオフする手法もあるが、一部ハブや
ルートハブでは、電源オフされないものあり。

したがって、
>ファームアップデートした段階で応答なくなっちゃうんです(死
をなんとかするしかない。


11 名前:デフォルトの名無しさん :2006/02/03(金) 15:53:04
ちょっくら他プロセス(自作、ウィンドウあり)から、少量の情報が欲しい状況です。

SendMessageをネストさせて
1. 情報が欲しいと思った
2. 自分=>相手に適当にSend
3. 相手=>自分にWM_COPYDATAをSend
4. 自分のCOPYDATAハンドラでデータを保存
5. 処理続行

とすると名前付きカーネルオジェクトも不要で、簡単で良いと思いました。
3.と4.の処理が重いと危険な匂いがしますが、これらが充分少量な処理ならば
これは設計としてアリでしょうか?

12 名前:デフォルトの名無しさん :2006/02/03(金) 16:11:24
>>11
4は3への返答をさっさとしてからゆっくりやればいい。
安定性を過度に求めるんでなければ別に問題はないぞ。

13 名前:デフォルトの名無しさん :2006/02/03(金) 16:45:35
アリじゃねーの?
昔っから使われてる手法だし

14 名前:デフォルトの名無しさん :2006/02/03(金) 17:25:21
>>1
otu

15 名前:11 :2006/02/03(金) 18:18:48
>>12
>>13
お返事ありがとうございます!
ネストするのはちょっと不安だったんですが、安心しましたです

16 名前:デフォルトの名無しさん :2006/02/03(金) 19:50:28
親ウィンドウの中に別スレッドで子ウィンドウを作成することは出来ますか?

17 名前:デフォルトの名無しさん :2006/02/03(金) 19:51:31
>11
自分と相手が別スレッドだとデッドロックしないか?

18 名前:デフォルトの名無しさん :2006/02/03(金) 19:53:47
>>16


19 名前:デフォルトの名無しさん :2006/02/03(金) 19:59:17
>>16
口丁

20 名前:デフォルトの名無しさん :2006/02/03(金) 20:00:23
VS.net(VC)でIWebBrowser2つかってプログラム作ろうとしてるんですが、
Debug構成でコンパイルして実行すると下のようなエラーが出て動作しません。

------------------------------------------------------------------------------
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構成だと全く正常に動くんですが・・・。
これ解決法ないですか?
デバッガ使えないのはイタイ

21 名前:デフォルトの名無しさん :2006/02/03(金) 20:10:43
GetForegroundWindowで取得したウインドウ内でフォーカスの当たってる
コントロールを取得するにはどうすればよいのでしょうか?

22 名前:デフォルトの名無しさん :2006/02/03(金) 20:18:10
>>20
>File: c:\program files\microsoft visual studio .net\vc7\atlmfc\include\atlcom.h
>Line: 3534

ここ見ろよ。

>Release構成だと全く正常に動くんですが・・・。

正常に動いているように見えるだけ。
assertが出るって事は、何かミスしてる事を知らせてる。

23 名前:デフォルトの名無しさん :2006/02/03(金) 20:22:32
>>20
http://www.codeproject.com/wtl/cwtlaxcontrol.asp?df=100&forumid=4601&exp=0&select=479358#xx479358xx

>>21
GetFocusもしくは
GetWindowThreadProcessIdとGetGUIThreadInfo

24 名前:20 :2006/02/03(金) 20:38:20
>>22,23
できました。
どうもありがとうございます。

25 名前:デフォルトの名無しさん :2006/02/03(金) 20:42:15
ここで聞いていいのか分かりませんが、
IE7のBeta2が出ているらしいんですが、

IE7が正式リリースされると、コモンコントロールが更新されたり、
PSDKが更新されたりするんでしょうか。

何か面白そうな機能は付かないかな。

26 名前:デフォルトの名無しさん :2006/02/03(金) 21:12:34
MSDNの更新API一覧みればいいんじゃね?

27 名前:デフォルトの名無しさん :2006/02/03(金) 23:02:52
>>11
>ネストさせて
2.と3.がネストしてて同一スレッドで投げ受けだと
固まるよね?

28 名前:デフォルトの名無しさん :2006/02/03(金) 23:22:39
やっぱり Linux で遊ぶより、 Win32API の使いかたとか
勉強してた方が飯の種になるのかな。

29 名前:デフォルトの名無しさん :2006/02/03(金) 23:25:42
スレタイy… えーと 生活相談もありか?

30 名前:デフォルトの名無しさん :2006/02/03(金) 23:30:35
師ね

31 名前:デフォルトの名無しさん :2006/02/04(土) 00:46:52
>>29
不覚にも笑ってしまった

32 名前:デフォルトの名無しさん :2006/02/04(土) 08:16:37
>>29
あり

33 名前:デフォルトの名無しさん :2006/02/04(土) 12:08:25
>>30
師を探すことにします。どうもありがとうございました。

34 名前:デフォルトの名無しさん :2006/02/04(土) 13:01:47
コマンドプロンプトの画面を消去しないで上書きするにはどのようにすればいいでしょうか?

35 名前:デフォルトの名無しさん :2006/02/04(土) 13:48:23
>>34
同じ行ならputchar('\r');で先頭カラムに戻る。
#後はしらね。

36 名前:デフォルトの名無しさん :2006/02/04(土) 13:56:07
>>35
どうも ん〜なんとかやってみます
わからなかったらまた来るかもしれません

37 名前:前869 :2006/02/04(土) 14:27:30
前872
|>>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を成功させることができると考えました。
恒久的に変更する必要は無いというのはなぜでしょうか。

38 名前:デフォルトの名無しさん :2006/02/04(土) 15:26:47
>>34, 36
\bで文字を消して書きなおす

39 名前:デフォルトの名無しさん :2006/02/04(土) 15:39:04
>>17
デッドロックはしない。
他スレッドへSendしている最中のスレッドがSendされると
Windowsがウィンドウプロシージャを直に呼び出す。
詳しくはAdvanced Windows読め。

40 名前:デフォルトの名無しさん :2006/02/04(土) 16:49:01
>>35>>38
いろいろやってみたんですが
どうもうまく行きません
カーソルの位置が問題だと思うんですけど・・カーソルのを特定の場所に持ってくるような
エスケープシーケンスがどうもうちの環境じゃあ使えないようです
図というかMAPみたいのを直接上書きとかは無理なんですか?
また、ググってきます

41 名前:デフォルトの名無しさん :2006/02/04(土) 16:58:11
>>34
SetConsoleCursorPosition()


42 名前:デフォルトの名無しさん :2006/02/04(土) 17:11:23
>>39
ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/messagesandmessagequeues/messagesandmessagequeuesreference/messagesandmessagequeuesfunctions/sendmessage.asp
Message Deadlocks

これか。

43 名前:デフォルトの名無しさん :2006/02/04(土) 17:32:30
>>41
凄いほとんどちらつかなくなりました
ありがとうございました

44 名前:デフォルトの名無しさん :2006/02/05(日) 00:32:32
Advanced Windowsに、
「GUI関係の仕事が無い時、GetMessageはスレッドを眠らせる」
とあるんですが、内部的にはWaitForSingleObjectしてると考えて
良いのでしょうか?

というのは、ウィンドウを必要としないスレッド間(別プロセス)で
同期とって作業しようと思っていて、
(a) イベントオブジェクト(とか) + WaitForSingleObject
(b) あえてウィンドウ作成(不可視) + SendMessage
なんかを思いついたんすけど、(b)を選ぶメリットってあるのかなー
と思っておるのです。(内部動作が等価なら、あえて選ぶ必要はなさそう)

45 名前:デフォルトの名無しさん :2006/02/05(日) 02:34:30
内部実装はしらんが、きっとそんなもんじゃなかろうか。

> 内部動作が等価なら

メッセージキューを自作するぐらいなら、
WindowMessage使ったほうがマシだと思う。

46 名前:デフォルトの名無しさん :2006/02/05(日) 03:05:33
内部的っつーか
WaitForもGetMessageも、(もちろんその他のI/Oもだけど)
スレッドを「待ち状態」にしてるだけでしょ。

スレッドを待ちにするために
わざわざWaitForなどのユーザーランドから呼び出すAPIを使ってるとは
(俺には)思えないけどね。

47 名前:デフォルトの名無しさん :2006/02/05(日) 05:16:49
>>44
不可視のウィンドウを作ってやり取りするのは
Windowsアプリケーションではよく使われる手。

それと、どうしてもウィンドウを作りたくないのならば
ウィンドウ無しでメッセージキューを持つこともできるよ。

48 名前:デフォルトの名無しさん :2006/02/05(日) 05:44:25
メッセージキュー自体はウィンドウがあろうがなかろうがAPI呼び出し時に暗黙的に作られるものだけどな。

ttp://www.microsoft.com/JAPAN/developer/library/jpuipf/_win32_postthreadmessage.htm

49 名前:44 :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; }
}


50 名前:デフォルトの名無しさん :2006/02/05(日) 23:36:15
CreateProcessからvbsのファイルを実行するってできますか?
単にvbsのファイル名のみの指定と
「wscript.exe 」を前に付けて実行を試したのですが、実行できません。

51 名前:デフォルトの名無しさん :2006/02/06(月) 00:37:41
当然エラーコードは調べたんだろうな?

52 名前:デフォルトの名無しさん :2006/02/06(月) 01:04:45
>>50
起こらなかったことじゃなくて起こったことを書かないと
あっそう、で終わる

53 名前:デフォルトの名無しさん :2006/02/06(月) 01:54:10
>>49
GetMessageはWM_QUITがきたら0を返すので else if... はいらないと思う

あと、
#define MYMSG 0
の後に
WM_USER+MYMSG
するくらいなら
#define MYMSG WM_USER+0
とした方がソース的に見やすいと思う

54 名前:デフォルトの名無しさん :2006/02/06(月) 02:21:32
>>53
#defineに括弧を付けないなんて。

55 名前:デフォルトの名無しさん :2006/02/06(月) 02:24:56
>>54
かっこつけてみた
(#define) WM_USER+0

56 名前:デフォルトの名無しさん :2006/02/06(月) 02:44:52
格好つけるな!

57 名前:デフォルトの名無しさん :2006/02/06(月) 02:56:27
こうだろが
#define MYMSG WM_USER+(0)

58 名前:デフォルトの名無しさん :2006/02/06(月) 03:33:14
いや、こうかな?
#define MYMSG WM_USER+0 (笑)

59 名前:49 :2006/02/06(月) 04:10:32
またまた皆様お返事ありがとうございました。

>>53
おっしゃる通りです、お恥ずかしいです。(普段のコピペがバレバレ)

>>54-58
どうもです(なんだそれ)

60 名前:デフォルトの名無しさん :2006/02/06(月) 06:00:37
久々のGetMessageネタなのに、
誰も、GetMessageがエラーのときに-1を返すと突っ込まないなんて!

61 名前:デフォルトの名無しさん :2006/02/06(月) 07:11:50
WM_USERって南下と衝突してるんじゃなかったっけ??あいまいだけど。
WM_APPのあと幾らかはユーザー定義しても安全だった気がする。

62 名前:デフォルトの名無しさん :2006/02/06(月) 07:27:32
ttp://msdn.microsoft.com/library/en-us/winui/winui/windowsuserinterface/windowing/messagesandmessagequeues/messagesandmessagequeuesreference/messagesandmessagequeuesmessages/wm_app.asp

63 名前:デフォルトの名無しさん :2006/02/06(月) 07:28:01
コモンコントロールが
WM_USER〜0x2000ぐらいまで使ってた希ガス

64 名前:デフォルトの名無しさん :2006/02/06(月) 07:40:22
アクティブアプリケーションのIMEの状態を取得する方法を教えてください

65 名前:デフォルトの名無しさん :2006/02/06(月) 08:50:38
WM_APP以降にしろよ

66 名前:デフォルトの名無しさん :2006/02/06(月) 09:40:05
ぶっちゃけ、ウィンドウを持ってないスレッドのメッセージなんて
どうでもいいけどな。

67 名前:デフォルトの名無しさん :2006/02/06(月) 12:58:34
>>60
GetMessage() が-1を返すのは、ウィンドウハンドルが不正とか
呼び出し側が指定した引数に問題がある場合だけだから、
防御的プログラミングに走る場合以外はチェックしないんじゃないかな。

68 名前:デフォルトの名無しさん :2006/02/06(月) 14:04:06
while (GetMessage(&msg, NULL, 0, 0) > 0) {

うーん。場当たり的だ。

69 名前:デフォルトの名無しさん :2006/02/06(月) 17:31:47
while ( (GetMessage(&msg, NULL, 0, 0)-1) !< 0)
だっけな。

70 名前:デフォルトの名無しさん :2006/02/06(月) 17:32:42
下げ忘れた・・・。

71 名前:デフォルトの名無しさん :2006/02/06(月) 17:32:42
>>69
!<

72 名前:デフォルトの名無しさん :2006/02/06(月) 17:36:11
>>71
ちがったっけ??

73 名前:デフォルトの名無しさん :2006/02/06(月) 17:41:58
何やねん、その演算子は。

74 名前:デフォルトの名無しさん :2006/02/06(月) 18:10:04
while ( (GetMessage(&msg, NULL, 0, 0)-1) > 0);
こっちだっけな??

75 名前:デフォルトの名無しさん :2006/02/06(月) 18:13:58
また下げ忘れた・・・。

76 名前:デフォルトの名無しさん :2006/02/06(月) 18:14:46
おまいそれじゃ>>68タンと一緒じゃまいか・・・(V)(´Д`)(V)

77 名前:デフォルトの名無しさん :2006/02/06(月) 18:17:25
ぱぱぱぱ、ぱくりじゃないぞ。
-1がちょっとだけ主張してる。はず。

78 名前:デフォルトの名無しさん :2006/02/06(月) 18:18:19
(V)(   )(V) カサカサ・・

79 名前:デフォルトの名無しさん :2006/02/06(月) 18:19:36
あ、それあかんわ。
もうぐだぐだ。。。

80 名前:デフォルトの名無しさん :2006/02/06(月) 18:20:09
(V)(´Д`)(V) よし認めよう

81 名前:デフォルトの名無しさん :2006/02/06(月) 18:20:44
(V)(´Д`;)(V) ぇえええええええええええぅ

82 名前:デフォルトの名無しさん :2006/02/06(月) 20:07:04
>>74
それGetMessageがTRUE返してもループ抜けちゃうやん。

83 名前:デフォルトの名無しさん :2006/02/06(月) 21:23:49
>>82
TRUE て1ちゃうかったっけ?

84 名前:デフォルトの名無しさん :2006/02/06(月) 21:39:31
>>83
だから、1でもループ抜けるやん

85 名前:デフォルトの名無しさん :2006/02/06(月) 21:48:22
何で関西弁で進行

86 名前:デフォルトの名無しさん :2006/02/06(月) 22:16:49
>>85
関西人だから

87 名前:デフォルトの名無しさん :2006/02/06(月) 22:23:19
そやな!

88 名前:デフォルトの名無しさん :2006/02/06(月) 22:23:52
GetLastErrorは無しなん?

89 名前:デフォルトの名無しさん :2006/02/07(火) 00:06:15
指定のリムーバブルディスクがEJECT対応しているかどうか調べる事って可能ですか?



90 名前:デフォルトの名無しさん :2006/02/07(火) 02:38:18
ttp://www.vector.co.jp/soft/win95/util/se375705.html
このようなソフトウェアをつくってみたいと考えているのですが
どのように実装されているのか見当がつきません。

timeGetTime()あたりをHookしているのではないかと思っているのですが

91 名前:デフォルトの名無しさん :2006/02/07(火) 02:45:09
見当が付かないなら、そのソフトを落としてみればいいじゃない。
dumpbinやdependency walker等でインポートしているAPIが分かる。

92 名前:デフォルトの名無しさん :2006/02/08(水) 11:31:00
サブディレクトリを含むディレクトリをコピーするAPIってありますか?
また、サブディレクトリを含むディレクトリの削除はありますか?

93 名前:デフォルトの名無しさん :2006/02/08(水) 11:34:46
>>92
SHFileOperationでできそうな気がする

94 名前:デフォルトの名無しさん :2006/02/08(水) 11:34:59 ?
SHFileOperationとか。

95 名前:デフォルトの名無しさん :2006/02/08(水) 12:02:27
>>93-94
ケコーン

96 名前:デフォルトの名無しさん :2006/02/08(水) 12:36:53
>>92
前スレ嫁

97 名前:デフォルトの名無しさん :2006/02/08(水) 13:34:15
QueryPerformanceCounter/Frequencyってクロック可変な環境で
正しい時間が計測できないという可能性が指摘されてるんですが、
現実問題そういう環境は実在するんでしょうか?

一般論としてもう使うべきではないんでしょうかね。

98 名前:デフォルトの名無しさん :2006/02/08(水) 13:46:19
>>93-94
ありがとう。助かりました。


99 名前:デフォルトの名無しさん :2006/02/08(水) 14:04:44
>>97
SpeedStepとかPowerNowとか。

100 名前:デフォルトの名無しさん :2006/02/08(水) 14:58:33
スタンバイ状態にする方法を教えてください

101 名前:デフォルトの名無しさん :2006/02/08(水) 15:29:39
>>100
SetSuspendState自信無し

102 名前:MR大佐||☆ :2006/02/08(水) 16:19:39
もう一つのハンガリー表記
実は、ハンガリー表記には未公開の別の表記法が存在(中略)伝統に従って
uType だが、実は内部では fuMB_、つまり、MB_ で始まるフラグ値集合の UINT 型。

この未公開のハンガリー表記が使われた未公開のヘッダを使えば、
エディタで MB_ を入力するだけで(中略)ツールにより文書化を効率化できる。

エラーコードをセットする処理は、配布時には不必要かもしれない。
Won98では、エラーコード設定に以下の関数を使う。

103 名前:MR大佐||☆ :2006/02/08(水) 16:21:00
WON_NOIMPLマクロは、コンパイル時に実装されていないという(中略)
英語圏の人は、この変数名の意味が読める。
#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

104 名前:MR大佐||☆ :2006/02/08(水) 16:23:08
(略)これらのマクロは、WINVER、_WIN32、_WIN32_IE などのマクロと
対をなして、プログラムの下位互換性を定義する。
型変換時の間違いを防ぐため、新たにLOWORD_INTとHIWORD_INTが追加された:
#define LOWORD_INT(dw) ((INT)(SHORT)LOWORD(dw))
...
MR は、Won2K 以降 UniBulls をサポートしていません。
MR は、法令を遵守する極めて「ノーマルな」集団であり、2006年1月現在、RudeEvilとは無関係です。
MR は、「間違った手段」による Counter Smith Revolution を支持しません。
ソフトウェア開発は、日々進化しています。美しく勝利してください(ajax!)。

105 名前:デフォルトの名無しさん :2006/02/08(水) 17:13:14
SetDIBitsToDevice()って(0,0)以外から転送するとおかしくならない?


106 名前:デフォルトの名無しさん :2006/02/08(水) 17:20:23
ならない。


107 名前:105 :2006/02/08(水) 17:21:48
BitBltとおなじパラメータでやると変になるんだ

108 名前:デフォルトの名無しさん :2006/02/08(水) 17:37:33
>>107
ならない
というか実物見ないと(ry

109 名前:105 :2006/02/08(水) 17:42:45
検証用ソース
// ここを適当に変えて
のところで適当に座標値を
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?mode=thr&no=1628


110 名前:デフォルトの名無しさん :2006/02/08(水) 17:56:11
>>109
見れネ

111 名前:105 :2006/02/08(水) 17:58:55
スレが見れないってこと?コピペでもだめですか?
ソースは添付ファイルです

112 名前:デフォルトの名無しさん :2006/02/08(水) 18:04:27
これか
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1628.txt

113 名前:105 :2006/02/08(水) 18:09:00
それです

114 名前:デフォルトの名無しさん :2006/02/08(水) 18:11:53
>>100
呼び出し側プロセスには SE_SHUTDOWN_NAME特権が必要。
@NT、2000などでExitWindowsEx() or ExitWindows()するサンプルをどっかから
拾ってくる
A以下の一行書き換える。
//ExitWindowsEx( ... );
SetSystemPowerState( TRUE, FALSE );

115 名前:デフォルトの名無しさん :2006/02/08(水) 18:12:41
特定アプリ(例えばメモ帳など)のキーをフックするにもdllからじゃないとできませんか?

116 名前:デフォルトの名無しさん :2006/02/08(水) 18:14:54
ハンドル捕まえてサブクラス化は?


117 名前:デフォルトの名無しさん :2006/02/08(水) 18:19:01
他のアプリのボタンをクリックしたいのですが、
SendMessageで送るメッセージは何にすれば良いのでしょうか?
WM_???

118 名前:デフォルトの名無しさん :2006/02/08(水) 18:30:13
>>117
PostMessage(hButton, WM_LBUTTONDOWN, 0, 0);
PostMessage(hButton, WM_LBUTTONUP, 0, 0);
これでやったらできたけど正しいかはわからない

119 名前:デフォルトの名無しさん :2006/02/08(水) 18:30:56
>>117
SPYで捕まえて、それと同じやつを送れ

120 名前:117 :2006/02/08(水) 18:39:01
>>118
でけました。
WM_LBUTTONUPは盲点でした。

121 名前:デフォルトの名無しさん :2006/02/08(水) 18:42:51
それが盲点なようじゃまだまだだな

122 名前:デフォルトの名無しさん :2006/02/08(水) 18:47:16
人の盲点を予測できないようじゃまだまだだな

123 名前:デフォルトの名無しさん :2006/02/08(水) 18:49:21
>>122
とりあえずレーザーで盲点は作れるからおk

124 名前:デフォルトの名無しさん :2006/02/08(水) 19:01:16
自分が開始した訳でもないフックDLLを止めるにはどうしたらいい?

125 名前:デフォルトの名無しさん :2006/02/08(水) 19:13:24
>>116
あ、すみません、それするとdllいらずでできそうですか?
ちなみにどんなふうにかけばいいですか?

126 名前:デフォルトの名無しさん :2006/02/08(水) 19:19:55
キーボードのグローバルフックはプロセスに注入することなく使えるからDLL使わなくてもできる・・・
というのをどこかで聞いたことがある

127 名前:デフォルトの名無しさん :2006/02/08(水) 19:21:39
>125
サブクラス化でぐぐれ!


128 名前:デフォルトの名無しさん :2006/02/08(水) 19:21:57
どこだか教えてください!!!

129 名前:デフォルトの名無しさん :2006/02/08(水) 19:26:01
GetAsyncKeyStateを使ってキー情報をタイマーで監視し続けるんだ!


130 名前:デフォルトの名無しさん :2006/02/08(水) 20:40:40
>>109
SetDIBitsToDevice の 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 では?

131 名前:デフォルトの名無しさん :2006/02/08(水) 22:25:02
別プロセスのウィンドウはサブクラスか出来ないけどな

132 名前:デフォルトの名無しさん :2006/02/08(水) 23:00:34
SetTimerでTimerProcを設定しました、
その後TimerProcのVBでいうIntervalを変更したいんですが、
なにか方法があれば教えてください。

133 名前:デフォルトの名無しさん :2006/02/08(水) 23:04:06
>>132
SetTimer()とKillTimer()しかないわけだから、KillしてSetしなおすしか
ないだろうね。

134 名前:デフォルトの名無しさん :2006/02/08(水) 23:04:55
>>132
KillTimerして再度作るのが妥当かと

135 名前:デフォルトの名無しさん :2006/02/08(水) 23:08:01
KillTimerする必要は無いな。

136 名前:デフォルトの名無しさん :2006/02/08(水) 23:11:46
>>135
kwsk
削除しないと永遠に発生するもんじゃなかったっけ・・・?

137 名前:デフォルトの名無しさん :2006/02/08(水) 23:18:23
kwskもへったくれも無い。ヘルプ嫁。

138 名前:133 :2006/02/08(水) 23:18:58
>>136
同じWindowで同じIDを指定すれば、上書きされる。

139 名前:デフォルトの名無しさん :2006/02/08(水) 23:30:59
132です。
TimerProc内でSetTimerを再定義したらそれらしくなりました、
どうもありがとうございます。

140 名前:デフォルトの名無しさん :2006/02/09(木) 01:56:45
初歩的な質問ですいません。
WM_COMMANDは、コントロール作成時にも送られてくるのですか?

141 名前:デフォルトの名無しさん :2006/02/09(木) 02:08:38
クリップボードの変更は取得できたんですが
ペーストを検出する方法を教えてください。


142 名前:デフォルトの名無しさん :2006/02/09(木) 02:18:14
>>126
GetKeyStatとかでできるが、どのキーがどのプロセスで押されたか判断するのは多分無理。

>>129
どうやってプロセスを判断するのかな??^^



143 名前:デフォルトの名無しさん :2006/02/09(木) 02:23:16
>>142
キーイベントはプロセス相手ではなくスレッドに属するウィンドウ相手じゃまいか?
getforegroundwindow()でどのウィンドウが対象か調べればいいかとおもお

144 名前:デフォルトの名無しさん :2006/02/09(木) 02:31:45
>>143
話の流れをよく嫁。

145 名前:デフォルトの名無しさん :2006/02/09(木) 03:07:21
>>115

>>144
>>144
>>144
>>144
>>144

146 名前:デフォルトの名無しさん :2006/02/09(木) 04:24:34
>>115
DLLインジェクション使え


>>145
必死だなチンカス



147 名前:デフォルトの名無しさん :2006/02/09(木) 08:15:15
ああ必死だな>>146=>>115-

148 名前:デフォルトの名無しさん :2006/02/09(木) 08:20:55
>>140
送られてきません
説明読めよ

149 名前:デフォルトの名無しさん :2006/02/09(木) 08:28:08
WININETってどうなん?

150 名前:デフォルトの名無しさん :2006/02/09(木) 11:03:11
どちらかといえば道北

151 名前:デフォルトの名無しさん :2006/02/09(木) 11:43:52
>>150
何故、道央・道東を差しおいて「どちらか」と言うのか?

152 名前:デフォルトの名無しさん :2006/02/09(木) 11:47:00
>>150-151
この道産子どもめが!!

153 名前:デフォルトの名無しさん :2006/02/09(木) 11:51:17
道産子、道産子言うからどさん子ラーメン食べたくなったじゃねーか

154 名前:105 :2006/02/09(木) 12:22:00
>>130
お、本当だ!
ありがとう!

155 名前:デフォルトの名無しさん :2006/02/09(木) 14:57:18
>>153
お、本当だ!
ありがとう!

156 名前:デフォルトの名無しさん :2006/02/09(木) 17:41:42
>>147
証拠を提出してください。

157 名前:デフォルトの名無しさん :2006/02/09(木) 18:16:11
急激にスレのしt(ry

158 名前:デフォルトの名無しさん :2006/02/09(木) 18:16:24
嫉妬

159 名前:デフォルトの名無しさん :2006/02/09(木) 18:43:39
SendInputを使って絶対座標でマウスカーソルを動かしてるんですが、
マルチモニタ環境での場合の絶対座標の指定方法がよくわかりません。

SendInput に渡す MOUSEINPUT 構造体の x, y には 0 から 65535 の数値を指定するようにされているのですが、
その範囲ではプライマリモニタ内でしかカーソルは移動しません。
その値を +65535 するとセカンダリモニタ内でカーソルが移動したり
するのですが、そういう考え方でいいのでしょうか?

つまり、0-65535 の値はプライマリモニタの物理座標(例えば 1024x768)
にマップされ、セカンダリモニタなどはそのプライマリにマップされた
大きさで計算する必要があるという事でしょうか?

説明が下手ですみません。

160 名前:デフォルトの名無しさん :2006/02/09(木) 21:18:04
SetPixel(またはSetPixelV)を使うより、メモリを直接制御したほうが早いと、どこかのサイトで見たのですが
そのサイトでは、詳しくは説明されておらず、自分でもできる限り検索などしてみましたが解決できませんでした
SetPixel(またはSetPixelV)が内部的にどのような動作をしているのかを解説したサイトなどご存知の方おられませんか…
よろしくお願いします

161 名前:デフォルトの名無しさん :2006/02/09(木) 21:23:17
>>160
つDIBSection

162 名前:160 :2006/02/09(木) 21:42:21
>>161
失礼しました、SetPixelの実際の使用は

HDC hdc=CreateDC("DISPLAY",NULL,NULL,NULL);
SetPixelV(hdc,1,1,color);

といった感じなので、DIBSectionでは解決できそうにないです。
失礼しました

163 名前:デフォルトの名無しさん :2006/02/09(木) 21:59:29
>>162
・・・え?

164 名前:デフォルトの名無しさん :2006/02/09(木) 22:07:44
たしかにDIBSectionじゃ画面に直接はかけない罠。

165 名前:デフォルトの名無しさん :2006/02/09(木) 22:12:34
何やってんのこのバカ・・・

166 名前:デフォルトの名無しさん :2006/02/09(木) 22:36:13
一旦DibSectionに書いてからコピー。
つーか、DibSection相手だとSetPixelしてもそこそこ速かったりするんだけどな。

167 名前:デフォルトの名無しさん :2006/02/09(木) 23:34:49
DDB < DIBだから、DIBの方でやった方がいい。
ロードする時、ピクセルにアクセスする場合は、
DDBだけじゃなく、DIBとしてもロードしておく。

168 名前:デフォルトの名無しさん :2006/02/10(金) 11:24:21
その不等号は何を比べているんだ?

169 名前:デフォルトの名無しさん :2006/02/10(金) 14:40:43
縮小転送するときStretchDIBits関数やSetDIBitsToDevice関数を使うとドライバによってノイズのような輪郭線が出てしまうのですがこれも一旦DIBSectionに自前の縮小アルゴリズムで描いて転送という方法をとるのが一般的なんでしょうか


170 名前:デフォルトの名無しさん :2006/02/10(金) 14:44:14
>>169
SetStretchBltMode使って気に入らなきゃ自前でやっちゃって良いんでない?

171 名前:169 :2006/02/10(金) 14:59:47
>>170
SetStretchBltModeでHALFTONEを指定してブラシ原点の設定(0,0)を行ってもだめでした
表示内容の変更のたびに一度転送を挟むのは無駄な気もしますけど
しょうがないんですね…


172 名前:デフォルトの名無しさん :2006/02/10(金) 17:13:26
強いんだよ

173 名前:デフォルトの名無しさん :2006/02/10(金) 17:40:20
環境はXPsp2で処理系はBCC5.5.1を使用しています

ところで、デバッグの為にDOS窓を出してそこに結果を出力させたいのですが
fprintf(stderr,"....");としても何も得られません
そこでDOS窓を制御するにはどの様なAPI、または手法が考えられるのでしょうか

174 名前:デフォルトの名無しさん :2006/02/10(金) 17:56:00
>>173
AllocConsole();
freopen("CONOUT$", "w", stdout);
freopen("CONOUT$", "w", stderr);

175 名前:デフォルトの名無しさん :2006/02/10(金) 18:31:32
wがイヤです

176 名前:デフォルトの名無しさん :2006/02/10(金) 18:54:35
w

177 名前:デフォルトの名無しさん :2006/02/10(金) 19:25:44
freopen("CONOUT$", "a", stdout);

178 名前:デフォルトの名無しさん :2006/02/10(金) 19:43:04
#define wwwwwwww "w"

179 名前:デフォルトの名無しさん :2006/02/10(金) 20:08:31
>>173
OutputDebugString

180 名前:デフォルトの名無しさん :2006/02/10(金) 20:51:38
質問です。
ヤフーメッセンジャーの話すボタンを押しっぱなしにするツールがありますが
あれはどうやってやってるんでしょうか?

ボタンにWM_LBUTTONDOWNメッセージを送ってやってもマウスをぐりぐり
やってると解除されてしまいます。親ウィンドウにマウスオーバすると確実に駄目。
ボタンへのメッセージを全てフックしてフィルタかけるとか面倒な事をやらなければ
駄目なんでしょうか?
よろしくお願いします。

181 名前:デフォルトの名無しさん :2006/02/10(金) 21:05:14
>>180
つ spy++

でまあ、気になったから自分でも調べてみたわけだが、
"話す"ボタンに、BM_SETSTATEを投げているみたい。

実際にメッセージ投げて確かめたわけじゃないけど。

182 名前:デフォルトの名無しさん :2006/02/10(金) 21:29:42
>>181
サンクス。
それやって見ます。
あと、SPY++使ってみます。

183 名前:デフォルトの名無しさん :2006/02/10(金) 21:36:36
ヤフーメッセンジャーって使ったことないけど
「話す」ボタンが押下された状態はどういうタイミングでクリアされるの?
それを外部から判断できれば、クリアされるたびにメッセージ送れば
押しっぱなしの状態になるけど・・・

184 名前:デフォルトの名無しさん :2006/02/10(金) 21:41:22
>>181
バッチリですたd(゚∀゚)b

185 名前:デフォルトの名無しさん :2006/02/10(金) 21:43:18
>>184
ttp://wisdom.sakura.ne.jp/system/winapi/win32/win53.html

186 名前:デフォルトの名無しさん :2006/02/10(金) 21:56:54
>>183
それがあんまりハッキリしないみたい。親ウィンドウにマウスオーバすれば確実に
ボタンは戻るんだけど、そのままボタンのうえにもっていくと押された状態になる。
親ウィンドウにマウスオーバしなくても勝手に戻ったりもする。内部的なイベントが
いろいろ有ると思うし…。

>>185
サンクス。
たまたまヤフーメッセンジャーのIMの話すボタンの実装がそうなっていたとか
使われているRADツール?のボタンコントロールのデフォルトコードがそうなってるのか
とかそんなような事ですかね?

サンクス>>ALL

187 名前:デフォルトの名無しさん :2006/02/11(土) 06:45:38
プロセスのメインモジュールのファイル名が与えられた場合にその保持する全ウィンドウのハンドルを取得する方法にはどのようなものがあるでしょうか?

私が今やっている方法は以下の通りです。

1.まず、ツールヘルプで全プロセスを列挙してその中から該当のもののプロセスIDを取得する。

2.GetWindow()を使ってDesktopWindowの子すべてにGetWindowProcessThreadId()をして調べる。

3.2.で見つかったウィンドウの子孫すべてをGetWindow()で取得。

もっといい方法はあるでしょうか?

188 名前:デフォルトの名無しさん :2006/02/11(土) 08:17:02
つ EnumThreadWindows

189 名前:デフォルトの名無しさん :2006/02/11(土) 18:46:46
エクスプローラ等で選択したファイル名をコンテキストメニューからDragQueryFileを
通じて取得しているのですが、.lnk等のショートカットだとリンク先のファイル名
になってしまいます。.lnkのファイル名を取得する方法を教えてください。

現状は↓の動作結果になっています。
1: .lnk一つだけ選択 → リンク先のファイル名
2: .lnkとそれ以外の拡張子を選択し、.lnk上で右クリック → リンク先のファイル名のみ
3: .lnkとそれ以外の拡張子を選択し、.lnkでないファイル上で右クリック → .lnkのファイル名とそれ以外のファイル名


190 名前:デフォルトの名無しさん :2006/02/11(土) 19:44:10
>コンテキストメニューから
?
WM_DROPFILESのハンドラから取得すると普通にC:\... .lnkになってるけど。
逆にリンク先のファイル名にする方法聞きたい。

191 名前:デフォルトの名無しさん :2006/02/11(土) 20:42:39
WM_DROPFILESのハンドラじゃなくて
IShellExtInit::InitializeでCF_HDROPを取って、DragQueryFileすると
>>189のようになってる希ガス

192 名前:デフォルトの名無しさん :2006/02/11(土) 22:44:27
SetForegroundWindow
SetActiveWindow
SetFocus
BringWindowToTop
の違いとはなんでしょうか?

193 名前:デフォルトの名無しさん :2006/02/11(土) 22:58:53
>>192
つMSDN

194 名前:デフォルトの名無しさん :2006/02/11(土) 23:02:50
SetForegroundWindow→スレッドごと一番前に持ってくる

SetActiveWindow→呼び出し元アプリ内でのみアクティブになる(フォアグラウンドになるとは限らない)

SetFocus→SetActiveWindowと似たような動きだが、ウィンドウに送られるメッセージが違う

BringWindowToTop→よくわからんけどSetForegroundWindowとたぶん似た感じ

195 名前:デフォルトの名無しさん :2006/02/11(土) 23:29:53
つれますか?

196 名前:デフォルトの名無しさん :2006/02/11(土) 23:31:29
>>195
うんこは寝て(r

197 名前:デフォルトの名無しさん :2006/02/11(土) 23:32:18
次のコードが手元のWin2kでは動くのに、Win98では動きません。

int 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で確認しました。


198 名前:デフォルトの名無しさん :2006/02/12(日) 00:26:19
SendNotifyMessageとかPostMessageでウィンドウに送ったメッセージって
たまに届かないとき無いですか?
ウィンドウを移動中とかに送ると届いて無いことが結構ありますよね?

199 名前:198 :2006/02/12(日) 00:33:57
たぶんメッセージキューがあふれてメッセージが削除されてしまったのだと思うのですけど
こういう場合ってどうしたらいいでしょうか?
別スレッドから重要なメッセージを送ったのに勝手に削除されたら困るんですが

200 名前:デフォルトの名無しさん :2006/02/12(日) 01:41:42
NT系だとメッセージキューのキャパはデフォで10000位あって
そう簡単に溢れないと思ったが。

201 名前:デフォルトの名無しさん :2006/02/12(日) 08:30:49
ウィンドウ移動終了後に遅れて届いているんじゃね?

202 名前:デフォルトの名無しさん :2006/02/12(日) 12:16:11
>199
戻値を確認すればいいんじゃ?

203 名前:189 :2006/02/12(日) 14:55:28
>>190
>>191の説明通りです。説明不足ですみません。

>>191
仕様ですかね…?
でもこれって条件次第では、例えばユーザが選択したファイルのウィルスチェックが
出来ないことになるわけで(実際に某ソフトで確認済み)、「穴」な気がしますが。
…これでいいのかWindows?


204 名前:デフォルトの名無しさん :2006/02/12(日) 16:24:22
>>203
Win の責任なのか?
ある程度知識がある人にはショートカットとリンク先が別物なのは常識だし、
無い人は AutoProtect とか使ってるだろうから、リンクを逆参照した時点で発見出来るじゃん。

205 名前:デフォルトの名無しさん :2006/02/12(日) 17:01:08
>>203
WM_DROPFILES を使えばおっけーって事じゃないのか?

206 名前:デフォルトの名無しさん :2006/02/12(日) 17:05:32
わざわざショートカット先のファイル名を取得する方法でやっといて、
これでいいのかWindowsも無いもんだ

207 名前:デフォルトの名無しさん :2006/02/12(日) 20:27:16
話がかみ合ってない気がする

208 名前:デフォルトの名無しさん :2006/02/12(日) 23:45:30
WIN32_STREAM_ID sid;
ZeroMemory(&sid, sizeof(WIN32_STREAM_ID));
DWORD dwStreamHeaderSize = (LPBYTE)&sid.cStreamName - (LPBYTE)&sid+ sid.dwStreamNameSize;


これっておかしくないですか?

209 名前:デフォルトの名無しさん :2006/02/12(日) 23:50:29
質問です。
「すれ立てるまでもない〜」でも書き込ませていただきました。

特定のプロセスの起動を制御したいのですが、
そのスマートな方法が思いつきません。

私としては、このプロセスが起動するとき、はじめからスレッドを止めておき、
ユーザーに許可を求めてからスレッドを走らせるようなことをしたいのです。

自分で思いついた方法は

 Kernel32 の代わりのライブラリ Xernel32 をインポートさせる
 このとき、この特定のプロセスはクラック

 Snapshot によってまず起動しているプロセスを取得し、
 その全てのプロセスの CreateProcessA/W を
 DLL遠隔実行+NTヘッダ書き換え方式でフックして、監視する方式

というものですが、上はプログラムに直接手を加え、
下はシステムの誤動作につながる可能性があることからできれば使いたくないと考えております。

どなたか上記以外の方法をご教授願えませんでしょうか?
よろしくお願いいたします。



210 名前:デフォルトの名無しさん :2006/02/13(月) 00:14:35
>>208
なにが???

DWORD dwStreamHeaderSize
  = ( (DWORD)(&(sid.cStreamName)) - (DWORD)(&sid) + sid.dwStreamNameSize );

にしろってこと?



211 名前:デフォルトの名無しさん :2006/02/13(月) 00:15:12
何?ウイルススキャナの出来損ないでも作ってるの?
そのプロセスのEXEのエントリポイントでも書き換えれば。

212 名前:デフォルトの名無しさん :2006/02/13(月) 00:19:39
>>211
先にクラックしておくという意味でしょうか?


213 名前:デフォルトの名無しさん :2006/02/13(月) 00:42:55
それをクラックと称するのはどうかとも思うが、そういうこと。

214 名前:デフォルトの名無しさん :2006/02/13(月) 00:54:10
>>213
ファイルシステム 上のプログラムは手を加えたくないのです。
わがままですが…。

できれば、そのプログラム起動時には命令を一つも実行させず、
スレッドを止めた状態でユーザーに確認を求め、スレッドを走らせるということをしたいのです。

そのため、CreateProcessA/W、Kernel32 プロキシによるフックを思いついたのですが、
その特定のプログラムが、どのような方法で起動したとしても、
ユーザーの確認を求めることができる状態にしたいのです。

やはりこれ以外の方法はないのでしょうか?

215 名前:デフォルトの名無しさん :2006/02/13(月) 01:47:12
で、どのネットゲーをクラックしたいのか

216 名前:デフォルトの名無しさん :2006/02/13(月) 05:31:28
話の腰を折るかもしれませんが二つ質問です。

@別のプロセスにある Rich Editに色やフォントを指定して、
文字列を(クリップボード経由ではない方法で)転送するやり方が
知りたいのですが、わかれば教えてください?
ただ文字列を転送することはできましたが、これ以上進みません。

例:ワードパッドに明朝体で青い字を表示させる。

A別のプロセス中でサブクラス化されたコントロールを
解除する方法がわかれば教えてください。

例:「スタートボタン」はサブクラス化されていますが、これを解除する。

両方とも高度な質問だとはわかっていますがよろしくお願いします。

217 名前:デフォルトの名無しさん :2006/02/13(月) 08:07:21
>>208

先に0で埋めてるでしょ
0をいくら計算しても0では

218 名前:デフォルトの名無しさん :2006/02/13(月) 08:42:54
>>209
要件満たさないけど、ポリシーいじれるなら
起動の抑止は出来たと思う。

ポリシーって内部で何やってんだろうね。

219 名前:デフォルトの名無しさん :2006/02/13(月) 08:48:21
>>217
アドレスは0じゃないよ

220 名前:≠217 :2006/02/13(月) 08:55:49
>>219
サイズの値は0だね。

221 名前:デフォルトの名無しさん :2006/02/13(月) 09:20:17
足す意味がないってことか

222 名前:デフォルトの名無しさん :2006/02/13(月) 09:24:16
WIN32_STREAM_ID構造体のcStreamNameの直前までのサイズは正しく求められてるけど、
確かに、最後の「+sid.dwStreamNameSize」は意味が無いな

223 名前:デフォルトの名無しさん :2006/02/13(月) 15:37:08
ListViewにFocusが北のを簡単に知るには
サブクラス化してWM_SETFOCUS捕まえる以外は方法茄子?

224 名前:デフォルトの名無しさん :2006/02/13(月) 15:52:41
つ NM_SETFOCUS

225 名前:デフォルトの名無しさん :2006/02/13(月) 15:57:42
ぬああああ、そうだった、そう言えばそんなのあった

どう考えても健忘です
本当にありがとうございました

226 名前:デフォルトの名無しさん :2006/02/13(月) 16:13:35
>>208

ttp://www.microsoft.com/japan/msdn/windows/windows2000/ntfs5.asp
MSのサンプルコード鵜呑みにしないように

227 名前:デフォルトの名無しさん :2006/02/13(月) 16:50:34
atomとmutexとsemaphoreがあるけど、それぞれどんな用途に使うべきなのか?
二重起動チェックにmutex使ってるけど、いんだろうか?


228 名前:デフォルトの名無しさん :2006/02/13(月) 16:53:12
別に悪いことはない

229 名前:デフォルトの名無しさん :2006/02/13(月) 19:55:33
こんばんは、
EPSファイルを、GIFファイルに、変更するフリーのDLLないでしょうか。

できれば、EPSを読み込んだあと、GetPixel()とかできるのがよいです・・。



(初心者にC++を教えるスレとの重複投稿です。解決したら、両方のスレに報告させていただきます)


230 名前:デフォルトの名無しさん :2006/02/13(月) 19:59:54
(゚д゚)

231 名前:デフォルトの名無しさん :2006/02/13(月) 20:00:42
ぼくはまるちしたけどわるくないもん!


232 名前:デフォルトの名無しさん :2006/02/13(月) 20:17:32
ぼくはうんちしたけどわるくないもん!

233 名前:デフォルトの名無しさん :2006/02/13(月) 20:19:47
うんちした子は家には入れません!
外で反省しなさい!!

234 名前:デフォルトの名無しさん :2006/02/13(月) 21:02:10
うんちぽすと

235 名前:デフォルトの名無しさん :2006/02/13(月) 21:19:46
>>227
マルチスレッドプログラミング相談室で質問した方が良いんじゃないかとは思うが…。
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
うんちうんちってそんな楽しいか?ガキだな…。

236 名前:デフォルトの名無しさん :2006/02/13(月) 21:38:47
誰だって誰かの子供だよ!

237 名前:デフォルトの名無しさん :2006/02/13(月) 21:54:55
>>235
Win32APIのスレに居るくせにATOMってのが何かわからないって・・・本気かおまえ
RegisterClass(Ex)とか使ったことねぇのか

238 名前:デフォルトの名無しさん :2006/02/13(月) 22:05:40
正直ATOMはWIN16の範疇だとおもう。

239 名前:デフォルトの名無しさん :2006/02/13(月) 22:15:46
>237
は?atomとmutexとsemaphoreが並んで書かれてたから
マルチスレッド絡みの単語で知らないのがあるのかと思っただけだろ。
小文字で書いてあるしな。

大文字小文字の区別は言語仕様の範疇だぞ。

240 名前:デフォルトの名無しさん :2006/02/13(月) 22:19:52
うはwwww

241 名前:デフォルトの名無しさん :2006/02/13(月) 22:23:08
すごい言い訳w

242 名前:デフォルトの名無しさん :2006/02/13(月) 22:43:08
>>239
C/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"

243 名前:デフォルトの名無しさん :2006/02/13(月) 23:27:05
てつわん

244 名前:デフォルトの名無しさん :2006/02/13(月) 23:35:44
うんこは寝て食えってば

245 名前:デフォルトの名無しさん :2006/02/14(火) 00:35:27
>>229
マルチに回答するのはアレだが、ちょっと気になる話題なので・・・。

GIFに直接変換するものは知らないが、ifepsgs.spiというSusieプラグインならある。
動作にはGhostscriptが必要。ファイル名を渡した場合には一応動くが、
メモリ上のファイルイメージを渡したときにはバグって動かない、
メモリを2回deleteするバグあり、プレビュー付きEPSだと扱えないなど
いくつか問題があった。
しょうがないので、自分でパッチを書いてみたが・・・まあ、マルチだし。

246 名前:デフォルトの名無しさん :2006/02/14(火) 00:35:56
チョコのAPI下さい

247 名前:デフォルトの名無しさん :2006/02/14(火) 00:39:18
>>246
今年は中止だよ

248 名前:デフォルトの名無しさん :2006/02/14(火) 00:43:33
http://www.geocities.jp/vanalenjp/

249 名前:デフォルトの名無しさん :2006/02/14(火) 00:44:45
SetProcessWorkingSetSize関数について質問があります。
第2第3引数に-1を指定してすることによりメモリの使用量を一時的に減らすことが出来たのですが
これはMSDNに書かれているようにスワップアウトしているだけで
実際の使用量については一切変わっていないのでしょうか?
それとも不必要な部分を解放してくれているのでしょうか?

250 名前:デフォルトの名無しさん :2006/02/14(火) 00:50:04
そう書いてあるんだからそうなんだろ


■過去ログ置き場に戻る■ 1- 次250 最新50
DAT2HTML 0.33f Converted.