[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 06/22 14:14 / Filesize : 234 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Win32API質問箱 Build53



1 名前:デフォルトの名無しさん [2007/05/11(金) 20:27:08 ]
スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんやお姉さんたちが答えてくれるかも。

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

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

2 名前:デフォルトの名無しさん [2007/05/11(金) 20:28:47 ]
52 ttp://pc11.2ch.net/test/read.cgi/tech/1176828891/
51 ttp://pc11.2ch.net/test/read.cgi/tech/1174416295/
50 ttp://pc11.2ch.net/test/read.cgi/tech/1171721448/
49 ttp://pc10.2ch.net/test/read.cgi/tech/1168708801/
48 ttp://pc10.2ch.net/test/read.cgi/tech/1166172047/
47 ttp://pc8.2ch.net/test/read.cgi/tech/1163375772/
46 ttp://pc8.2ch.net/test/read.cgi/tech/1159158014/
45 ttp://pc8.2ch.net/test/read.cgi/tech/1156032806/
44 ttp://pc8.2ch.net/test/read.cgi/tech/1151501925/
43 ttp://pc8.2ch.net/test/read.cgi/tech/1148005509/
42 ttp://pc8.2ch.net/test/read.cgi/tech/1144962549/
41 ttp://pc8.2ch.net/test/read.cgi/tech/1141392216/
40 ttp://pc8.2ch.net/test/read.cgi/tech/1138893959/
39 ttp://pc8.2ch.net/test/read.cgi/tech/1136673250/
38 ttp://pc8.2ch.net/test/read.cgi/tech/1133798345/
37 ttp://pc8.2ch.net/test/read.cgi/tech/1131884991/
36 ttp://pc8.2ch.net/test/read.cgi/tech/1128951330/
35 ttp://pc8.2ch.net/test/read.cgi/tech/1125850096/
34 ttp://pc8.2ch.net/test/read.cgi/tech/1122723009/
33 ttp://pc8.2ch.net/test/read.cgi/tech/1120153520/
32 ttp://pc8.2ch.net/test/read.cgi/tech/1117271829/
31 ttp://pc8.2ch.net/test/read.cgi/tech/1114762194/

3 名前:デフォルトの名無しさん [2007/05/11(金) 20:29:30 ]
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 名前:デフォルトの名無しさん [2007/05/11(金) 20:30:13 ]
- MSDN ホームページ
www.microsoft.com/japan/msdn/
- MSDN ライブラリ
msdn.microsoft.com/library/ja/
- MSDN 2 ライブラリ
msdn2.microsoft.com/ja-jp/library/
- 猫でもわかるプログラミング
www.kumei.ne.jp/c_lang/
- Google
www.google.com/
- MSDN ライブラリ 2006年6月版
www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=373930CB-A3D7-4EA5-B421-DD6818DC7C41
- Platform SDK Update
(WindowsR Server 2003 R2 Platform SDK Full Download)
www.microsoft.com/downloads/details.aspx?FamilyId=484269E2-3B89-47E3-8EB7-1F2BE6D7123A
www.microsoft.com/msdownload/platformsdk/sdkupdate/XPSP2FULLInstall.htm
www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm

- Win32 API入門
wisdom.sakura.ne.jp/system/winapi/
- Win32 プログラミング入門
www7.plala.or.jp/keny01/

- Advanced Windows (書籍)
www.amazon.co.jp/exec/obidos/ASIN/4756138055

-おまけ
dat落ちしている過去スレが見れるかも。Build19が見たい人、余裕のある人は●でも買ってやってくれ。
www.2chsearch.info/index.php?b=tech
makimo.to/cgi-bin/search/search.cgi?q=Win32API&andor=AND&sf=2&view=table&D=tech


5 名前:デフォルトの名無しさん [2007/05/11(金) 20:31:09 ]
MSDN日本語版は誤訳があったり、一部欠けていたりするなど不完全なため、英語版推奨。
msdn.microsoft.com/library/
msdn2.microsoft.com/en-us/library/

MSDN ライブラリ 2006年12月版
www.microsoft.com/downloads/details.aspx?FamilyID=94596af5-cc58-45af-a14b-df627a31e783&DisplayLang=ja

MicrosoftR WindowsR Software Development Kit for Windows Vista? and .NET Framework 3.0 Runtime Components
www.microsoft.com/downloads/details.aspx?FamilyID=c2b1e300-f358-4523-b479-f53d234cdccf&DisplayLang=en


6 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 20:36:07 ]
>>1

>>前スレ997
Delphiスレで聞けよ
API関係無ぇじゃねぇか
とりあえず、整合性が取れてないのはおまいのコーディングが間違ってる可能性が99.99%

7 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 20:45:18 ]
前スレ>>997
Spy++でダイアログの親がTfrmMainってのはどこをどう見て決定したん?
Delphiのフォームは全てトップのアプリケーションウィンドウであるTApplicationに所有されてるはずなんだが

8 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 20:48:04 ]
見た目だろw

9 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 20:57:52 ]
毎年のことだが、この時期はアホな質問が多いですな

10 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 21:05:14 ]
僕バッカー!



11 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 21:14:27 ]
>>10
そうでもないよ。

12 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 21:53:41 ]
>>10
おい、忘れ物だぞ
っデ

13 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 22:08:10 ]
デ僕バッカー!

14 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 22:09:26 ]
僕バッカー!っデ

15 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 22:13:06 ]
何人居るんだよww


16 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 22:17:05 ]
僕バッカデー!

17 名前:デフォルトの名無しさん [2007/05/11(金) 23:13:30 ]
        --、ヽ//彡-
      ,= '::::, ̄、:::::::::::`:ヽ.、
    .,..::彡シ'    ` 、:、:::::::::`>=-、_   今日も明日も
  ,/シノ     ,,__  ```ヽ 、| i ,`ヽ .` ヽ 、   日曜日
  /:/        ~`     `` `-< |    `ヽ、
..//シ ,,       ---、       _,,イi      `ヽ、 そしてまた
//|| ,i!'      ,-=--彡       |.| i      .`、  明後日も……
/|         `----''    ,    .|.|/,        `、
||  / ,,--i    .、`--'     `-   .ノ''          `、  明明後日も…
.||  .!=r' .ノ.i ,  ' `i--''      .,  /            `i
 |  ` ` '-.' (__,i- '~ 、      ./ ./             .!
 .>、  .-、  , - ニ⊃ 、    ノ _/              |
./ -ヽ、ヽ、 _`ニ三-'   ,,,,,=ニ/~ |               |
i  -='-`- >'  ̄ ̄ ヽ,- '     |'           ,- /  |
| / , '  ̄!-─    /       ヽ ヽ _      / ノ   |  そしてまた
! '    i' ,-    |        ヽ  ヽ    /-=ニ--  .|
.|     `7 _    |               ノ- 、    ノ  次の日も
 `i、    `-i_ , 、 ,>、           , - '` 、 `    |
  |`i- 、__,,,, , i''i~`ヽ、__,,, -i-- 'i'~i i  ヽ     |  次の日も
  / .\    ,ノ | .\  ~     ヽ  .|ノノ   |    ,ノ
  .|      '   ,)  `     ヽ、  .|ニ-.'   !、  |   次の日も
 , -`─── '  ̄フ          `i  .|      >-'
 | i' i' .i-.,--,.- '' ̄` --  、     ' _, '   , ノ'~    次の日も
 ` ``-!-!、」  i'., -, ,_   `──ニフ`──''''''~
      . ̄` ^ '-.!、!、 ,、_, -'''''~

18 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 23:23:05 ]
ふふふ、決算賞与で40マソ出た俺は勝組。
来月末はその倍ww

19 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 23:26:22 ]
>>18
スレ違い・・・・クソー羨ましい

20 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 23:40:14 ]
自給3000円のバイト見っけた俺も勝ち組



21 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 23:42:48 ]
前スレの最後で出てたShell Credential Providerだが、MSDNには確かに
> For all credential provider information and questions, send e-mail to the
> Shell Credential Provider alias: credprov@microsoft.com.
とか書いてる場所が残ってた。
msdn2.microsoft.com/en-us/library/aa480152.aspx

22 名前:デフォルトの名無しさん [2007/05/12(土) 06:30:14 ]
GINAってなんぞや

23 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 06:35:01 ]
このスレってインテリジェンス検索エンジンなのか?

24 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 16:40:58 ]
Graphical Identification and Authentication
ってことはGInAが本来の綴りなのか。

25 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 16:51:08 ]
意味不明

26 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 18:46:54 ]
>>25
誰に言ってんの?

27 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 20:12:21 ]
お前

28 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 20:35:48 ]
タスクトレイに登録されてるアイコン一覧を取得するにはどのようなことをすればいいのでしょうか。
できれば、explorerのプロセスが動いてないときでも取得できるように。

29 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 20:37:40 ]
FindWindow

30 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 20:39:42 ]
GINAはvistaで廃止だっけ



31 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 20:41:22 ]
廃止。前スレで既出

32 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 20:59:03 ]
>>28
explorerが動いてなきゃアイコンもネェヨ


33 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 23:20:53 ]
VISTAで生ソケット扱うのってどうすればいいの?

34 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 00:21:13 ]
>>28
理論的には、explorerより先に起動して、
自分がタスクトレイの振りをしてAPIフックかなんかしてアイコン登録を受け付け、
それを本物のexplorerに登録するような挙動をすれば、
自身が稼働中は全てのアイコン操作を把握できるかもな。

35 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 14:50:25 ]
実行時の大きさを最大にしたショートカットから起動した時
大きさを変更させないようにするにはどうすればいいでしょうか?
WM_SIZEからリサイズしているんですが、どうもWM_SIZEが送られてくる前に最大化されているようですので…

36 名前:デフォルトの名無しさん [2007/05/13(日) 15:22:25 ]
CopyFileでネットワークフォルダにあるファイルをコピーしようとしたら
ERROR_BAD_NETPATHエラーがでるのですが、下記のコードで何処がおかしいのでしょうか?

::CopyFile( "\\\\testgroup\\testserver\\Backup\\test.txt", "c:\\data\\test.txt", false );


37 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 15:24:00 ]
"\\\\testgroup\\testserver\\Backup\\test.txt"

38 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 15:34:51 ]
>>36
要は、そんなネットワークファイルネェヨって怒られてんだよ

39 名前:デフォルトの名無しさん [2007/05/13(日) 15:38:17 ]
>>37-38
エクスプローラでそのネットワークフォルダにtext.txtをコピーしたんですが
書き方的には↓であっていますよね?
\\グループ名\コンピュータ名\フォルダ名\ファイル名

40 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 15:40:22 ]
\\コンピュータ名\フォルダ名\ファイル名




41 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 15:41:26 ]
>>39
グループ名はいらねんじゃねーか?

42 名前:デフォルトの名無しさん [2007/05/13(日) 15:45:18 ]
>>40-41
ありがとうございます。
コンピュータ名から書けば正常にコピーできました。

43 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 16:19:18 ]
>>35
WinMainの第4引数がSW_SHOWMAXIMIZEDだったら
SW_SHOWNORMALに置き換える。

44 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 16:45:03 ]
>>42
マイネットワークから目的のコンピュータの目的のファイルが有るフォルダ開いてみりゃパスなんて一目瞭然なんだが
なぜそれを間違えれるのか・・・

45 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 16:58:50 ]
EnumDisplayDevicesなのですが、
日本語版と英語版で引数の型が違います。。。
msdn.microsoft.com/library/ja/jpgdi/html/_win32_enumdisplaydevices.asp
msdn2.microsoft.com/en-us/library/ms533226.aspx

いったいどちらを信用すればいいのでしょうか?

46 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 16:59:49 ]
ヘッダ

47 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 17:08:23 ]
>>45
日本語版の説明の「現在使われていません」の現在は2007年じゃないぞ。
たぶん2000年頃の話。

48 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 17:18:27 ]
日本語版ってメンテされてないの?

49 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 17:21:29 ]
こういう資料に日付も入れないで「現在」って書くのは微妙だな。
Wikipediaなんかもものすごく時代遅れな記述が堂々と「現在」とか書かれてたりするし。
見つけ次第直してるけど

50 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 17:55:15 ]
\\?\c:\hoge\hoge

\\.\c:\hoge\hoge
というのはどういう意味でしょう?



51 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 18:02:23 ]
それってWin32API関係あるのか?

52 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 18:02:29 ]
上はパス名の解析を無効にする
下は「このコンピュータ」

53 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 18:11:22 ]
>>46-49
どうもありがとうございます。

このAPI、内部で「マイナーバージョンアップ」しているみたいですね。
VirtualPC上のWin98では最初の引数に非NULLを与えるだけで落ちます。
使うなってことか、もしくはOSの種類によって切り替えろってことなんでしょうか……(^^;

54 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 18:16:18 ]
切り替えるしかないだろうね
実行ファイルに互換モードが適用されたりするとさらにカオス

55 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 18:23:05 ]
>非NULLを与えるだけで落ちます。
ワロタw 
9x対応超がんがれ

56 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 19:39:13 ]
>>43
有難うございます。
試してみますね

57 名前:デフォルトの名無しさん [2007/05/13(日) 19:46:09 ]
モニタの電源を切るを作動させるAPIがあった教えて下さい
任意のタイミングでモニタを省電力モードにさせたいです
よろしくお願いします

58 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 20:33:51 ]
SC_MONITORPOWER

59 名前:57 mailto:sage [2007/05/13(日) 21:05:54 ]
>>58
出来ました
ありがとうございました

60 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 22:37:05 ]
GDI+を使おうとしたのですが、
gdiplusimaging.h(67) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
gdiplusimaging.h(67) : error C2440: '初期化中' : 'const char [37]' から 'int' に変換できません。

こんな感じのエラーが121も発生します。
なぜですか?



61 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 22:42:02 ]
<gdiplus.h>より先に<windows.h>をWIN32_LEAN_AND_MEANなしでインクルードしている?

62 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 23:06:47 ]
>>61
助かりました。ありがとうございます。
気がつきませんでした。

63 名前:デフォルトの名無しさん [2007/05/15(火) 02:35:36 ]
mciSendStringで、1回のプログラムで
複数のmidを流す場合、どうすればいいでしょうか。

open hoge.mid → play hoge.mid で再生し、曲を変えるときは
stop hoge.mid → close hoge.mid → open foo.mid → play foo.mid
とやっているんですけど、CPU率が上がりプログラムが動かなくなります。
戻り値は成功の0が返って来ます。

64 名前:デフォルトの名無しさん [2007/05/15(火) 14:31:14 ]
ウォークエリアの幅or高さが200以下になったら、
幅or高さを表示するスクロールバーが現れるウィンドウを作っています。
WM_SIZEメッセージを以下の様に処理したのですが、上手くいきません。
(何がダメなのかというと、ウィンドウサイズが変更されて、 さらにもう一回ウインドウサイズが変更された時に、
 スクロールバーが1ターン遅れて適応されるのです。)

ウィンドウサイズ変更後、即スクロールバーが現れたり消えたりするためには、
どこをどう直したら良いのでしょうか??


case WM_SIZE:
{
RECT rt;
GetClientRect(hWnd,&rt);

LONG style = GetWindowLong(hWnd,GWL_STYLE);
if(rt.right <= 200)
style |= WS_HSCROLL;
else
style &= ~WS_HSCROLL;

if(rt.bottom <=200)
style |= WS_VSCROLL;
else
style &= ~WS_VSCROLL;

SetWindowLong(hWnd,GWL_STYLE,style);

}
return 0;

65 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 14:38:24 ]
>>64
WM_SIZING, WM_GETMINMAXINFOとかかな?

66 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 14:39:22 ]
>>64
RedrawWindow

67 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 14:44:05 ]
>>64
ttp://msdn2.microsoft.com/en-us/library/ms633591.aspx
>if you change any of the frame styles, you must call SetWindowPos
>with the SWP_FRAMECHANGED flag for the cache to be updated properly.

68 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 14:51:44 ]
>ウォークエリアの幅or高さが200以下になったら、
  ̄ ̄ ̄ ̄ ̄ ̄
通路?

69 名前:デフォルトの名無しさん mailto:sage [2007/05/15(火) 14:53:09 ]
ワロタw
ワークエリアだな。

70 名前:64 mailto:sage [2007/05/15(火) 15:59:24 ]
お〜、ちゃんとできましたデス♪
アリガトウございました m(。−_−。)m

>>68 >>69
あはは〜、間違えました^^;)



71 名前:デフォルトの名無しさん [2007/05/16(水) 01:31:03 ]
質問!
別のアプリの中のdatagridviewの要素を抜き出すにはどうすればいいの?
listviewならLVM_GETITEMだけど、これでは無理でした

72 名前:デフォルトの名無しさん [2007/05/16(水) 02:04:43 ]
MCIとかMCIWndとかって、WIN32らしからぬ野暮ったさっていうか、洗練されてないオールドタイプって感じなんだけど
関数とか引数とか・・ なんでなんでしょ?
なんか歴史と関係あるの?WINSOCKSみたいな

73 名前:デフォルトの名無しさん mailto:sage [2007/05/16(水) 02:16:16 ]
買収・合併

74 名前:デフォルトの名無しさん mailto:sage [2007/05/16(水) 07:19:56 ]
まるで、win32apiが洗練されてるかのような・・・w

75 名前:デフォルトの名無しさん mailto:sage [2007/05/16(水) 08:27:15 ]
普通のAPIがスイッチ式だとしたらMCIは音声認識だからな。
高度なんだかアナログなんだか

76 名前:デフォルトの名無しさん mailto:sage [2007/05/16(水) 16:03:30 ]
スクリプトに組み込むには使いやすいんだよね‥‥>MCI


77 名前:デフォルトの名無しさん mailto:sage [2007/05/16(水) 19:33:08 ]
ショートカットファイルをその内容にしたがって正しく起動する
簡単な方法ってあるのでしょうか?

お願いします。

78 名前:デフォルトの名無しさん mailto:sage [2007/05/16(水) 19:37:48 ]
ダブルクリックする

79 名前:デフォルトの名無しさん mailto:sage [2007/05/16(水) 20:58:40 ]
>>77
ShellExecute

80 名前:デフォルトの名無しさん mailto:sage [2007/05/16(水) 21:27:43 ]
>>77
くりぷろ



81 名前:77 mailto:sage [2007/05/16(水) 22:57:11 ]
ShellExecuteでできました。
ありがとうございます。

82 名前:デフォルトの名無しさん mailto:sage [2007/05/17(木) 00:05:29 ]
ぐあ・・・緑クロスなんて出るのか。めっちゃ欲しいぜ

83 名前:デフォルトの名無しさん mailto:sage [2007/05/17(木) 00:11:30 ]
くりぺろ
ぺたぺた

84 名前:デフォルトの名無しさん mailto:sage [2007/05/17(木) 18:53:46 ]
WM_CREATEにおいて、char配列の中身を全てエディットコントロールに
表示させているのですが、何故かスクロールバーが自動で下までスクロールされません。

//char配列の表示
SendMessage(hLog_s, EM_SETSEL, 0, -1);
SendMessage(hLog_s, EM_SETSEL, -1, -1);
for(i=0; i<10; i++){
  if(lstrcmp(logs[num][i], "*")!=0){
    SendMessage(hLog_s, EM_REPLACESEL, 0, (LPARAM)logs[num][i]);
    SendMessage(hLog_s, EM_REPLACESEL, 0, (LPARAM)"\r\n");
  }
}
return 0;

しかし、ボタンを押したときにこれと同じ動作をさせると、
スクロールバーが自動で下に移動し、最後の行が表示される状態になります。
これは何故WM_CREATEだとスクロールしないんでしょうか?

85 名前:デフォルトの名無しさん mailto:sage [2007/05/17(木) 19:42:19 ]
mciSend系で、メモリからロードというのは使えないですよね?

86 名前:デフォルトの名無しさん mailto:sage [2007/05/17(木) 21:01:48 ]
>>84
ボタン時はEM_SCROLLCARETが走るんじゃない?

87 名前:デフォルトの名無しさん mailto:sage [2007/05/17(木) 23:37:32 ]
>>86
WM_CREATE時にスクロールさせることは不可能なのでしょうか?
SendMessage(hLog_s, EM_SCROLLCARET, 0, 0);を追加してみても結果は変わりませんでした。

88 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 00:17:34 ]
>>87
なぜ、WM_CREATE時に拘る?

WM_CREATE後半にRDW_INTERNALPAINTとRedrawWindowを組み合わせて
WM_PAINTを呼んだタイミングでいいんじゃね?

GetUpdateRectで更新領域の有無を判定すれば、
簡単なOnInitialUpdate

89 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 00:35:59 ]
>>88
WM_CREATE時に拘るわけではありませんが、
そん時に処理するのが一番面倒じゃなくていいかなと・・・。
というよりも、ウィンドウを作成した直後に1度だけ行えばいい処理なので、
WM_PAINT内で処理するのもどうなのでしょうか・・・

90 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 00:44:16 ]
EM_LINESCROLLで無理やりスクロールさせることで解決しました。
しかし、何でWM_CREATE時に限って出来ないのかは謎です・・・。



91 名前: ◆3.JjF77I26 mailto:sage [2007/05/18(金) 01:05:14 ]
>>90
WM_CREATEはウィンドウを生成する前に送られてくる

92 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 02:06:50 ]
>>91
ウィンドウを生成する前にですか。
なら、WM_CREATE時にCreateWindow()で色々作るってのも
何か変な感じがしますけど、まぁそういうものだ、で納得する事にします(´・ω・`)

93 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 03:37:59 ]
WM_IME_COMPOSITIONにおいて、if(GCS_COMPSTR & lp)で
現在の編集文字列が習得された、または最新化された時に処理を行えると思うのですが、
これは変換中の文字をBackSpaceで削っていって、最後の1文字を消したときは拾えないですよね?
変換中の文字を削っていって最後の1文字を消した時に処理を行いたいのですが、
どうすればいいでしょうか?

94 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 04:30:58 ]
MSNのメッセンジャーとかで、ウィンドウを最小化している時にメッセージを受け取ったら
タスクバーのところがオレンジ色にピコピコして知らせてくれると思うのですが、
それはどのようにしているのでしょうか?

95 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 04:47:57 ]
つピコピコハンマー

96 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 05:07:13 ]
とりあえずFlashWindowEx()だと色が微妙なのですが・・・
あと、ミリ秒指定ではなく、アクティブになるまで点滅させたいです

97 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 05:15:54 ]
>>96
すみません、どうやらタスクバーの方はオレンジ色になるようですね。
ミリ秒とカウント設定しても、指定した秒数の最後のほうの一瞬しか色が変化しないのですが
これは何でなんですか?

98 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 08:08:24 ]
>>92
わかるわかる。

MFCはOnInitialUpdateがあるから、
そんなこと意識せずにそこで記述するが、
OnInitialUpdateの互換(?)処理が>>88だったら、
WM_PAINTは不恰好だよな。

99 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 08:11:20 ]
>>96−97
FLASHWINFO構造体の中身あげ

100 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 10:02:35 ]
manifestファイルつきのWin32APIオンリーの簡単なテストプログラムを作ったのですが、
Aという名前のフォルダーでは正しく実行できるのに、Bという名前のフォルダーでは実行できません。
Process Monitorで調べてみたら、Aではmanifestを読み込んでいるのに、Bでは駄目。

で、Bのフォルダー名をCにリネームしたらmanifest読み込みました。
逆にAをBにリネームしたら、今度は駄目になった。
なので、Bという名前のフォルダーに何か制限が掛かっているような気もするのですが、
これって、どのあたりのAPIが絡んでいるのでしょうか?



101 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 10:16:21 ]
>>91
嘘つくな
ttp://msdn2.microsoft.com/en-us/library/ms632619.aspx
>The window procedure of the new window receives this message after the window is created, but before the window becomes visible.

102 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 10:54:26 ]
僕ハッカー

103 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 12:14:56 ]
僕バッカー!

104 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 13:13:23 ]
バカバッカー!

105 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 15:17:45 ]
>>99
info.dwFlagsをFLASHW_ALLからFLASHW_TRAYに変更したら正常に動作しました。
しかし、点滅のタイミングというか、点滅の間隔というか、不規則に点滅します。
なんか0.5秒くらい点滅したり、ほんと一瞬だけ色が変わったり・・・
何故でしょうか?一応FLASHWINFOの中身をあげておきます。

info.cvSize = sizeof(info);
info.hwnd = hwnd;
info.dwFlags = FLASHW_TRAY | FLASHW_TIMERNOFG;
info.uCount = 0;
info.dwTimeout = 500;

106 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 19:01:21 ]
>>105
FLASHW_TIMERNOFGをFLASHW_TIMER にしてみるとかとかとかとか

107 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 19:11:39 ]
>>106
FLASHW_TIMERにしてもやはり、点滅の間隔がおかしいです。
なんかもの凄く気持ち悪いのですが・・・(´・ω・`)

108 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 19:37:17 ]
作成したアプリケーションを他のパソコンで起動させたところ、
アプリケーションの構成が正しくないと表示され起動されませんでした。
自分のパソコンでは正常に動作するのですが・・・何が原因なのでしょうか?

109 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 19:37:36 ]
>>107
Exじゃないほうは使ってみた?

110 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 19:45:37 ]
>>109
ウィンドウがアクティブになるまで点滅させたいので、Exじゃないといけないような・・・。



111 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 19:46:32 ]
>>108
DLLが無いのでは
もしくは、デバッグビルドを渡してたり?

112 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 19:52:55 ]
>>111
それはデバッグなしで実行したときにDebugフォルダに出来るexeファイルの事ですか?
まさにそれなんですが、それは実行ファイルとは違うのでしょうか?

113 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 19:53:17 ]
>>108
ランタイムDLLのバージョン違いだな

114 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 20:01:10 ]
>>112
ビルドに何使ってるかわからんが、VC++とかだと
DebugとReleaseを切り替えられる。
Debugは開発環境で動かすものだ。

115 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 20:05:15 ]
>>108
つまり、他のパソコンにDLLを入れないといけないという事ですか・・・
あまりそういうのは詳しくないので申し訳ないのですが、具体的にどうすればいいのでしょうか?

>>114
Microsoft Visual Studio 2005です。一応Microsoft Visual Studio 2005がインストールされている
他のパソコンでは正常に動作するのを確認できています。

116 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 20:07:40 ]
>>114
Releaseにしてビルドしたらエラーが102個も出てしまいました・・・。
そういう事なのでしょうか・・・。・゚・(ノД`)・゚・。

117 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 20:09:07 ]
VS2005を使ってると予想

118 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 20:17:24 ]
>>116
プロジェクトのプロパティでいろいろ設定しなかったか?
あれはDebug、Release、共通、の3通りで設定できるんで
Debugだけ追加でライブラリ指定してたりするとはまる

119 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 20:26:06 ]
そのあたりではまる人間はVC初心者スレ行きだ

120 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 20:49:45 ]
>>115
「プロジェクト」→「プロパティ」→「構成プロパティ」→「C/C++」→「コード生成」

「ランタイム ライブラリ」を
「マルチスレッド デバッグ DLL (/MDd)」なら「マルチスレッド デバッグ (/MTd)」に
「マルチスレッド DLL (/MD)」なら「マルチスレッド (/MT)」にしてビルド



121 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 21:04:14 ]
#pragma commentで指定する俺は勝ち組

122 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 21:51:49 ]
>>120をやるほかに、ランタイムを用意する方法もある。
VC++ 2005ならランタイムは別途インストールするか、
マニフェスト書いてEXEと同梱する(ググれば何件か例が見つかる)

SP1を当てているかどうかで別ファイルになるんで要注意(上がSP1用)
www.microsoft.com/downloads/details.aspx?FamilyID=200b2fd9-ae1a-4a14-984d-389c36f85647&DisplayLang=en
www.microsoft.com/downloads/details.aspx?FamilyID=32bc1bee-a3f9-4c13-9c99-220b62a191ee&DisplayLang=ja

123 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 21:55:25 ]
BCBでVCLのスタティックリンクし忘れはしないけどbccのランタイムリンクし忘れで他PCで動かないとかはよくやる/(^o^)\

124 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 21:58:59 ]
デバッグ用のDLLは配布禁止(ヘルプのどこかに書いてある)なので注意!!


125 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 22:21:46 ]
ごめんなさい、ご飯を食べてました。
>>118のように、Releaseでリンカ追加したらエラーはなくなり、
他のパソコンでも無事起動させることが出来ました。
ありがとうございます。

でも、他のパソコンでやると何故か変な動作したりするので
これからそれを直そうと思います。Vistaのせいかな・・・。

126 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 22:25:09 ]
なんか流れてしまってますが、>>105をよろしくお願いします。
気持ち悪いです。

127 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 22:45:43 ]
>>126
メッセージループが回らないと点滅しないな、これ。
内部的にWM_TIMER使ってるのかもしれん。

128 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 22:49:33 ]
>>100
manifestを読み込んでいるかどうかはどうやって判断した?

129 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 00:30:51 ]
>>100
OSは?manifestはリソース埋め込み?
Vistaだと初回起動時に外部manifestが無い場合は次からは読み込まれないようだ。
ttp://sakura-editor.sourceforge.net/cgi-bin/cyclamen/cyclamen.cgi?log=dev&tree=c4802
一度XP互換モードにすれば解除される。

130 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 02:49:08 ]
>>128
SysinternalsのProcess Monitorです。

>>129
それだ!!! 助かりました、ありがとうございます。
この挙動は仕様なのかな。ってことは、Superfetch絡みですかねぇ。



131 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 13:45:36 ]
おぉ久々にためになる情報だ
知らないとハマるなこりゃ

132 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 15:13:23 ]
知ってる人は知っていると思うが、
mt.exe(Manifest Tool)を使えば、以前にVS6等で作ったexeに、再コンパイル・リンク無しで
mnifestを埋め込むことができるよ。


133 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 16:50:25 ]
manifestなんてマンドクセ

134 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 23:11:14 ]
SendMessage(hLog, EM_LINELENGTH, (WPARAM)3, 0);

EM_LINELENGTHって、第3引数番目の行までのバイト数を取得するんですよね?
上の場合だと、エディットコントロールhLogの3行目までのバイト数を返すんだと思うのですが、
第3引数の数字をいくつに変えても同じ数値が戻ってきます。
これは何故なのですか?

135 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 23:16:19 ]
>>134
指定した文字インデックスを含む行の文字数を返す。

136 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 23:29:36 ]
>>135
あるサイトの説明によると、
複数行TextBoxにおいて、指定した行インデックスの一つ前の行までのバイト数を取得する
らしいんですけど、行インデックスとは、例えば第3引数に3を指定した場合、
3行目の先頭が行インデックスでいいんですか?

137 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 23:33:42 ]
その説明は間違っている。今すぐ忘れなさい。

138 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 23:38:17 ]
>>137
Σ(TдT)えぇぇぇぇ!?
では、指定した行までのバイト数を取得するものはないのでしょうか?
EM_GETLINEで1行ずつバイト数足していくしか方法ないですか?

139 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 00:22:48 ]
>>138
つ EM_LINEINDEX
指定行の最初の文字の文字インデックスを返す。

140 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 00:25:27 ]
どうやらEM_LINEINDEXというのがあるようですね。そのサイトに載ってるのが全部だと思ってました・・・。

とりあえずは解決しました。しかし、エディットコントロール内にどんどん書き足していき、
最大行数を超えると、先頭の行から消していくわけですが、出力する度に
エディットコントロールの最上部に移動し、また最下部に戻すためちらついてしまいます。
SendMessage(hLog, WM_SETREDRAW, FALSE, 0);とかしてみたのですが、
全く変わりませんでした。このちらつきを抑えたいのですが、何かいい方法はないでしょうか?




141 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 00:29:39 ]
>>139
ありがとうございます。微妙にすれ違いになったようですね(´・ω・`)

142 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 00:30:53 ]
そんな変なサイト読まないで、マイクロソフトのドキュメント見ろよ。

143 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 00:42:06 ]
>>142
MSDNがなかなか・・・なかなかで。
どうやらちらつく時と、そうでない時があるようです。
また、時々画面に白い横線が入ったりしてて気持ち悪いです。
どのくらい気持ち悪いかというと亜jsふぃじゃ;jfヵfdぁじふぇくらいです。

144 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 01:38:20 ]
意味不明

145 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 01:58:14 ]
俺最強

146 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 02:01:38 ]
俺西京

147 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 08:38:34 ]
>>143
オフライン版は使ったことある?>>5

148 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 10:38:13 ]
>>140
WM_SETREDRAWが駄目なら、LockWindowUpdateはどう?
使った事無いけど。

149 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 12:07:05 ]
0→"ERROR_SUCCESS"
みたいにエラーから名前を取得する機構は無いですかね。

150 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 12:16:39 ]
FORMAT_MESSAGE_FROM_SYSTEM



151 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 12:54:43 ]
>>71をどなたかお願いします

152 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 13:24:56 ]
一般に無理

153 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 14:05:42 ]
>151
DataGridViewってdotNETの?それならそういうスレに行ったほうがいいと思う。

154 名前:デフォルトの名無しさん [2007/05/20(日) 14:13:35 ]
スレ違いかもしれないのですが、どこに書いたらいいのか分からないのでここで質問させてください。
記憶ディスクにセクタ単位でアクセスしたいのですが、
WindowsのAPIだけでそういうことはできるんでしょうか?
FAT32でもNTFSでもかまいません。方法があったら教えてください。

155 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 14:38:44 ]
NTならCreateFileで\\.\c:\のようにドライブを指定すれば、
あとはRead/WriteFileでいける。
Cとかならバックスラッシュのエスケープに気を付けろ。

9xならvwin32を叩く。
web.archive.org/web/20040620102307/tech.millto.net/~morry/vwin32/adio/index.html
俺がやったときには95 OSR2以前と以降で違う方法をとらないとうまくいかなかった。

156 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 14:45:13 ]
SP2から禁止されなかったっけ

157 名前:154 mailto:sage [2007/05/20(日) 14:50:52 ]
ありがとうございます。やってみます。

158 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 14:57:32 ]
>>155
ttp://homepage3.nifty.com/k-takata/mysoft/rwfd.html
↑ソース付きなので参考になるかも。

159 名前:158 mailto:sage [2007/05/20(日) 14:58:17 ]
>>155じゃなくて>>154だた。

160 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 16:01:27 ]
>148
LockWindowUpdateは解除したときに、デスクトップ全部の再描画が発生するよ。




161 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 16:15:10 ]
>>149

無理

162 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 18:55:32 ]
winerror.hをreadしてparseしてだな(ry

163 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 19:47:21 ]
タスクトレイのアイコンを右クリックして出るメニュー(TrackPopupMenu)の
メニューハンドルを取得するにはどうしたらいいでしょうか?

164 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 19:49:24 ]
タスクトレイのアイコンを右クリックして出るメニューは自分で作るものだろ?

165 名前:163 mailto:sage [2007/05/20(日) 19:50:25 ]
すみません、他のアプリです。

166 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 19:54:39 ]
>>163
TrackPopupMenuをAPIフックするとか

167 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 19:59:20 ]
メニューハンドルを深追いすると、WinAPIの暗黒に飲み込まれるぞ。

168 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 20:44:37 ]
>>166-167
マジですか!?
とりあえず深追いしない程度に頑張ってみます。
ありがとうございました。

169 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 21:22:32 ]
ポップアップするまでハンドルって分からないこともあるんじゃ?
WM_CONTEXTMENUとかでメニュー生成してたらアウトでしょ
ずっとメニューハンドル保持し続けてたらいけるかもしれないけど

170 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 21:24:25 ]
対象プロセスのウインドウを片っ端からモニタ。



171 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 06:08:00 ]
>>163
popupメニューの操作で起こるActionを
外部からのトリガで実行したいとか言ってた人?

前のスレで答え出てたぞ
SendMessageで WM_COMMANDとメニュー項目のid値なげればおk
id値はspy++でも使って突き止めれば行けるんでは

172 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 07:11:51 ]
行けたー━━━━(゚∀゚)━━━━!!!!
情報サンクス愛してる♪

173 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 08:02:08 ]
愛されたw

174 名前:デフォルトの名無しさん [2007/05/21(月) 16:27:54 ]
愛されたのは俺ですが

175 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 17:18:07 ]
>>173
誰だよw

>>174
妬くなよw

176 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 17:44:33 ]
>>174
上げるほど愛に飢えてるのかw

177 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 17:55:57 ]
僕愛人!

178 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 18:09:51 ]
僕ラマンチャ!

179 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 18:24:45 ]
(XPの)クラシックスタートメニューでコントロールパネルを展開するにしている時、
コントロールパネルのアイテムの増減が即座に反映されるようにするにはどうすればいいですか?
コントロールパネルを開いたら反映されているのですが、アイコンメニューが名前順で並べ替えしないと反映されません。

180 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 18:25:40 ]
reboot



181 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 18:28:00 ]
ちょw

182 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 19:15:13 ]
なのはって頭よさそうじゃん

183 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 19:16:21 ]
むやみにコントロールパネルに追加するんじゃありません!めっ!

184 名前:デフォルトの名無しさん [2007/05/21(月) 21:33:41 ]
エディットコントロールからデスクトップ等にミドルボタンでD&Dした時
ドロップした位置にファイルを作成するにはどうすればいいのでしょうか

185 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 21:54:40 ]
そんな仕様はMSのガイドラインになかった気がする。

186 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 00:00:58 ]
IShellFolderからGetUIObjectOfでDataObject作ってDoDragDropかいな?

187 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 01:24:30 ]
コンソール非表示のためにmainからWinMainに切り替えたんだが、そうすると
起動時にマウスカーソルが5秒程度砂時計になったままになる

長時間砂時計になるのを防ぐいい方法があったら教えてください

188 名前:デフォルトの名無しさん [2007/05/22(火) 02:04:24 ]
ありがとうございました
やってみます!

189 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 03:24:19 ]
IWebBrowser2でHTMLを表示しています。戻る・進むボタンをつけ、
それぞれのボタンの有効・無効を切り替えたいのですが、
GoBack(), GoForward()が実際に有効かどうか判定する方法が分かりません。
どうしたらよいでしょうか。


190 名前:デフォルトの名無しさん [2007/05/22(火) 03:25:07 ]
BCC用に作られたDLLを使いたいのですが、付属の.libファイルがVisualC++で使えません。
こういう場合って、LoadLibraryとGetProcAddressで、明示的にロードして使うしか方法が無いのでしょうか?
関数ポインタをいちいちロードしていくのは面倒なんですが・・・
BCCのように、DLLから.libファイルを作るのって無理なんですかね?



191 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 03:27:08 ]
>>187
メインスレッドが応答しないからそうなる。
別スレッドで実行しろ。

192 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 03:43:54 ]
>>189
ITravelLogStg

193 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 07:44:55 ]
>>189
DWebBrowser2インターフェイスでそういうイベントを捕まえられたはず

194 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 15:12:10 ]
32767を超えるウィンドウって・・・作れないの?
子ウィンドウ(hCWnd)内では一番底に配置してある部品の座標はright:900、bottom:40000なので、WM_CREATEの最後でMoveWindow(hCWnd,0,0,1000,41000)してある。
にも関わらず、その後に親ウィンドウからGetClientRect(hCWnd,&rt)したらrt.bottomが32767になる。
どーりでスクロールバがまともに動かない訳だ・・・
32676を超えるウィンドウってどーやって作るの?
#まさか出来ん??? って・・・秀○とか・・・そこらのテキストエディタってどーやってんだ?
#MFCか?

195 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 15:27:30 ]
>>190
名前忘れたがフリーソフトである
要は関数名列挙した.defファイルさえあれば.libは作れるんで、それを自動化したものだと思った


で、話変わるけど、GINA差し替えても「ようこそ」画面は維持できるようにする方法ってある?
1.4までの全APIをMSGINAのスタブにしただけのDLLでもようこそ画面は解除されちゃうんで・・・

196 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 15:28:18 ]
>>194
スクロールバーで子ウィンドウをスクロールさせる発想が間違ってる
子ウィンドウでなく描画位置をかえる

197 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 15:40:07 ]
>>190
VCなら付属のlib.exeじゃ駄目なのか

198 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 15:45:27 ]
>>194
スクロールバー自体が最大32767じゃなかったっけ?

199 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 15:47:14 ]
VC++ 2005EEでWin32APIとC++でゴリゴリ書いてるんだけど、
Windowsフォームアプリケーションみたいなボタンとかの
コントロールって張れるの?

200 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 15:51:49 ]
>>199
どういった意味で言ってるのかわからん。

コントロールをウィンドウに貼ると言うだけなら
普通にCreateWindowすればいいよん。
エディットコントロールならウィンドウクラスは"EDIT"で、WS_CHILD つけて
親ウィンドウを自分のウィンドウにして。



201 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 15:55:38 ]
>>196
> >>194
> スクロールバーで子ウィンドウをスクロールさせる発想が間違ってる
> 子ウィンドウでなく描画位置をかえる
ちょっと書き方が悪かったか。別にhCWndをMoveWindowとかしてないよ。
ちゃんとスクロールバが付けているhCWndの親をScrollWindowExで描画位置を変えてるよ。
#汎用的に使える様に子供として乗せる独自クラスを使っている。

ただ、この方法でなくても・・・↑独自クラス化しない・・・例えば 猫の第100章 SCROLLINFO構造体 の例の
WM_SIZE:のGetClientRectでも32767を超えた値を取れないんじゃないか?
#スマソまだ試してないんだけど^^;

202 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 16:02:27 ]
>>199
ダイアログリソース作ってコントロール配置して ::CreateDialog()。

203 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 16:02:53 ]
>別にhCWndをMoveWindowとかしてないよ。

なのに、GetClientRectにこだわってるのは何で?

204 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 16:04:36 ]
あと、たしかにWindows95/98/Meはウィンドウのサイズの上限は32767だけどね

205 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 16:11:23 ]
>>201
それならウィンドウをそこまで大きくする必要は無い

>>198
メッセージとして送られる値はshortだがSCROLLINFOはintまで使える
後は掛けるなり割るなりして描画位置をかえればいい

206 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 16:16:58 ]
>>203
> >別にhCWndをMoveWindowとかしてないよ。
>
> なのに、GetClientRectにこだわってるのは何で?
ん?? あれぇ、漏れなんか勘違いしてるかぁ?
描画位置を変えるって、所詮は自分のクライアント領域を上下とか左右にスライドさせている
感覚なのだが…ちゃうんけ?
だからクライアント領域の最大値を最初に SCROLLINFO siとかに設定してスクロールバの位置と表示
されるクライアント領域の位置のつじつまが合う様にしていると思っているのだが…


207 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 16:30:35 ]
仮に1000行のテキストがあったとする
クライアントには10行表示されたとして
そこから50行スクロールさせる
描画位置は51行、そこから60行までの10行を表示させればいい
1000行分のウィンドウサイズはいらない

208 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 16:36:33 ]
クライアントエリアの左上は常に 0, 0 なので
どんなにスクロールさせようとGetClientRect の値は
0, 0 を起点にした大きさでしか取得できんよ。

209 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 17:05:39 ]
>>207
いや、ちょっと待ってくれ。
確かに猫を例にしたのはちょっと悪かったが…
単に文章だけなら、そー言った方法も考えられるんだけど、実際にはクライアント領域には
さまざまなコントロール(ボタンやら)も載ってる訳で…
それらがスクロールバの動きに合わせて見え隠れするってのは、文字列みたいには
ゆかんだろう?

>>208
問題にしているのはrigth/bottomな訳だが…



どこかに良い例文はないかね? orz

210 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 17:10:09 ]
>>209
>>207は仮の話しだしヒント
コントロールを移動させろ



211 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 17:11:31 ]
>>209
色々貼り付けられている親のクライアント領域に 貼り付けられた子で
「子のウインドウrectを取って 親へScreenToClient する」 なら意味ありそうだが、
「子のクライアントrect 取って」 もしゃーないんじゃないか? ということを >>208 は言っている。

212 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 17:14:47 ]
>>209
文字もコントロールも変わらんよ

213 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 17:25:47 ]
>>209
OSを書き換える気がないなら、ウィンドウズに頼らずに自前で位置を管理して
見える所のコントロール(+α、tab等でフォーカスが次に移る可能性のあるもの)
だけ正しい位置になるようにすればOK。
あとは適当に表示されない位置に移動or非表示に。

ボタン等コントロールらしきものなどが配置された広大な領域を扱いたい
というだけなら、html ダイアログを作るという手もある。

214 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 17:35:11 ]
フォームビューみたいなことやりたいのかな。
そもそも32767までしか作れないというのはどうやったの?
普通に32767超えられるけど。

215 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 17:42:20 ]
Sleep()中にマウスカーソルが砂時計になるのですが、
これを矢印のままにしたいです。どうすればできますか?
MFCはできれば使いたくありません。

216 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 17:50:06 ]
GUIスレッドでSleepすんな

217 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 17:50:08 ]
試してないが
WM_SETCURSOR
で何とかならんか?

218 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 17:50:17 ]
MakeSureDirectoryPathExistsって、PCSTRが引数で、
Unicodeビルドするとコンパイルが通らないんですけど、
この関数ってUnicodeのときは使えないものなんでしょうか?

219 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 17:53:07 ]
あ、メインスレッドとめちゃってる訳ね

220 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 17:56:39 ]
>>214
高さ、幅サイズが32767を超えられるのか?

72dpiで455インチ(1155.7センチ)、96dpiで341インチ(866.14センチ)かー




221 名前:デフォルトの名無しさん [2007/05/22(火) 17:59:26 BE:31057128-2BP(222)]
>>209
>それらがスクロールバの動きに合わせて見え隠れするってのは、文字列みたいには

同じ事だろ。

222 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 18:01:03 ]
>>220
ああごめん、ウィンドウサイズは超えられるけど、クライアントエリアのサイズは32767止まりだったわ

223 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 18:02:15 ]
>>218
typedef CONST CHAR* PCSTR;だったはず。
多分デバッガ用のヘルパー関数扱いだったから、
UNICODE版がないんだろうね。


224 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 18:02:37 ]
>>218
コンパイルが通らないだけじゃわからない
必要ファイルがインクルードされてないのか
libがリンクされてないのか
WIN95を対象に開発してるのか
色々ある

225 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 18:05:27 ]
>>223
TSTR じゃなく STR だし UNICODE版が居ないように見えるね

226 名前:218 mailto:sage [2007/05/22(火) 18:11:02 ]
1 番目の引数を 'class CString' から 'const char *' に変換できません。
1 番目の引数を 'const unsigned short *' から 'const char *' に変換できません。

などと出てきます。
今までWindows2000でMBCSのままでやってたときは問題無くビルドできていたけど、
UNICODEに変更したらMakeSureDirectoryPathExistsでずらずらエラーが出ました。
UNICODEでやってる人たちって、この関数に頼ってないということなのでしょうか?

227 名前:223 mailto:sage [2007/05/22(火) 18:11:18 ]
>>218
エスパー魔美な俺が一言
SHCreateDirectoryExを使え!

228 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 18:12:18 ]
>>227
俺が・・・ってw

229 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 18:14:23 ]
ヘルプに書いてあるなw
そうでなくてもPCSTRに変換すれば使えそうだけど

230 名前:218 mailto:sage [2007/05/22(火) 18:24:21 ]
MakeSureDirectoryPathExistsを全部SHCreateDirectoryExに置き換えてみます。
ヘルプを呼んでみた限り、
SHCreateDirectoryEx(NULL, パス名, NULL);
という呼びかたでいいんですよね?
間違ってたら突っ込んでもらえると嬉しいです。
ありがとうございます。



231 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 19:15:59 ]
dll側から自身を終了させる(exeは終了させない)にはどうしたらいいですか?
dll側で自身をFreeLibraryしてもexeは普通終了されないのでしょうか?

232 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 19:21:36 ]
根本的に考え方を間違ってないか?

233 名前:231 mailto:sage [2007/05/22(火) 19:22:48 ]
そうだと思います。
ご指摘お願いします。

234 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 19:25:23 ]
>>210
ぐえっ、やっぱりそれかよ…orz
確かに説明わるい。早い話がExcelみたいな画面を作りたいわけだ。
で、もう一度よくよくExcelの動きを見ると…そーかぁ…クライアント領域みたいな物をスクロール
させてる訳では無いかも。枠の線って変化しないで中の数字(文字列)だけが移動しているだけかも(?)
#でも横のスクロールは線も移動してるよなぁ^^;
貼り付けたコントロールも移動させてる感じだね。

了解。やってみるよ。

235 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 19:49:37 ]
>>231
良くわからん
FreeLibraryを使った関数使うのはexe側だろ
だったらexe側でFreeLibraryしたらいいんじゃないの?

236 名前:231 mailto:sage [2007/05/22(火) 19:55:55 ]
exeは既存の物でdllが自作です。
exeでもFreeLibraryしてますが、それより早く不要になった時点でdllを解放したいのです。

237 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 19:58:58 ]
>>236
どうやってLoadLibrary&GetProcAddressするの?

238 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 20:00:21 ]
exe側でFreeLibraryしてるなら、勝手にDLL側終了しちゃダメじゃん。
えらいことになりそうな気がする。

239 名前:231 mailto:sage [2007/05/22(火) 20:07:18 ]
>>237
特定の関数をエクスポートしていればそのdllをプラグインとして認識するタイプです。

>>238
そうですか。exeの実行時に使用してexeが終了するまで使わないので、
ちょっとでもメモリ消費量なり抑えられればと思ったのですが・・・。

240 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 20:19:10 ]
>>239
おまいはDLLのなんたるかを理解していないな



241 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 20:25:12 ]
もう使わないことが分かってるなら、exeのほうからFreeLibraryすりゃいいじゃないか。

242 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 20:37:27 ]
>>241
dll側のソースだけでどのようにexeのほうからFreeLibraryするか分からないんですが・・・、
すみませんが教えて頂けませんか?

243 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 20:46:21 ]
>>242
プラグインとして不要と exe 側のコードを書いた人が判断したタイミングで FreeLibrary を呼ぶ

DLL側のコードを書く人は自前で Load/Free を管理できねー

244 名前:231 mailto:sage [2007/05/22(火) 20:57:47 ]
分かりました。ありがとうございました。

245 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 21:41:31 ]
>>195
> MSGINAのスタブ
「ようこそ」画面を提供してるのはshgina.dll

246 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 21:42:41 ]
Thread動かすタイプのDLLなら、
FreeLibraryAndExitThread
という話になるんだよねたしか。

247 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 21:49:56 ]
そして、
FreeLibrary();
ExitThread();
すればいいのに、何でこんな関数あるのって話になるんだよねたしか。

248 名前:デフォルトの名無しさん [2007/05/22(火) 21:54:05 ]
FreeLibrary();
ExitThread();
すればいいのに、何でこんな関数あるの?

249 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 21:54:34 ]
FreeLibraryを先に呼ぶと、ExitThread呼ぶコードがアンロードされて死亡だし、
ExitThreadを先に呼ぶと、FreeLibraryするチャンスがないからだよ、
ってたしか the Old New Things あたりに載ってたんだよねきっと。

250 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 22:03:45 ]
なるほど。



251 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 23:11:53 ]
子プロセスを特定してヌッ殺す方法を教えてください

明示的に作成したプロセスなら簡単なんだけど、コンソールアプリ起動した時の
conime.exeみたいに勝手にくっ付いてる子プロセスを特定する方法が分からない

252 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 23:33:52 ]
exe, dll, ico, iclなどから
インデックス、サイズ(small/largeだけでなく24とか128も)を
指定してHICONを取得したいと思っています。

IExtractIcon::Extractで希望のアイコンは取得できるのですが
数が多いと動作が遅くて困ってます。
何か他に良い方法ってあるのでしょうか?
ご存知の方いたらお願いします。

253 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 23:39:52 ]
>>252
エスパーが予想。
IExtractIcon::Extractとは関係ないところで速度低下

254 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 23:47:17 ]
>251
自分をJobObjectに所属させれば。

255 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 05:41:22 ]
>>252
>>253が原因でなければ、エクスプローラみたく非同期で処理。

256 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 09:52:32 ]
SystemParametersInfoに SPI_SETICONSを渡した場合、
MSDNによれば
>システムアイコンを再ロードします。
って事らしいんですけど、
ここで言う「システムアイコン」って何なんですかね?

呼出は成功してるんですけど、今ひとつ実効性というか、
要するにこいつは何をやってくれるんだろうってのが、
はっきり解らないんですけど。
どなたかご存じないですか?

257 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 09:54:55 ]
>>234
こんなもん、ちょっとでもコード書いてみりゃ要領がわかるよ

258 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 11:08:31 ]
>>256
システムアイコンはメッセージボックスに表示されるアイコン。
?や!や×みたいなの

259 名前:256 mailto:sage [2007/05/23(水) 13:44:46 ]
>>258
ありがとうございます!

あれですかー…
どうりで、実行してもぱっと見何も起こらないわけですね。

260 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 14:42:03 ]
Win2kの環境で
アクティブデスクトップの背景を自分のウィンドウのクライアントに描画したいのですが
SHELLDLL_DefView SysListView32 Internet Explorer_Server DeskMover GetDesktopWindow()
あたりにWM_PAINTやWM_PRINTをいろいろオプション変えて送っても描画されません。
どうしたらアクティブデスクトップの背景を描画させる事ができますか?



261 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 14:58:29 ]
PrintWindow API辺りならなんとかなるんじゃないかな?

262 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 16:46:27 ]
マウスカーソルの下のツールバーボタンのコマンドIDかインデックスを取得したいのですがどうすればできますか?

263 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 17:01:44 ]
>>262
ttp://msdn2.microsoft.com/en-us/library/bb496907.aspx
この中に答えがあるよ

264 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 22:12:09 ]
>>261
PrintWindowはXPにはない。
それがアリならVistaとAero有効なPCを買ってこいと回答しておこう

265 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 22:18:21 ]
>>264
PrintWindowはちゃんとXPにあるから。

266 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 22:21:43 ]
>>265
ごめん「XP以降にしかない」と書こうとして間違えた。

267 名前:252 mailto:sage [2007/05/23(水) 23:40:35 ]
>>253
Extract自体ではなくて前後の
COM関係のあーだ、こーだが遅いみたいでした。

>>255
非同期処理ですか、
非同期って全然分からなかったので
試しにマルチスレッドでやってみたんですが
IExtractIcon::Extractが支配的で速度は変わりませんでした。
(自分のプログラムじゃなくてオープンソースを改造してたので)。

上記のマルチスレッドも間違ってると思うので
これを気に勉強したいと思います。
ありがとうございました。



268 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 23:51:57 ]
>>267

>>>253
>Extract自体ではなくて前後の
>COM関係のあーだ、こーだが遅いみたいでした。

よくある話だ、元気出せ。

269 名前:デフォルトの名無しさん mailto:sage [2007/05/23(水) 23:52:48 ]
元気出ました。

270 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 00:30:21 ]
俺元気!



271 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 00:32:28 ]
サーバークライアント型のチャットプログラミングをやっています。
クライアント側で接続/切断ボタンを超クリックしまくると、時々表示が変になります。
エラーは何も出ないのですが、最前面に出ているのにアクティブじゃなくなって、ウィンドウの一部が消え
背景にあるウィンドウが少しだけ見えるような状態です。これはログウィンドウに大量の文字がある時に起きるっぽいです。
ログウィンドウの最大サイズを3000バイトに制限したら割と正常に動作し、30000バイトにすると上記の不具合が起きます。
ボタンを連打出来ないような仕様にしてもいいのですが、出来ればあまりしたくありません。
どのようにすればいいでしょうか?

ちなみに接続ボタンを押すと接続/受信用スレッドが立ち上がり、切断ボタンを押すとスレッドが終了します。


272 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 00:39:06 ]
>>271
ログウィンドウはエディットコントロールのおかん
ママー

273 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 00:51:54 ]
>>272
つまり・・・どういう事ですか?

274 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 00:53:03 ]
それは、こっちが聞きたい

275 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 00:54:25 ]
つまりだね

276 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 01:16:12 ]
>>271
debug

277 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 01:19:56 ]
質問させて頂きます。
GetOpenFileNameでファイル選択ダイアログを表示し、ファイルを取得しているのですが
何故か、別のモジュール側の処理を少し追加したらダイアログが表示されなくなりました。
原因が全く分かりません…。GetOpenFileNameを利用する上で何か注意しないといけない事があるのでしょうか?

コンパイラはBCCとVCの両方で試しましたが、ダメでした。

278 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 01:22:23 ]
追加した処理が原因です

279 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 01:33:20 ]
>>277
debug

280 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 01:35:10 ]
その処理を消してみて元に戻るかどうかは試したの?



281 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 01:48:33 ]

      ,.イ´| ̄`ヽr<´ ̄  ̄`ヾ´ ̄ `ヽx''´ ̄「`丶、
     / _|ノ   ├〈,.-―     ;. _  ,ゞ--'、:\___lヽ
     ,':∨::\  /´ ̄  ̄`ヽ ヽ/´  `ヽ、-.、 \::::::::::',
      |、_;/ /  /´   ,.     、  、  \. \ \―|
      ’、  /  /  ,.  / / ,ハ ',.  ヽヽヽヽ  \ヾ/
      \_/:/:/:./ , / .,' / // | l | , l: | ', ',. ! l  :',!|
          |/:/::/:/:/:! l | { /|:!  l l } !ノ|::,!l | :| |::|:::::::|ノ
         |:/l/:/:::,|::|:{イ⌒lヾゝ ノノイ⌒lヽ|:::!::}:;!::l::::::/
        |::/|/l::/l';:{ヾlー''!     lー''!/リノノ/::/:l::/
          || |:/リ、|::l;ゞ ̄´´  ,.  ` ̄" ハ:lリノノノ'
          リ |' __,⊥!、 " " r===、 " " /ノノ  ||
        '/´\:: : \   ヽーノ  /`ーァ-、 ヾ、
       _ /     li : . ',.`ヽ、 _ ,.イ´ /.ノ::l|  ヽ \____
.    /'/       |l   ヽ `Y´ / './ . :l|   |、 /  /
      \l      |l,   \\_!_/ ‐ ´   、!|   | |\ ̄
        |      /; ´     ` ‐  ,     ヽヾ   ! \|
       |    /       ヽ::/      `ヽ |
      |     ,'        `         ', !  他のスレに貼り付けると
.       |   |::: ヾ             ヾ  .:| .|  おっぱいがポロリする
        |   '、:::.:.. .     ―       . .:.:::,' ! 不思議なギガバイ子コピペ。
       ',.     \_:::.: : :_二二二:_: : : : .:.:.:.:::/ ,'
       ':、   ト、 ̄ ´.:.:.::::::::::.:.:.:.` ―┬ '′ /
        \  |l ヽ            l|  /
.           `/,'  ヽ \         ',/
          ∧ヽ   \ \:.:.:..    ∧

282 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 01:51:56 ]
レスありがとうございます。
>>280さん
はい、戻ります。
追加した処理の内容ですが、実行パスを取得した後に、設定ファイルのパスを作るだけの処理です^^;
メッセージボックスを出す等すると何故か表示されたりします

283 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 01:58:11 ]
>>282
エラーコード調べたり、デバッガ使ったり
やる事は色々あるだろ

284 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 02:49:11 ]
正直、これだけの情報で答えられるのはエスパーだけだと思う。
せめて追加したコードだけでも出すとか・・

285 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 02:52:53 ]
メッセージボックスを出すとうまくいく、というのがなんか引っかかるな。
OPENFILENAME構造体をちゃんと初期化してるか?

286 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 03:38:11 ]
レス有難うございます。
追加したコードを記載します。

void GetIniPath( char *p_dis, int size )
{

int point;
GetModuleFileName( NULL,p_dis,size);
// EXE名のスタートポイントを取得
point = GetFilenamePoint( p_dis );
if( point > 0 )
{
p_dis[point] = '\0';
}
wsprintf( p_dis, TEXT("%s%s"),p_dis,INI_PATH);
return;

}

GetFilenamePointでは、for文と2バイト文字、半角カナに注意した比較のみで、APIは全く使用していません
上記のコードで、iniファイルのパスを取得し、ロード処理の前で使用しています。
ロード処理に前にメッセージボックス等、処理を止めるような事をするとたまにダイアログが表示されます。

>>285さん
別のモジュールでもファイル選択ダイアログを呼んでいましたので
そのコードをそのまま持ってきて使っています。

明るくなったらもっと詳しく調べてみます。

287 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 03:51:12 ]
wsprintf( p_dis, TEXT("%s%s"),p_dis,INI_PATH);
これって同じ領域指定しても良かったっけ?

288 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 04:02:31 ]
だめだめです

289 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 06:58:22 ]
だからコンパイルエラーとか挙動不審なのはAPIと関係ないっつーの

290 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 08:16:54 ]
1.GetModuleFileName
2.結果をバッファにコピー
3.PathRemoveFileSpecでモジュール名を取り除く
4.lstrcatで"\"と設定ファイル名を追加する

(ちなみに3は自作のGetFilenamePointでええんとちゃう?)

だめなのか?



291 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 08:19:36 ]
std::string strPath
TCHAR szAppPath[MAX_PATH];
::GetModuleFileName(NULL, szAppPath, MAX_PATH);
strPath = szAppPath;
strPath = strPath.substr(0, (strPath.rfind('\\')+1));
strPath += "[ファイル名]"

超簡単

292 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 12:55:21 ]
std::stringのrfindとかってMBCS対応できてるんだっけ?

293 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 13:01:23 ]
>>290
3でshlwapi使うなら4はPathAddBackslashとStringCchCatだろ

294 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 15:00:20 ]
名前解決を行うプログラムを作りたいのですが、
DnsQuery()はPIP_ARRAYを使っており、DNSサーバにIPv4のものしか指定できません。
DNSサーバにIPv6アドレスを指定できるDnsQuery()または同等なものはないでしょうか?

よろしくおねがいいたしますm(_ _)m

295 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 18:39:44 ]
getaddrinfo じゃ駄目なの?

296 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 18:46:03 ]
hConnect = CreateWindow(
 TEXT("BUTTON") , TEXT("起動") ,
 WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON ,
 308 , 10 , 52 , 52 , hwnd , (HMENU)3 ,
 ((LPCREATESTRUCT)(lp))->hInstance , NULL
);

こんな感じでCreateWindow()をしているのですが、9番目の引数で指定した数値が
実際にWM_COMMANDに送られて来ず、意図しない数値が送られて来ます。
今は、WM_COMMANDの直後にLOWORD(wp)の値を調べて、その値を拾うことで
対応しているのですが、どうにかして正常な状態に戻したいです。
何故このような事が起こるのでしょうか?原因がわかりません。


297 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 18:48:44 ]
LOWORD(wp) の値が 3 じゃないの?

298 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 18:53:02 ]
LOWORD(wp)をMessageBoxで表示させたところ6とか見当違いの数字が入ってます。

299 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 18:54:44 ]
追記ですが、そのボタンの9番目の引数を(HMENU)30とかに変えると、
LOWORD(wp)に30が送られてきます。これで正常に動作はさせれるのですが、
結局のところ根本の解決になってないのであまり納得が出来ません。

300 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 18:57:37 ]
Dialog でかつ WM_INITDIALOG のタイミングで >>296 をやろうとしてる?

LOWORD(wp)==6 って IDYES 相当なんだが、、、
ちゃんとコントロール作れてないとか
break し忘れているとか
そっち方面な気配がする



301 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 18:57:59 ]
#define IDABORT 3
とかぶってるからじゃないの?

302 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 19:10:27 ]
Dialogは全く使用していないのですが・・・
あと申し訳ないのですが、3とか6とかいうのは適当でした。ごめんなさい。
数値が被ってるとの原因ででる不具合ならば、正しい数値を書くべきでした。
本当にエラーの出る数値は9〜14で、実際に送られてくるのは50、54、58、62、66です。
これらは

for(i=0; i<5; i++){
 CreateWindow(,,,,,,,,,(HMENU)9+i,,,,);
}

で作成しています。また、変数を使わずに直接数値を指定して作成したボタンもあるのですが、
それも違う数値が送られてきます。その数値は正常に動作する別の数値に変えたので覚えていません。

303 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 19:16:21 ]
>>302
(HMENU)9 + i じゃだめさーね
(HMENU)(9 + i) でないとあかん

304 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 19:17:05 ]
WM_COMMAND の解説ちゃんと読め

305 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 19:20:03 ]
>>303
頭悪い間違えですね。ごめんなさい。
首吊ってきます。死ぬ前に、直接数値指定してるのに違う数値が来る時のやつ
調べてきます。

306 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 20:22:00 ]
>>292
たぶん対応していないし、第一TCHARを使うんだったら、
std::stringではなく、std::basic_string<TCHAR>を使うべき。

307 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 20:57:44 ]
なんかエディットコントロールに文字が増えれば増えるほど、
動作が重くなってくるのですが、これは仕様って事でいいのでしょうか?
特に、winsockの関数周りが遅くなってるような気がします。

308 名前:294 mailto:sage [2007/05/24(木) 21:10:12 ]
>>295
レスありがとうございます。

getaddrinfoは名前解決をOSに任せる物だと思っております。
(IPv6アドレスを持った)DNSサーバを指定して名前解決を行いたいです。

309 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 21:29:44 ]
>>307
とりあえず、EM_GETHANDLE, EM_SETHANDLEを使って、
標準のハンドルを差し替えたら?
GlobalAlloc(GPTR, メモリサイズ)で当てはめはめて

なお、標準のハンドルは解放するの

んで、通信側かエディット側か判断してみれば?

パパー

310 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 21:44:14 ]
msdn2.microsoft.com/en-us/library/ms682035.aspx
DnsQueryが使えない理由を詳しく



311 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 21:52:28 ]
よく読めよ。
IPv6レコードではなく、IPv6アドレスしか持たないDNSサーバを扱う話だろ。

312 名前:294 mailto:sage [2007/05/24(木) 21:55:11 ]
>>310
「IPv6のレコードを取得する」はできます。
「IPv6のアドレスを持ったDNSサーバに接続する」ができません。
(PIP4_ARRAY)

DNS_STATUS WINAPI DnsQuery_A(PCSTR,WORD,DWORD,PIP4_ARRAY,PDNS_RECORD*,PVOID*);
DNS_STATUS WINAPI DnsQuery_W(PCWSTR,WORD,DWORD,PIP4_ARRAY,PDNS_RECORD*,PVOID*);
DNS_STATUS WINAPI DnsQuery_UTF8(PCSTR,WORD,DWORD,PIP4_ARRAY,PDNS_RECORD*,PVOID*);


313 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 22:06:42 ]
IPv6でのDNSクエリの発行自体xpSP2でサポートされたばかりだしなあ。

314 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 22:08:37 ]
msdn2.microsoft.com/en-us/library/ms682016.aspx
やっぱりよくわからないな
DNS_STATUS WINAPI DnsQuery(
PCSTR lpstrName,
WORD wType,
DWORD fOptions,
PVOID pExtra,
PDNS_RECORD* ppQueryResultsSet,
PVOID* pReserved
);

315 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 22:18:42 ]
>>312
そのシグニチャはどこから持ってきたん?

316 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 22:23:51 ]
Windows CE?

317 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 22:30:11 ]
XPってv6トランスポートで本当に名前解決できるの?
www.ipv6style.jp/jp/action/20050905/index.shtml
ここ読むとできない、みたいなはなしがあるけどさ

318 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 22:30:59 ]
>>312
WinDNS.h見てみたけど無理そうだな。アキラメロ

319 名前:294 mailto:sage [2007/05/24(木) 22:31:25 ]
WinDNS.h よりです

DNS_STATUS
WINAPI
DnsQuery_A(
IN PCSTR pszName,
IN WORD wType,
IN DWORD Options,
IN PIP4_ARRAY aipServers OPTIONAL,
IN OUT PDNS_RECORD * ppQueryResults OPTIONAL,
IN OUT PVOID * pReserved OPTIONAL
);

DnsQuery_UTF8, DnsQuery_WもPCSTR pszName,PCWSTR pszName以外同じ

#ifdef UNICODE
#define DnsQuery DnsQuery_W
#else
#define DnsQuery DnsQuery_A
#endif

320 名前:294 mailto:sage [2007/05/24(木) 22:33:14 ]
>>317
Vistaならできるはずです。
XPでできないならAPIでも提供されていないでしょうかね?

>>318
自分でDNSプロトコル話すしかないですかねorz



321 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 22:42:31 ]
>>320
>自分でDNSプロトコル話すしかないですかねorz

そういう事じゃマイカ?Windowsのリゾルバは糞って有名な話で
dnsapi.dll使う前提なら無理。




322 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 00:45:58 ]
>>294の参照しているのは、2005付属のもので、
最新のWindowsSDKでは宣言が多少変更されたっぽいな。

で、aipServersの所は予約パラメータ扱いに変更されている。
対応するつもりが、面倒で放置したって感じか。

323 名前:名無し@沢村 [2007/05/25(金) 05:34:10 ]
256色の画面をクリップボードにコピーして、コピーや貼り付けがしたいのですが、
どのようにすればいいかわかりません。
誰か詳しく教えてくれませんか?

324 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 08:13:10 ]
>>323
クリップボード側の話は
ChangeClipboardChain関数, CloseClipboard関数,
CountClipboardFormats関数, EmptyClipboard関数,
EnumClipboardFormats関数, GetClipboardData関数,
GetClipboardFormatName関数, GetClipboardOwner関数,
GetClipboardViewer関数, GetOpenClipboardWindow関数,
GetPriorityClipboardFormat関数, IsClipboardFormatAvailable関数,
OpenClipboard関数, RegisterClipboardFormat関数,
SetClipboardData関数, SetClipboardViewer関数,
などの関数で操作する。

あとそれに合わせてWM_COPYなどがある。
ミソはSetClipboardData関数ですかな?

325 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 10:03:00 ]
256色だとパレットも持ってこないとな

326 名前:294 mailto:sage [2007/05/25(金) 11:32:09 ]
皆様レスありがとうございます
特に>>317の記事大変参考になりました。
DLLをわざわざ開発するくらいですからAPIでは無理ですね。

BIND(dig,host,nslookup,...)のソースなどを参考に時間があるときにでも作成したいと思います。

327 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 16:15:08 ]
読み込み違反ってどんな時に起きるんでしょうか?
LoadLibraryでDLLを呼び出してDLL内の関数を実行すると、
「アドレス 00000000 でアドレス 00000000 に対する読み込み違反がおきました。」
となります。そのDLL関数は4つの引数をサポートしていて他の3つの引数では成功します。

328 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 16:19:40 ]
まさにぬるぽ

329 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 17:24:14 ]
>>327
デバッグしろよ

「作ったソフトがまともに動きませんどうしてでしょうか?」
みたいな質問が多いけど情報は少ないし、しかもスレ違い

330 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 17:43:54 ]
とりあえず、APIと関係なさそうなのは間違いない感じだなw

あれじゃね?
渡さなきゃいかん値をNULLで渡してるとか。
渡してるつもりになってる変数が0でしたとか。



331 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 17:48:23 ]
>>327
> そのDLL関数は4つの引数をサポートしていて他の3つの引数では成功します。
どういう意味?
引数の数が一つで、4種類の値しかとらないってこと?
それとも、DLLが複数の関数をエクスポートしていて、
引数が3つのやつは成功するけど、4つのは失敗するってこと?

332 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 18:31:40 ]
>>327
わんわん わわわん わんわん わん?
(関数ポインタの宣言がおかしいじゃね?)

333 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 19:30:13 ]
>>327
その「アドレス 00000000 でアドレス 00000000 に対する読み込み違反がおきました。」
という分かりやすく簡潔なメッセージの何がわからないのか書いてもらわないと・・・

「アドレス」の意味が分からないとか?

334 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 19:37:12 ]
メッセージが分からないとは書いてないぞ

335 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 19:46:51 ]
じゃあこれでいいだろ

問い
>読み込み違反ってどんな時に起きるんでしょうか?

答え
「アドレス 00000000 に対する読み込み」を行ったとき、等。

336 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 19:48:52 ]
( ゚д゚)ポカーン

337 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 19:50:46 ]
OSが保護している領域に書き込んだ時
「そのアドレスはらめぇ」とWinに言われてる

338 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 19:53:24 ]
読み込みエラーの話をしているのに書き込みの話をし出す馬鹿。

339 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 19:56:27 ]
馬鹿馬鹿言うしか能のない馬鹿。

340 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 20:12:10 ]
OSが保護している領域を読み込んだ時
「そのアドレスはらめぇ」とWinに言われてる



341 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 20:12:11 ]
まぁたぶん今回のはコールバック関数のアドレスとして NULL を渡したとか
なんかそんなことだろうね。IP もゼロだし。

342 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 20:44:07 ]
>>341
IP???????????

343 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 20:50:44 ]
>>342
Instruction Pointer。どこのコードを実行するかを格納しているレジスタ。
「アドレス 00000000 で」の部分が当該コードのアドレスを示している。

それはともかくとして、Win32 とかいう以前の話ばかり・・・
レベル低すぎだろいくらなんでも。
この板には初心者スレとか無いのか?

344 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 20:55:26 ]
たくさんあります

345 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 21:04:59 ]
>>343
レベル低いのはお前の方では?
コールバック関数のアドレスとして NULL を渡したとかそんなレベルの話でないと思われ。
レベルの低い奴はレベルの低い事しか考えられないと思われても仕方ない。

346 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 21:10:02 ]
tabcontrolってデフォルトでフォーカスの四角を表示しない機能って
ありませんでしたか?

もしあったら教えてください。

347 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 21:18:05 ]
>>327
>読み込み違反ってどんな時に起きるんでしょうか?
>LoadLibraryでDLLを呼び出してDLL内の関数を実行すると、
>「アドレス 00000000 でアドレス 00000000 に対する読み込み違反がおきました。」
>となります。そのDLL関数は4つの引数をサポートしていて他の3つの引数では成功します。

とりあえず、考えられるのはこんなとこか?

考察1.まず、LoadLibraryの戻り値はちゃんと値が入っている?
考察2.Unicode版,ANSI版の関数名の問題
     引数に文字列を要求している場合はGetProcAddressには明示的に指定しないいけない。
     CreateFile→ANSI版はCreateFileA, Unicode版はCreateFileW
考察3.GetProcAddressの戻り値のキャスト先の問題。
     多分>>332のわんこが云う様にGetProcAddressの戻り値FARPROCの代入先が不完全で、
     関数コール時できてない。
考察4.引数が3つの関数と引数が4つの関数は同一ライブラリなのか?
     例えばLoadLibraryの実験で、
     一般的な引数3つの関数(Kernel32.libのCopyFile関数)で確認したが、
     引数4つのFloodFill関数は未チェックでKernel32.libをGdi32.libに直してない。
考察5.ライブラリの位置が巧く取得できてない。
考察6.実は、呼び出し元のアプリケーションはVBで、巧くDeclarできてない。

348 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 21:20:52 ]
僕バッカー!

349 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 21:22:36 ]
>>346
スタイルのTCS_TABSを外す

350 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 21:22:51 ]
>>345
>コールバック関数のアドレスとして NULL を渡したとかそんなレベルの話でないと思われ。
おそらくそこまでも行っていないレベルの話だと思われ
NULL をコールしてるんだよね、たぶん。



351 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 21:25:54 ]
DLL自作なのかな?

352 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 21:29:06 ]
>>346 TCS_FOCUSNEVER ?

353 名前:名無し@沢村 [2007/05/25(金) 21:40:29 ]
画面の描画プログラムで、hdcの互換メモリデバイスコンテキストmemdcとmemdc2をつくり、
memdcのほうに黒い線、memdc2のほうに赤い線を描いて、それらをhdcにコピーして
表示するプログラムをつくったんですが、何故かmemdc2のほうの赤い線がWM_PAINTが
送られると消えてしまうんですが、どこが悪いのでしょうか?
プログラムはまったく同じようにmemdcとmemdc2の描画とコピーを並べて書いたんですが…?

354 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 21:44:35 ]
memdcとmemdc2をSRCPAINTにしてないとか

355 名前:デフォルトの名無しさん [2007/05/26(土) 01:08:52 ]
MeteredSection
・パフォーマンスはCriticalSection並で
・セマフォの様にカウンタもあり
・win9x,NT,CEで使える
というステキな同期機構があるようなんですが、

MeteredSectionを作成する関数
CreateMeteredSectionをググっても(日本語)
ヒット数が数件しかありません

これは一般には使われてないんでしょうか
だとしたら理由はなんでしょう

356 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 01:14:54 ]
そんなに必要じゃないからだろ マイナーだし

357 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 01:15:52 ]
>>355
単純にみんなが知らないだけだと思われ。
ってか、自分もはじめて知った

358 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 01:22:24 ]
>>355
msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpdndllpro/htm/metrsect.asp

マイナーなだけ。
知ってる人は知ってる。

359 名前:デフォルトの名無しさん [2007/05/26(土) 01:50:48 ]
唐突な質問すみません。
WAVファイルが使用されているかどうかをチェックするにはどうすればいいでしょうか?

360 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 02:02:34 ]
アクセス日時でも調べたら?



361 名前:デフォルトの名無しさん [2007/05/26(土) 02:09:16 ]
使用とはつまり今使用中なのかどうかを調べたいのですが、

362 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 02:13:31 ]
そのWAVファイルをごみ箱に投函。

入ってくれなければ使用中。以上

363 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 02:26:09 ]
さうんどどらいばにおくられているはけいがそのわヴのものならしようちゅう。いじょう。

364 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 02:31:54 ]
スレ違いでしたら誘導をお願いします

CreateProcessで作成したプロセスを安全に終了させたいと思っています。
メッセージループを持っているプロセスならWM_CLOSEで事足りるのですが、コマンドラインアプリケーションの場合はどうすればいいのでしょうか?
たとえばpingの場合control-Cを送れば終了できるんじゃないかと思い、パイプを作成してETXを送ったのですが終了できません。
また、command.comのプロンプトはCR(control-M)でちゃんと改行と処理されるのですが、パイプを通した場合はLFCRを送らなければ認識されません。
パイプの処理に関して何か根本的な勘違いをしているのでしょうか?

365 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 02:42:52 ]
>>364
どういう使い方してるの?
ウチの環境ではpingし終わったら勝手に閉じるけど?

366 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 05:59:02 ]
command.comってことは98・・・か・・・?

367 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 08:50:30 ]
>>364

support.microsoft.com/kb/190351/ja

まず、ここのサンプルを試してみ

368 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 10:16:56 ]
シグナルを送るんだよ

369 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 11:05:33 ]
>>364
安全に終了させる汎用的な方法は無い。
WM_CLOSEで終了したとしても、それが正規な終了方法でないアプリがあるかもしれない。
結局各アプリを解析して、個別の対応を採らなければならない。

370 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 11:08:36 ]
ウィンドウクラスのとこで
winc.hIcon = LoadIcon(NULL , (LPCSTR)IDI_ICON2);
で、アイコンを指定しているのですが、何故かふきだしに i マークがついたアイコンになります。
リソースに自分で作成したICONを追加もしているのですが、何か上の式は間違ってるのでしょうか?



371 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 11:18:46 ]
>>370
MSDNで第一引数の説明を調べるんだ

372 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 11:37:37 ]
>>371
ああああありがとうございます(泣)
NULLをhInstanceにしたらアイコンが変わりました!
ぬるぬる

373 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 12:07:52 ]
ぽぽ

374 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 13:26:33 ]
>>364
GenerateConsoleCtrlEvent

375 名前:364 mailto:sage [2007/05/26(土) 19:25:12 ]
>>365
現在親プロセスからコマンドラインアプリケーションを起動して標準出力を拾っているのですが、親プロセスを終了したときにそのコマンドラインアプリケーションを安全に終了させたいのです

>>367
拝見したところパイプの接続は私のテスト環境と同じようで、子プロセスの終了も親からでは無くping同様に子プロセスのChild.EXEが勝手に終了するのを待つだけのようでした。

>>369
起動させるプロセスは限られていますので私も個別に対応したいと考えています
たとえばCOMMAND.COMならば'EXIT'を送れば終了でき、pingならばctrl-Cで終了できるはずです。
しかし前者は成功するのですが、後者は失敗しました
パイプでは制御コードを送れないってことはありませんか?

376 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 19:35:47 ]
>>364
ちょっ話変わるけど、
コンソールリダイレクトの想定先は何?
例えば、コンパイラのキッカーみたいなもの?
バッチ処理の結果を取得したい為?

377 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 19:35:53 ]
自作アプリケーションにXPスタイルを適用しつつ
一部のコントロール(ステータスバーなど)のみをXPスタイル以外ってできないのかな?

378 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 20:01:01 ]
>>377 SetWindowTheme

379 名前:355 mailto:sage [2007/05/26(土) 20:15:21 ]
>>356
>>357
>>358
ありがとうございます

MSDNの記述を読む限り、とても有用な機能だと思ったんですが
何でマイナーになってるんでしょうね・・・

380 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 20:22:20 ]
>>379
強いて言えば、無くても作れるからかも
ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndllpro/html/msdn_metrsect.asp



381 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 20:27:33 ]
>>379
自分で作らにゃならんし、メンテナンスや互換性を考えると面倒くさいからでしょ

382 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 20:27:36 ]
>>379
forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=1437677&SiteID=7
MeteredSectionってもともとはAPIじゃなくて
あるユーザーが勝手に作ったものみたい。

383 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 21:04:50 ]
>>375
>>374は無視ですか。パイプを作ってCtrl-Cを送る必要自体ないと言ってるんだけど

384 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 21:13:22 ]
>>383
心配しなくても無視されないよ。
パイプを作ってCtrl-Cを送ってもどうせ効かないから。

385 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 21:32:05 ]
逆にパイプのデータ経由で死ねるなら、
パイプはバイナリデータを送れない、という話になる

386 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 21:33:25 ]
その理屈はおかしい

387 名前:デフォルトの名無しさん [2007/05/26(土) 23:57:14 ]
ドラッグドロップとImageListについて質問です。

DropTargetの側で
ImageList_BeginDragやImageList_DragMove等のAPIを使って
ドラッグ中の画像を作るのは邪道でしょうか?
実際動いてはいるんですが。
やはりDropSourceの方でやるものなのでしょうか。

あと一つ、
ImageList_BeginDragで始まったあとに
表示されている画像を変更することはできないんでしょうか。
ImageList_Replaceは動作しませんでした。


388 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 00:11:18 ]
ども。>>364です

>>376
ちょうどそんな感じです

>>383
ご指摘ありがとうございます。完全に見落としていました

>>374
私が探していた方法はまさしくコレです
コマンドラインアプリケーションにもちゃんとExitProcessが標準で実装されていたんですね
プログラム側で入力シーケンスを監視してctrl-C信号を拾っているんだと思っていました
色々とありがとうございました。

389 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 00:23:29 ]
>>388
だからシグナル送れといっとるだろうが

390 名前:387 mailto:sage [2007/05/27(日) 00:39:55 ]
自己解決しました。
同スレッドからD&Dされると挙動不審になるみたいです。
別スレッドからなら(一見)問題ないみたいですが。
止めることにしました。




391 名前:デフォルトの名無しさん [2007/05/27(日) 02:35:12 ]
猫でもわかるプログラミングってどこにあるんですか?

392 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 02:36:22 ]
「猫でも」でぐぐれ

393 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 06:26:12 ]
本屋に有る

394 名前:名無し@沢村 [2007/05/27(日) 08:40:17 ]
hdc=GetDC(hwnd);

memdc=CreateCompatibleDC(hdc);
memdc2=CreateCompatibleDC(memdc);
hBita=CreateCompatibleBitmap(hdc,maxX,maxY);

SelectObject(memdc,hBita);
SelectObject(memdc2,hBita);
PatBlt(memdc,0,0,maxX,maxY,PATCOPY);
PatBlt(memdc2,0,0,maxX,maxY,PATCOPY);

で、後にSelectObjectしたほうのmemdc2がうまく作成されてないようなのですが、
(hdcにコピーして再描画すると消えてしまうので)
memdc2をうまく作成するにはどうしたらいいでしょうか?

395 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 10:54:49 ]
ダイアログを、呼び出したアプリケーションのフォームの最前面に表示したいのですがどうすればよいのでしょう?
WS_EX_TOPMOSTや、SetWindowPosでHWND_TOPMOSTだと、他のアプリの前面にも出てしまいます。
あくまで呼び出したアプリの最前面にしたいのです。

396 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 11:04:26 ]
WM_OVERLAPPED & WM_CHILD & WM_POPUP

397 名前:395 mailto:sage [2007/05/27(日) 11:10:18 ]
失礼しました。
DialogBox関数の第3引数がうまく設定できていないのが原因でした。
お騒がせしました。

398 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 11:14:09 ]
>>394 そのSelectObjectは何かのギャグか?

399 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 12:17:07 ]
>>394
msdn.microsoft.com/library/ja/jpgdi/html/_win32_selectobject.asp?frame=true
> アプリケーションは、1つのビットマップを一度に複数のデバイスコンテキストで選択することはできません。

400 名前:名無し@沢村 [2007/05/27(日) 12:52:00 ]
>>399
つまり描画用のデバイスコンテキストを複数つくることはできないということですか?
ペイントソフトのアンドウリドゥとかはどうなっているんだろう?
メモリデバイスコンテキストを複数つくれば、そこにコピーして待避させておいて、簡単に実装できるんだけど…



401 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 12:54:49 ]
逆にビットマップを複数作ればいい

402 名前:名無し@沢村 [2007/05/27(日) 12:58:04 ]
私がつくりたいのは、
例えば赤と黒で画面に線を描画して、
あとから赤の線だけを消して、赤の線の下に引かれている黒い線もちゃんと復元できるようなソフトなんですけども…

黒い線と赤の線を別々のデバイスコンテキストに描画すれば簡単だと思ったんですがテ…

403 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 13:13:53 ]
操作履歴があるなら、それをもとに
「ファイルを開く」から復元できるやろうが。

404 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 13:19:52 ]
例えば、同じビットマップを複数のDCに選択できたとしたら、
片方のDCに書き込んだ内容はもう片方のDCでも同じ内容になるだけだが・・・

なんでビットマップを複数作ルことを思いつかないんだ?

405 名前:デフォルトの名無しさん [2007/05/27(日) 14:23:49 ]
熾烈な首位争いを繰り広げる、日本とハンガリー。
日本は現在ハンガリーに500万クリックほど差をつけているものの、
これで安心してはいけない。
我々のこれまでの最大クリック速度は8万〜9万回/分が限度だが、
ハンガリーはなんと13万回/分を叩き出した実績がある。
実際、1400万の差を一晩でひっくり返されている。

今はハンガリー時間で7時を過ぎたところ。
彼らの動きが活発になり始めるころだ。
おまけに月曜日は祝日だという確定情報もある。
今の戦力では心もとない、まだまだ戦力を募集中だ。

もはやVIPPERだけでは太刀打ちできない。
これはもはや、VIPの枠を超え、2ch全体で立ち向かう以外に勝機はない。
諸君の参戦を切に願う。

現行スレ
【首位奪還】一番クリックした国が優勝 Click82【天王山の決戦!!】
wwwww.2ch.net/test/read.cgi/news4vip/1180241158/

まとめサイト
www33.atwiki.jp/clickvip/


406 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 14:49:49 ]
>例えば赤と黒で画面に線を描画して、
>あとから赤の線だけを消して、赤の線の下に引かれている黒い線もちゃんと復元できるようなソフトなんですけども…

レイヤーのことだろうか?

407 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 16:23:17 ]
この手のは、BitBltをパワーアップさせて、転送先や転送元に、
HDCだけじゃなくHWNDやHBITMAPも渡せるような
関数を作っておくと楽かな。

408 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 18:36:53 ]
>>402
スレ違いの回答になるが・・・・
Undo/Redoをやりたいなら、ビットマップレベルで履歴を保存するより
描画内容(座標・色・線種など)で履歴を保存するほうがいいと思うよ。


409 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 18:42:42 ]
質問です。F1を押したときにある動作をさせたいのですが、
ウィンドウプロシージャでWM_KEYDOWNでメッセージを受け取る事が出来ません。
起動した直後は出来るのですが、その後、エディットコントロールにフォーカスを移動した時とかに
メッセージを拾う事ができなくなります。エディットコントロールやボタンにフォーカスがある状態でも
メッセージを受け取るにはどうすればいいのでしょうか?

410 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 18:54:56 ]
キー関係のメッセージははフォーカスを持つウィンドウに送られる

メッセージをDispatchする前に、アクセタレータを使うなり何なりすること。



411 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 18:56:55 ]
ごめtypo
*アクセラレータ

TranslateAcceleratortとかHACCELとかのことです

412 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 19:56:41 ]
HP見ながら頑張ってみたのですが、上手くいきません。
肝心な部分だけ書いてみました。どこかいけないところはあるでしょうか?

//aaa.rc
IDR_ACCELERATOR1 ACCELERATORS
BEGIN
  VK_F1,  ID_MYHELP,  VIRTKEY,  NOINVERT
END

//resource.h
#define ID_MYHELP 40001

//aaa.cpp
WinMain(){
  haccel = LoadAccelerators(hInstance, (LPCSTR)IDR_ACCELERATOR1);
}

WndProc(){
  case WM_COMMAND:
    if(LOWORD(wp)==ID_MYHELP) MessageBox();
    return 0;
}

413 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 20:07:28 ]
LoadAccelerators(hInstance, MAKEINTRESOURCE(IDA_ACCEL1)); とか
TranslateAccelerator(hwnd, hAccel, &msg) 抜けとかかなーといってみる


414 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 20:12:37 ]
TranslateAcceleratorは?
あと、(LPCSTR)IDR_ACCELERATOR1よりもMAKEINTRESOURCE(IDR_ACCELERATOR1)
LOWORD(wp)よりもGET_WM_COMMAND_ID(wp, lp)お薦め

415 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 20:32:19 ]
>>413-414
TranslateAccelerator()を入れたら動作しました!
大事なところを見逃してました。ありがとうございます。

416 名前:名無し@沢村 [2007/05/27(日) 20:39:52 ]
>>404
>なんでビットマップを複数つくることを思いつかないんだ?
memBit1=CreateCompatibleBitmap(hdc,x,y);
memBit2=CreateCompatibleBitmap(hdc,x,y);
のようにでしょうか?
表示用のデバイスは1つ(hdc)しかないので、ちょっと無理っぽい気が…

417 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 20:40:34 ]
なんで見えない番号があるのかと思ったら
なつかしいな沢村

418 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 20:42:47 ]
TranslateAcceleratorは>>411でわざわざ言ってあげたのにな

419 名前:名無し@沢村 [2007/05/27(日) 20:47:02 ]
>>408
描画内容(座標、線種、色)を数値データとしてスタックに保存するのでしょうか?
データを画面に復元するときはどうすれば?
思い付くのはSetPixcelですが、
SetPixcelで1点ずつ画面に点を打っていくのでは、時間がかかりすぎるような気が…

420 名前:名無し@沢村 [2007/05/27(日) 20:52:27 ]
>>417
なつかしいな。
プログラミングは当分休止。つーかいまプログラミングしてるけど…
いま投稿用の漫画描くためのソフトつくろうと思って質問しまくっているとこ…

これができたら、プログラミングはお休みして漫画に専念する。



421 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 21:00:41 ]
>>419
既にAPIの質問ではないと思うが
基本的な方法としては、
1、画像そのものを最初にどこかに保存しておいて
2、描画時に使ったコマンドの内容を保存しておく。 点を打った、線を引いた、円を描いたというようなね。

そして、巻き戻すときは、1から順にコマンドを再現して、一つ手前で止めればいい。

422 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 21:26:41 ]
WM_CHARメッセージで、送られてきた文字を取得することは可能なのでしょうか?


423 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 21:29:18 ]
>>422
お前が手の届く範囲にいたら殴りたい。
なんで訊く前にちょっと調べてみないわけ?
ほんの少し調べれば分かることなのに。

424 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 21:37:34 ]
本人にとって、2chで聞く=調べる、なんだろうな

お前の手の届く範囲にはディスプレイがあるだろうから代わりにそれでも殴っとけ

425 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 21:52:49 ]
いえ、質問の仕方が適当すぎました・・・。
WM_CHARのwpに入ってるっぽいのですが、その取り出し方がわかりません。
MessageBox()で表示させようと、(PTSTR)&wpにしても、文字コード取得しようとして(int)wpで見てみても
なんか全然変な値が入っててわけわかりません。

426 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 22:01:52 ]
あのさあ、ちゃんと調べてんの?
ぐぐっただけで詳しい使い方なり情報なりわんさか出てくるんだが。

TranslateMessageはちゃんと読んでんよな?
だったらWPARAM型のwpにキャラクタコードが入ってるんだが。
ちなみにキーコードじゃないぞ

俺も殴りたくなってきた

427 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 22:02:22 ]
殴るなら俺を殴れ

428 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 22:15:19 ]
>>419
SaveDC, RestoreDCじゃダメか?

429 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 22:16:38 ]
>>425
Cの文字の扱いをまるで理解していないと見た。

430 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 22:36:50 ]
いえ、殴るなら僕を殴って下さい。それはそのはず、入ってるわけがありませんでした。
WM_COMMANDで拾ってそのパラメータからWM_CHARの処理やってたので、
そのままWM_CHARを捕まえたような気分になってました。



431 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 22:44:41 ]
>>430
あんた誰だよ。>>425か?

名乗りもせずいきなり僕などという一人称使うな。殴るぞ

432 名前:412 mailto:sage [2007/05/27(日) 22:57:40 ]
>>412-415
これでF1はどこにカーソルがあっても機能するようになったのですが、
F2、F3は機能しなくなりました。F2、F3等は、あるエディットコントロール内にカーソルが
ある時のみ有効にしたくて、F1だけ特殊な感じでした。これはF2、F3とかも
アクセラレータに持っていかれてしまってるせいなのでしょうか?

433 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 22:59:21 ]
>>431
すみません、俺が悪かったです。もう名乗りません。
違う方法でなんとか解決できたのでなんとか出来ました。

434 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 23:25:20 ]
>>433
だーかーら、名乗りもせず「俺が」なんて言うな、っていってんだよ
>>430です、くらい書けよ
誰だかわからんだろう

435 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 23:28:17 ]
いえ、それは俺です。

436 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 23:29:05 ]
>>434
俺だよ俺

437 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 23:34:17 ]
だから俺が俺なんだって
勝手に人の名前騙るなよ

438 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 23:36:23 ]
>>437
すまん、お前が俺か。
悪かった。

439 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 23:54:24 ]
>>412
もしかして: WM_HELP
なんか、ID_MYHELPとか書いているし。

440 名前:412 mailto:sage [2007/05/28(月) 00:02:55 ]
>>439
いえ、WM_HELPではありません。まぁ同じなんですけど、
F1ボタンを押したら自分で作ったヘルプのウィンドウが出るようにしています。
それはいいんですが、F2〜F8にもその他の機能を用意していて、
あるエディットコントロールをサブクラス化してそのプロシージャで
WM_KEYDOWNで拾っているのですが、それが機能しなくなりました。
F1だけをアクセラレータで変にやったせいなのでしょうか?



441 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 00:12:26 ]
>>420
コミックスタジオでも買った方が良いぞ

あ、マンガ描くためのソフトから作ったのを作品の
ネタにするのなら恐れ入る

442 名前:名無し@沢村 [2007/05/28(月) 00:16:43 ]
突然ですが、2つのメモリデバイスコンテキストを合成して描画することに成功しました。
黒い線の画面のほうをBitBltのSRCANDで画面にコピーし、
赤い線の画面のほうをSRCCOPYで画面にコピーしたら、
再描画をかけてもどっちの線も消えませんでした。
ただ、この方法だと、赤い線も黒くなってしまうようです…

赤い線が黒くならないようにするには、どうしたらいいのでしょう?
いくつも組み合わせがあるので、全部ためすのは、気が遠くなるほど時間がかかりそうなので…

443 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 00:20:18 ]
組み合わせとは何の組み合わせ?

444 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 00:30:55 ]
ねむい

445 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 00:58:48 ]
質問です。
CでWindowsプログラム作るため、Win32APIを学ぼうと思っていろいろ調べている途中で気になったことがあります。
テンプレのWin32 API入門というサイトではWin32API学ぶ上で、
windowsの知識とアーキテクチャの知識が必須だと書かれていました。
そこで、「コンピュータの構成と設計」「アーキテクチャ徹底解説MicrosoftWindows2000・・・」
などの書籍でコンピュータアーキテクチャについて学んだ方がいいのでしょうか?
お金に余裕がないので無駄な出費は避けたいです。
ちなみに私は、基本情報技術者試験の知識とCの入門書の知識くらいしかもっていません。
御回答よろしくお願いします。

446 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 01:02:31 ]
パソコン初心者でもなければ別に要らないと思う

447 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 01:02:50 ]
いらん

448 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 01:03:19 ]
その程度は、Win32APIを色々試しているうちに自ずと判ってくるから要らない。

449 名前:445 mailto:sage [2007/05/28(月) 01:09:36 ]
>>446-448
御回答ありがとうございました。
ではこのままWin32APIの学習に入ろうと思います。

450 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 02:30:45 ]
Windowsプログラムを作るためならば、APIから学ぶのは止めたほうがいい。
実際開発では窓とかはフレームワーク任せだからな。それで問題ない。
ど〜しても、変態的な非効率な開発を求めるならAPIから始めることを止めはしない。



451 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 02:59:11 ]
>>449
>>450の意見と思いっきり逆のタイトルですまんが

APIで学ぶWindows徹底理解
www.amazon.co.jp/exec/obidos/ASIN/4822228266

この本はまじでおすすめ。
雑誌連載のムック化だから、それぞれのトピックは完全に独立してて
一つ一つ段階的に学習していく、って使い方はできない(想定されてない)けど、
それぞれに読み応えがあるし、なにより文章がとても上手くて面白い。
内容はタイトルどおりで(「徹底」はちと言いすぎか)、
APIの使用例を通してWindowsの仕組みや叩き方が結構クリアに見えてくると思う

ただし、Cの基礎が分かっていることが条件。
あとソースはBCC用だがVCのことも全体に渡ってちゃんと配慮して書かれてる

まぁ服毒本として興味があればどうぞ


452 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 05:26:58 ]
XPのタスクマネージャのプロセスタブと同じ様な働きをするプログラムを作ってます。
本物のタスクマネージャのプロセス一覧でユーザー名を有効にすると、
LOCAL_SERVICEやNETWORK_SERVICEといったユーザー名の
プロセスが表示されますが、これらのプロセスをOpenProcessTokenで
開こうとするとGetLastError() == 5のアクセス違反でを取得できません。
ログインユーザーやSYSTEMのプロセスなら成功するのですが、
こういった****_SERVICEのプロセスからユーザー名を取得する
方法がありましたら教えてください。
Web検索しても成功してる人の記事が見つかりませんでした。

ぶっちゃけ下の人と同じ事をしたいのですが、
リンク先の回答者が教えているcodeprojectの方法では
取得する事はできない様です。
ttp://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200407/04070077.txt


453 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 06:03:28 ]
すいません、アクセス違反じゃなくて、
GetLastError() 5 「アクセスが拒否されました。」
ってエラーです。

454 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 06:31:58 ]
開き方が悪い

455 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 08:08:45 ]
最低限必要なところのAPIくらい理解しとかんと問題が起きたときにどうにもならん

456 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 08:14:01 ]
>>442
そうか?
小さいBMPを2つ作って、
組み合わせをプレビューをすればいいんじゃない?

Photoshopとかあれば、もっと容易だけど

457 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 08:44:38 ]
>>453
偽装しておけ

458 名前:デフォルトの名無しさん [2007/05/28(月) 10:08:22 ]
ツールバーのアイコンに指定する背景色のカラーコードって何を指定すると透過になるんですか?

459 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 10:10:09 ]
イメージリストを作るときのフラグによって異なる

460 名前:445 mailto:sage [2007/05/28(月) 10:59:14 ]
いろんな回答がでて、よく分からなくなってきました。
最終的にDirectX使いたいという場合はどうなのでしょう?




461 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 11:04:22 ]
DirectXとWin32API はあんまり関係ない。
API直接やDirectX直接を身に付けたいなら 参考書を買ってDelphiでやるという手がある。
API/DirectXの参考書はC/C++で書かれているから、これをC/C++のままコピペしたら
動くのは当然だけど勉強には、あんまりならん。
Delphiに直しながらやれば結構勉強になる。


462 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 11:17:27 ]
>>460
DirectX 入門

>>461
Delphiはマジ死亡しているんで知らないなら覚えるだけ無駄。
移植の問題ありまくりなのに素人に、わざわざ複雑な方法を提案してどうする馬鹿か?

463 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 11:18:25 ]
>>461
Delphiの布教乙

464 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 11:22:02 ]
>>462
  WIN32APIを今さらやるのも、Delphiやるのも同じだろう。
トータルで速い方法を説明してるだけ。
DelphiのVCLはWin32APIの非常に素直なラッパで、VCLを理解すればAPIの作法も理解出来るからね。
MFCでやるよりはずっといい。

465 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 11:22:39 ]
DirectX はコピペだけでもやること多いのに、さらに言語移植て…

466 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 11:23:33 ]
>>464
ラッパライブラリから API を学ぶのは違うようなキガス

467 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 11:25:31 ]
DirectXをやるのにDelphiを勧めるぐらいならC++Builderにしろよ

468 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 11:26:14 ]
APIって学ぶものなの?
こんなんあったよな〜ってMSDN漁って
挙動とか注意点とか調べて使うだけじゃない?

469 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 11:28:00 ]
>>468
最初の作法とイベント駆動まわり、MSDNの見方だけは 慣れとく必要がないかな?

470 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 11:37:09 ]
>>464
>WIN32APIを今さらやるのも、Delphiやるのも同じだろう。
同じじゃねーよ!



471 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 11:41:58 ]
>>465
DirectXは COMで IDispatch も持ってるから、 Delphiからだと実はVBのようにもアクセス出来る
インターフェースを定義せずに、OLEVariantでアクセス出来るわけ。
ただし遅いけど挙動を見るお試しならまあ十分


472 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 11:44:46 ]
>>460
Win32APIでWindowsプログラミングは激しく不向き。
窓一枚で100行とか書かされるからな(コピペですむにしても)。

ただDirectXアプリは窓一枚出せば枠組みはそれでおしまいだから十分いける。

言語に関してはWindowsでCが最適な分野というものはほぼ存在しない。
Cの学習が主眼でないならC++なんかの他の言語の方が後々効率がよい。
C++はCの知識の延長で使うだけでもだいぶ便利。

>「コンピュータの構成と設計」「アーキテクチャ徹底解説MicrosoftWindows2000・・・」
この辺は日本語学習における日本文化の知識みたいなもんでさしあたり不要。
最低限の説明はDirectXの本に載っている程度のもので十分。

473 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 12:34:07 ]
>>471
サンプルやヘルプがC++を前提に書かれていて、
いちいち言語の違いを意識して書き直さなければならないので、
挙動を見るだけでも完全に不向き。

474 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 12:37:12 ]
>>461は自分がやった方法が一番良いと思っている可哀想な子

475 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 13:02:54 ]
>>473
質問者はC++じゃなくてCらしいから
->lpVtbl->ブフォァアな目にあうけどな

476 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 13:10:43 ]
全く別の言語を扱うより遙かにマシ。

477 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 13:10:57 ]
ぶふぉぁあ?

478 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 13:18:39 ]
>>477
次のバージョンで追加されるメソッドです
たぶん

479 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 13:20:29 ]
そうなのか、ダイレクトエッキスには日本語のメソッドがあるんだなたぶん

480 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 13:53:17 ]
COMの話だろ



481 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 14:31:16 ]
昔は、Delphiから CreateOleObject('CLSID_DirectInput') とか出来たけど DirectX8から出来なくなった


482 名前:445 [2007/05/28(月) 15:23:03 ]
ではアーキテクチャについては放置し、C++の方が楽みたいなのでそちらも覚えながら、
C++でDirectX使えることを目標にします

483 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 15:27:18 ]
DirectXならDirectXだけの世界だから大丈夫 Win32もとなると大変だけどね。

なお、言語の複雑さは C++ >>> Delphi/C#/VB > C だから覚悟はしておいてね

484 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 15:46:39 ]
C#って結構難しいよ

485 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 16:15:54 ]
>>483
>言語の複雑さは C++ >>> Delphi/C#/VB > C
C++の全てを理解しようとすればそうかもしれんが、DirectX/MFC等を使うのに必要最低限の知識でいいなら、
Cを(本当に)知ってる人なら3日もあればOKでしょう。


486 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 16:21:02 ]
言語論争ウゼェ

487 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 16:33:10 ]
>>445君へ

まずは、君が言うとこのDirectXの大海に向かって漕ぎ出せばいいんじゃね?
悩んだら、CやSDKの掟みたいなものをクレクレで聞くんじゃなく、
自分なりの解答を得たうえでをここの荒くれどもに問い合わせればいいんじゃない?
(そこそこ罵声はあるけどビビらないで)

んで、気が付きゃ、君も荒くれどもの一員

488 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 16:37:47 ]
>>486 素のAPIに触ろうなんて貴重な人材を自分の陣営に入れたくて必死なんだろ。 許してやれよ

489 名前:デフォルトの名無しさん [2007/05/28(月) 19:16:09 ]
ウィンドウの中にタブコントロールを作成し、それにアイテムを
1つだけ挿入するプログラムを書いたのですがうまくいきません。

以下のコードはメインウィンドウのウィンドウプロシージャが
WM_CREATEを受け取ったときに実行されるOnCreate関数です。

これを実行すると、ウィンドウの中に 250×150のサイズの立体的な
ダイアログ色の長方形が表示されますが、その長方形にタブは付いていません。
また、タブコントロールに挿入されているアイテムの数を表示するメッセージ
ボックスは "n=0"と表示します。なぜでしょうか?

1. throwは実行されない ⇒ タブコントロールの作成は成功している。
2. "挿入失敗"のダイアログは表示されない ⇒ アイテムの挿入にも成功しているはず。

490 名前:デフォルトの名無しさん [2007/05/28(月) 19:17:26 ]
void OnCreate(HWND hParent)
{
InitCommonControls();
HWND hTab = CreateWindow(WC_TABCONTROL,
"",
WS_CHILD | WS_VISIBLE,
0, 0, 250, 150,
hParent, (HMENU)123,
(HINSTANCE)GetWindowLong(hParent, GWL_HINSTANCE), 0);
if (!hTab) throw;
TCITEM item;
item.mask = TCIF_TEXT;
item.pszText = "hello";
if (TabCtrl_SetItem(hTab, 0, &item) == -1)
MessageBox(0, "挿入失敗", "", MB_OK);

// 挿入されたかどうかチェック
int n = TabCtrl_GetItemCount(hTab);
char buf[1024];
wsprintf(buf, "n=%d", n);
MessageBox(0, buf, "", MB_OK);
}



491 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 19:23:24 ]
エディットコントロールにWS_VSCROLLでついてくるスクロールバーについてですが、
このスクロールバーが一番下までスクロールされているかされていないかを判断するには
SetScrollInfo()とGetScrollInfo()を使わなければいけないのでしょうか?
なんかSetScrollInfo()で設定しても、元からあるスクロールバーのままで何も変わらず
いまいち使い方がよくわからなくて困ってます。これらを使わずに
一番下までスクロールされているかそうでないかを判断する方法はないでしょうか?

492 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 19:26:43 ]
あります

493 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 19:43:45 ]
で?

494 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 19:48:07 ]
bool 型は便利だな

495 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 20:33:48 ]
>>492
>>491の後半部分しか答えてないよ。

496 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 20:42:39 ]
全部の質問に答えたとは誰も言っていない。

497 名前:491 mailto:sage [2007/05/28(月) 21:29:42 ]
どのように判断すればいいのでしょうか?

498 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 21:38:57 ]
::GetScrollPos

499 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 21:46:11 ]
>>489-490
> (中略)
> 2. "挿入失敗"のダイアログは表示されない ⇒ アイテムの挿入にも成功しているはず。
> (中略)
> if (TabCtrl_SetItem(hTab, 0, &item) == -1)
> MessageBox(0, "挿入失敗", "", MB_OK);

挿入のときはTabCtrl_InertItem(or TCM_INSERTITEM)。

あと、そこのSetItemは失敗してる。
にもかかわず"挿入失敗"のダイアログが出ないのは「== -1」にしているから。
ヘルプでSetItemの戻り値確認してみ。(InsertItemとの違いもな)


500 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 23:12:36 ]
教えてください。
SetClipboardViewerで画像かどうかを識別するには何を使えばいいのでしょうか?



501 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 23:29:50 ]
>>500
WM_DRAWCLIPBOARDでEnumClipboardFormats

502 名前:500 mailto:sage [2007/05/28(月) 23:35:32 ]
>>501
ありがとうございます。やってみます。

503 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 00:02:42 ]
自作アプリの起動時処理として、とある起動済みの(自作でない)アプリケーションのウィンドウハンドルを取得したいのですが
ウィンドウキャプションがしょっちゅう変わる上に
ウィンドウクラス名もATL:00xxxxxxといった名前でこれまたWindowsを再起動するたびに変わります

なので FindWindow では手が出ません。
どうやって取得したらいいでしょう?


現在は、起動時に「対象アプリケーションをクリックしてください」と表示して
SetCapture と WindowFromPoint の組み合わせでなんとか取得してますが自動化したいのです。

504 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 00:10:16 ]
そのアプリの特徴を研究する。

505 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 00:23:09 ]
子ウィンドウを列挙してそのパターンから判別ればよかろ。

506 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 00:31:55 ]
プロセス列挙してモジュール名で判別なんてのも

507 名前:503 mailto:sage [2007/05/29(火) 00:59:45 ]
>>504-506
506さんの方法でやってみます。
ありがとうございました。

508 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 02:03:14 ]
>>503
FindWindowを使えばいいよ

509 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 05:31:25 ]
>>503
アプリケーションの名前が判ってるなら、
GetWindowThreadProcessIdで指定の窓のpidを取得、
pidからOpenProcessでプロセスハンドル、
プロセスハンドルからEnumProcessModulesでモジュールハンドル、
GetModuleBaseNameでアプリケーション名を取得できる。
GetModuleFileNameExでフルパス名も取得できる。
以上を見つかるまでEnumWindowsで繰り返す。

EnumProcessesから辿る場合はどうすんのかな。


510 名前:452 mailto:sage [2007/05/29(火) 05:52:02 ]
お願いします。
>>452



511 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 06:01:19 ]
>>510
セキュリティソフトに蹴られたりしてね?
最近のセキュリティソフトはマルウェア対策でその手のアクセスを蹴る場合がある

512 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 06:12:48 ]
あ、分かった
>>510
WTSEnumerateProcessesでプロセスのSIDが直接手に入る
OpenProcessTokenは必要ない

513 名前:452 mailto:sage [2007/05/29(火) 06:37:47 ]
ありがとうございます。
SID取得できたんで解決しそうです。

514 名前:489 [2007/05/29(火) 06:39:32 ]
>>499
ありがとうございます。
TabCtrl_InsertItemに変えるとうまくいきました。

515 名前:452 mailto:sage [2007/05/29(火) 07:06:24 ]
NETWORK SERVICE、LOCAL SERVICE共に
無事LookupAccountSidで取得できました。

516 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 07:11:47 ]
報告乙

517 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 07:20:17 ]
なんか夜明けと共に明るい声が響いてくる

518 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 07:42:12 ]
EnumWindows/EnumChildWindowsで見て特徴的な何かを探すかないんじゃないの

519 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 08:20:52 ]
>>509
それをソースコードにするとどのようになりますか?

520 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 08:42:03 ]
コンパイルすればプログラムになるだろ。



521 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 11:31:32 ]
とにかく、ウィンドウタイトルもウィンドウクラスも変わるものに対して、
何を持って特定するのだろうか。EXEファイル名だって変えられるしな。

522 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 12:19:32 ]
ファイル名が分かればファイルのチェックサムを算出できる。

523 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 12:31:16 ]
>>503
なんか、ネトゲのチートツールかなにかを作ろうとしてるように見えるwww

524 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 12:56:08 ]
ATL製ネトゲなんてあるのか・・・?

525 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 14:26:51 ]
ふとした疑問なんだけど
Win32ファイバって一体どういう用途で使うと真価を発揮できるんだろ?

526 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 15:06:03 ]
アセンブラが使えない言語でコルーチンを実装したい場合だろうな >>525
C++/Delphi はインラインアセンブラが使えるから自前でコールチンの実装が出来るから不要。
C#.NET VB.NET あたりの為に用意されたものだろう。

コルーチンは、get/put同士を接続するパイプとか
クライアント型で書かれたものをサーバ型に変換するといった場合に使う

527 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 15:07:04 ]
フィボナッチ数列を求める

528 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 15:32:41 ]
アニョハセヨー(SJIS)を
%E3%82%A2%E3%83%8B%E3%83%A7%E3%83%8F%E3%82%BB%E3%83%A8%E3%83%BC
に変換するのってなんか手っ取り早いAPIあったら教えてください。
最終的には↓にしたいです。
www.google.co.jp/search?source=ig&hl=ja&q=%E3%82%A2%E3%83%8B%E3%83%A7%E3%83%8F%E3%82%BB%E3%83%A8%E3%83%BC&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=

529 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 15:46:06 ]
MultiByteToWideChar と WideCharToMultiByte

530 名前:529 mailto:sage [2007/05/29(火) 15:50:08 ]
具体的には、MultiByteToWideChar でSJISからunicodeにし、
WideCharToMultiByte で unicodeから UTF-8にする。
最後に、そのバイト列をsprintf とかで文字列にすればよかろう。



531 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 17:40:47 ]
#define VOID void とか #define CONST const は、どういう意味があるんですか?

532 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 17:44:23 ]
>>531
#define マクロで置き換えてるだけ。
データ型が大文字(DWORD, UINT)なんで、
大文字で揃えたかったんだけじゃね?

533 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 17:48:28 ]
>>525
使い方によっては、デコード/エンコード、画像処理なんかでも

534 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 17:56:16 ]
>>531
VOIDとかは違うが、
boolとかconstとかのキーワードはもともとのC言語には無いから、C++でもCでもtう

535 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 17:59:10 ]
const は C でもあるぜ。
まあ、全て大文字の奴を使えば、どれもどの環境でも安心! という形にしたかったんだろう。

536 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 18:28:45 ]
>>525
Unixからの移植に使えるとAdvanced Windowsには書いてあったような気がする

537 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 19:13:37 ]
>>535
最近のANSI Cにはconstがあるが、これは比較的後になって追加されたもの。
もともと、というか少なくともK&Rにはconstはなかった。

538 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 19:18:44 ]
K&R まで遡るのはアレだけど、
昔の ANSI C にすら無かったのか・・・。

539 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 19:23:12 ]
少なくとも89年のANSI Cではあったな。

540 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 19:43:17 ]
Windowsの開発が始まった頃には間違いなくあった。



541 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 21:10:54 ]
>Windows 1.0が登場したのは1985年11月18日

542 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 21:26:47 ]
>>538
gccじゃないUNIX用のコンパイラはものすごく古い仕様のままだったりするから
Win32の場合はconstが使えない可能性なんて考慮する必要すらないな

543 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 22:00:31 ]
const char *とchar const *は違うそうです。
ということはconst char const *もあり?
それぞれどう違うのか説明おねg

544 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 22:03:52 ]
const char * と char const * は同じだよ。
違うのは char * const 。

545 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 22:14:17 ]
WinAPI関係ない
C++スレとかいきなされ あるいは本屋いって入門書でも立ち読みしとけ

546 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 22:22:54 ]
>>545
この手のは意外と書籍じゃわかりやすく解説されていない気がする。

547 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 22:25:26 ]
>>546
どっちにしろスレ違い。

548 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 22:29:45 ]
CONSTとconstに関連して,コーディングスタイルについて質問です。
Windowsプログラミングで自分で関数やクラスをつくるときに,
(1)BOOL, UINT, CONSTなどのWin32用にtypedefされたものを使う
(2)bool, unsigned int, constなどのC++予約語を使う
どっちが一般的なのでしょうか?

549 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 22:32:28 ]
C++のboolとBOOLは違うんだぜ

550 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 22:37:31 ]
どう違うんだぜ?



551 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 22:37:51 ]
>>549
そもそもC++にはBOOLなんて型はない

552 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 22:39:42 ]
>>550
普通にWindows.hをインクルードしていれば、BOOLはintにtypedefされる

553 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 22:46:55 ]
>>548
SDK,APIの結果を保証するなら、BOOL。
論理で判断するならbool。
という風に使い分ける。

単にintといっても不確定要素をはらんでる。

554 名前:デフォルトの名無しさん [2007/05/29(火) 23:38:13 ]
おいら,BOOL のくせに 3 種類 ( >0, ==0, <0 ) の値を返してきて
それらをきちんと判別しないといけない API って
GetMessage() しか知らないんだけど,他にもあるんだっけ?

555 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 23:53:25 ]
だってBOOTはtypedef int BOOL;だし‥‥
bool型とは違うのだよ。

556 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 00:10:56 ]
BOOL/boolはほかが言っているとおりなんで、残りのやつについて俺の場合
CONSTは使わず、常にconst
UINTはunsignedより文字数少ないから場合によって使う

557 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 00:37:32 ]
>>555
BOOT?
>>552

558 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 00:40:54 ]
>>557
BOOTSを語れゴラァ part2
pc11.2ch.net/test/read.cgi/tech/1139266461/

559 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 00:44:31 ]
>>558
ちっ、先に張られたか。

560 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 02:42:33 ]
つーかBOOLもBOOTSもどーでもいいからお前らWin32APIの質問しろよ



561 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 02:49:46 ]
>>554
あれヒドいよなw
なら戻り値の型 BOOL にすんなと。

562 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 02:50:05 ]
>>560
BOOLはWin32APIの話だろうが。

563 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 03:20:10 ]
>>562
BOOLはwindef.hで定義されている単なるtypedefであり、APIではありません。

564 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 04:24:21 ]
>>563
型もAPIのうちですよ。


565 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 04:31:43 ]
Vistaで新規に追加されたAPIのリストとかってどこかにありますか?
あれば教えていただきたいです

566 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 05:27:23 ]
>>565
msdn2.microsoft.com/en-us/library/aa383687.aspx

567 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 05:53:39 ]
>>566
うお、こんな体系化されたページあったのか
ありがとうございます

568 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 09:30:24 ]
XPで追加されたAPI一度も使ったことないどころか一つも知らんかった・・・orz

569 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 10:03:53 ]
記述漏れがあるけど参考程度にはなるな

570 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 14:51:46 ]
>>554
WM_CTRCOLOR**の戻り値とか、そもそもDialogProcとか
まあx64ではBOOLが32bitのままだもんでDialogProcの戻り値はINT_PTRに変わったけどな



571 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 15:50:15 ]
GetMessageもWin32化するときに戻り値の型をintへ変更すればよかったのに

572 名前:デフォルトの名無しさん [2007/05/30(水) 16:23:46 ]
質問です。

あるAPLから、フルスクリーンAPLのデバイスコンテキストを
取得したいのですが、どのようにしたら実装できますでしょうか?

573 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 16:39:17 ]
GetDC(NULL)

574 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 16:46:21 ]
APL(エーピーエル)は、コンピューターのプログラミング言語の一種で、
1957年のケネス・アイバーソンによる創案に基づいた独特の表記法を用いた、
対話型インタープリター言語である。とくに配列処理に優れる。
「APL」とは、『Aプログラミング言語』(A Programming Language)の略であるが、
言語の特性から時に『配列処理言語』(Array Processing Language)と言い換えられる。

575 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 16:55:20 ]
これって、アルファベットの A を意味してるのか、
それとも冠詞の a を意味してるのか、
どっちなんだろ?
和訳は前者を採用してるみたいだけど、
訳の都合かもしれないし。

576 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 17:01:20 ]
>>575
double meaningじゃないのかな。
と、適当なことを言ってみる。

577 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 18:00:53 ]
ごめん素で分からんのだが、APLって何

578 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 18:06:57 ]
APL知らんのか。言語だよ
キーボードが特殊だった。まあ普通のキーボードでなんとかなるが

579 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 18:07:50 ]
APLって遅延評価を積極的に使った言語だったよね
16ビットの鈍足マシンで巨大な配列を使っても結構速く結果が出た

580 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 18:58:42 ]
冠詞の a で始まる固有名詞は見たことない



581 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 19:14:17 ]
>>580
>>574で見ているはずだ

582 名前:デフォルトの名無しさん [2007/05/30(水) 21:25:35 ]
ある Windows マシン上の動画ファイルを、
別の Windows マシンからストリーミング再生で表示したいです。
DirectShow + HTTP サーバーを使えば簡単にできそうですが、
動画ファイルを全部ダウンロードすることなく、
動画の特定の時刻からすぐにストリーミング再生することは可能でしょうか?

583 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 21:37:58 ]
ネットワーク共有+プレイヤーで好きな位置にシーク
APIと全然関係ない

584 名前:デフォルトの名無しさん [2007/05/30(水) 21:43:50 ]
ネットワーク共有したくない場合は?

585 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 21:50:20 ]
なにワガママ言ってるんだ?

586 名前:ららら [2007/05/30(水) 21:51:34 ]
ワガママじゃなくて、途中から再生できるようなプレーヤーを作りたいのら。
ネットワーク共有みたいな、面倒な設定はユーザーにさせたくないのら。

587 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 21:51:55 ]
>>584
したくないというキモチをガマンする

588 名前:ららら [2007/05/30(水) 21:52:20 ]
ガマンできないのらー!

589 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 21:57:16 ]
ユーザにわざわざデフォルトの機能以外を使わせて、サーバソフトを用意させるのか?
なんてワガママな奴だ。

590 名前:ららら [2007/05/30(水) 22:02:42 ]
ちがうのら!
動画ファイルはLAN内じゃなくて、インターネット上にあるのら。
サーバーはインターネット上のホストら!



591 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 22:07:51 ]
インターネット上経由だろうがネットワーク共有できる。
ユーザに負担をかけたくないならUPnPにでもしておけ。

592 名前:ららら [2007/05/30(水) 22:10:44 ]
セキュリティは大丈夫なのか?

593 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 22:13:03 ]
それはお前のコード次第

594 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 22:14:10 ]
馬鹿が自作したソフトを外部公開するのは大丈夫なのか?

595 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 22:17:34 ]
ストリーミングだろうがファイル共有だろうが
インデックスでも作らない限り
キャッシュ無しで指定時間からの動画再生開始は不可能だろ

596 名前:ららら mailto:sage [2007/05/30(水) 22:17:56 ]
わぅー・・・・

597 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 22:26:31 ]
気持ち悪すぎワロタw

598 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 22:28:23 ]
ゲームをバックグラウンドで操作したくて色々思考錯誤してます。
ウィンドウを指定してPostMessageでキーを送ったのですが
EnterやEscなどはちゃんと受け付けますバックグラウンドで動くのですが
LeftやDownはダメでした。要はカーソル移動が出来ないんです。

んでSPY++でLeftの入力時を調べてみたところ下記のようなものが出ました

WH_GETMESSAGE:[WM_KEYDOWN or WM_KEYFIRST,256], wParam:[0x00000025], lParam:[0x014b0001]

WH_GETMESSAGE:[UnKnown,1104], wParam:[0x00000025], lParam:[0x00000001]

WH_GETMESSAGE:[UnKnown,1105], wParam:[0x00000025], lParam:[0xc0000000]

WH_GETMESSAGE:[WM_KEYUP,257], wParam:[0x00000025], lParam:[0xc14b0001]

これをPostMessageで送るにはどのように記述すればよろしいでしょうか
またUnKnownの文字列は何をしてるのか教えてください
初心者な質問で申し訳ないですがよろしくおねがいします。

599 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 22:46:41 ]
不正はやめましょう。

600 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 22:55:38 ]
素直にUWSCで組みましょう



601 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 23:00:05 ]
低スキルチーターがあらわれた!

602 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 23:02:55 ]
じーんせいはワンツーパンティー

603 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 23:14:21 ]
>>582
Windows Media Server 買ってら…
ってかマジレスするとストリーミングサーバとクライアント
を実装するってって話になっちゃうのだけれどそうなると
Win32API 1つ2つだけの話じゃすまないのでもはやスレ違い…

604 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 15:23:20 ]
>>579
漏れの完璧で確かな記憶によれば、APL に遅延評価は無かったと思うよ。


605 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 15:26:42 ]
>>582
実際にそういうソリューションあるわけだから、自前でコードを書いて
「出来ない」なんて返事はあり得ないよね。

すると「DirectShow + HTTP サーバーを使って簡単に」可能か、
という質問だと仮定すると、返事は「不可能」になります。

市販品のストリーミングシンク/ソースフィルタとかを買えば別だけど。

606 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 15:32:57 BE:139752689-2BP(222)]
>>582
Server2003に標準で入ってるよ。
www.microsoft.com/japan/windowsserver2003/technologies/winmedia/default.mspx

607 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 15:47:14 ]
Windows Home Server機がAppleTV並みの値段とサイズで出るといいんだが

608 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 23:30:13 ]
日本語版 Windows SDK だって
www.microsoft.com/downloads/details.aspx?FamilyID=7614fe22-8a64-4dfb-aa0c-db53035f40a0&DisplayLang=ja

609 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 00:06:19 ]
>>608
英語版の最新があれば十分だと思う。同じバージョンの日本語版っていうのであれば使おうと思うけどね。

610 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 00:27:56 ]
>>608
どうみてもAPIまわりは日本語化されてない予感



611 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 01:00:04 ]
サンプルプログラムのバグを報告してもなかなか修正されねぇよーって中の人が言ってたから、
日本語版では修正されてっかもね。

612 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 01:00:49 ]
今まさに英語版入れた所なんだよな……。
.NET まわりのドキュメントの日本語化は欲しいところだが API まわりは英語で構わんし。

異言語版SDK の共存って可能なんすか?

613 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 06:05:41 ]
>日本語版 Windows SDK をインストールする前に、英語版 Windows SDK をアンインストールしておく必要があります。
って書いてるよ

614 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 06:49:53 ]
>>610
統合前のPlatform SDKも英語版しかなかったからねえ

615 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 07:26:12 ]
>>613
あら。すんません読んでませんでした。

ならまあいいか別に英語版で

616 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 09:35:37 ]
ドキュメントの一部が日本語なだけじゃないのか
昨日ダウンロード始めたまま寝てしまったが、、、
今夜入れてみるか、、、MSDN待てばいいだけだが。

617 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 16:25:42 ]
Ctrl+Alt+Delを禁止するのに今までGINAを使ってたんだけど、Vistaになってどうしたらいいやら・・・
Credential Providerにも同じような機能は用意されてるんだろうか?
メソッド一覧を見た感じでは無さそう・・・

618 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 16:51:15 ]
>>609
>同じバージョンの日本語版っていうのであれば使おうと思うけどね。

同じバージョンの日本語版なわけだけど、ホントに使おうと思う?

619 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 17:43:19 ]
HTTPS通信にて証明書のエラーの時にダイアログを出したいのですが、証明書のエラーを取得できません。

(1)InternetOpen(NULL, INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, INTERNET_FLAG_ASYNC)
or
InternetOpen(NULL, INTERNET_OPEN_TYPE_PROXY, proxy, NULL, INTERNET_FLAG_ASYNC);
(2)InternetConnect( Open, server, port, NULL, NULL, INTERNET_SERVICE_HTTP, 0, this )
(3)HttpOpenRequest( Connect, Method, Object, HTTP_VER, NULL, NULL, INTERNET_FLAG_RELOAD | INTERNET_FLAG_NO_CACHE_WRITE | INTERNET_FLAG_EXISTING_CONNECT | INTERNET_FLAG_SECURE, this )
(4)HttpSendRequest( OpenReq, Header, Header.GetLength(), str, str.GetLength());
(5)HttpQueryInfo( OpenReq, HTTP_QUERY_STATUS_CODE , Code, &Len, 0 );

(1)〜(5)は全てTRUE, (5)にてCodeが0となってしまいます
//その後InternetSetOption()でSECURITY_FLAGを設定し再度HttpSendRequest()するとCodeは200が来ます。
//SECURITY_FLAGを設定せずにHttpSendRequest()するとCodeは再度0が来ます。

support.microsoft.com/kb/182888/ja を見ると、
HttpSendRequest()の結果がFALSEになりERROR_INTERNET_INVALID_CAなどを取得できるとあるのですが・・・

どこが悪いのかお気づきの方お教え下さい。

620 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 18:31:06 ]
>>619
>(2)InternetConnect( Open, server, port, NULL, NULL, INTERNET_SERVICE_HTTP, 0, this )
Portはなぬ?



621 名前:619 mailto:sage [2007/06/01(金) 18:41:32 ]
>>620
可変ですが現在は0x1bb(443)でやっております。
よろしくお願い致します。

622 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 18:55:46 ]
>>621
開発環境と、想定IEはなぬ?

623 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 19:31:54 ]
INTERNET_FLAG_RELOAD | INTERNET_FLAG_SECURE | INTERNET_FLAG_NO_UI | INTERNET_FLAG_KEEP_CONNECTION

624 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 22:48:55 ]
>>618
注意 : 本リリースは、最初に公開された Windows Vista および .Net Framework 3.0対応の英語版 Windows SDK リリースを
ベースに開発されています。 また、その後リリースされた英語版Windows SDK Update for Vista には対応していませんが、
アップデートの主要内容である Visual Studio 2005 Service Pack 1 で提供されたVista の新しいセキュリティ機能
「Address Space Layout Randomization(ASLR)」に対応したコンパイラが含まれています。

って書いてあるな。SDKと完全に同じものではないみたいよ。

625 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 22:49:41 ]
関連無いけどこっちもwininetの質問
httpQueryInfoを同じアプリケーション内で繰り返し呼ぶと、
abnormal tarminationとかいうエラーがでるようなのですが
原因となりえるものってどんなことがあるでしょうか?


補足:
いつもエラーするわけではなく、一日そのアプリを起動しっぱなしにしてると発生します。

HTTP_QUERY_DATE|HTTP_QUERY_FLAG_SYSTEMTIMEをフラグにして、
SYSTEMTIME変数のポインタを渡してます。

626 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 23:47:24 ]
>>625
エスパーな俺が一言。
wininet系関数は直接の要因じゃない。

配列やアロケート、Open/Closeを良く調べてみ?
あと、HDDキツキツじゃね?

627 名前:デフォルトの名無しさん mailto:sage [2007/06/02(土) 00:21:32 ]
そうさ!
俺がルールだ!!

628 名前:デフォルトの名無しさん mailto:sage [2007/06/02(土) 00:54:04 ]
ソーサ ヨミウリ

629 名前:デフォルトの名無しさん [2007/06/02(土) 14:57:01 ]
SetParentで親ウインドを設定した場合、親ウインドと子ウインドのUIステータスを同期させろ
ってMSDNのSetParentの説明に書いてあるんですけど、
UIステータスってなんですか?
具体的にどういう処理をすればいいのですか?

630 名前:625 mailto:sage [2007/06/02(土) 15:08:12 ]
どうやらサーバーが重くてヘッダーが
取得できてないようです。

httpSendRequestは成功してるんだけどなぁ。



631 名前:デフォルトの名無しさん mailto:sage [2007/06/02(土) 15:17:32 ]
>>629
ttp://msdn2.microsoft.com/en-us/library/ms646335.aspx#_win32_UI_State

632 名前:デフォルトの名無しさん mailto:sage [2007/06/02(土) 15:41:07 ]
>>630
乱発(?)した後、ハンドルやアロケートは的確に開放されてる?
特に、失敗パターンは見落としやすいからね。

633 名前:デフォルトの名無しさん mailto:sage [2007/06/02(土) 18:13:09 ]
OSが動作している環境がマルチコアかどうか判定する方法を教えてください


634 名前:デフォルトの名無しさん mailto:sage [2007/06/02(土) 18:29:37 ]
デュアルやクアッドCPUじゃなくてマルチコアなのか

635 名前:デフォルトの名無しさん mailto:sage [2007/06/02(土) 18:31:46 ]
カーネルに聞け

636 名前:デフォルトの名無しさん mailto:sage [2007/06/02(土) 18:36:52 ]
WMIでWin32_Processorあたりかな?
HT対応のCPUに関してはGetEnumerator()で例外が発生するかもね。
searcher.Get()の結果がヌルポかどうかで判定しないといけないかもよ。

637 名前:636 mailto:sage [2007/06/02(土) 18:37:41 ]
msdn2.microsoft.com/en-us/library/aa394373.aspx

Win32_Processorクラス


638 名前:デフォルトの名無しさん mailto:sage [2007/06/02(土) 18:37:43 ]
kernel32.dll に聞くAPIはほとんどすべて、結果的にカーネルに聞いているのではないの?

639 名前:636 mailto:sage [2007/06/02(土) 18:40:57 ]
msdn2.microsoft.com/en-us/library/Aa394102.aspx

Win32_ComputerSystemクラスも見るべきか?


640 名前:デフォルトの名無しさん mailto:sage [2007/06/02(土) 18:46:58 ]
>>634
デュアルもクアッドもマルチコアではないのですか?

>>636
うう、WMIですか。
Win32API SDKでは取得できないのかな。
ありがとうざいます。



641 名前:デフォルトの名無しさん mailto:sage [2007/06/02(土) 18:50:05 ]
COMベースってキモイよね
複雑性上げて何したいのかワカラン

642 名前:デフォルトの名無しさん mailto:sage [2007/06/02(土) 18:52:55 ]
>>640
そういう場合は普通マルチプロセッサって言わないか?
マルチコアだと「1つのパッケージに複数のCPU」という意味に使われると思うけど。

643 名前:デフォルトの名無しさん mailto:sage [2007/06/02(土) 18:53:07 ]
>>640
デュアルコアとデュアルCPUは違うぞ?

644 名前:636 mailto:sage [2007/06/02(土) 18:54:09 ]
>>641
C側からは、儀式的に感じるよね。
憂鬱なカンヂや

645 名前:デフォルトの名無しさん mailto:sage [2007/06/02(土) 18:58:28 ]
GetSystemInfoでプロセッサ数は得られるが
物理的なプロセッサ数なのか論理的なプロセッサ数なのかは知らん。

646 名前:636 mailto:sage [2007/06/02(土) 19:11:08 ]
最近はGetLogicalProcessorInformationって関数もあるのね

647 名前:デフォルトの名無しさん mailto:sage [2007/06/02(土) 19:25:28 ]
便乗で質問です
複数プロセッサに割り当てられてる各プロセッサ毎の
スレッドIDを知りたいのですが、できるでしょうか?


648 名前:デフォルトの名無しさん mailto:sage [2007/06/02(土) 19:33:38 ]
今その瞬間に、実際に動いているところの、
他のプロセッサで走っているスレッドIDを知りたいの?

649 名前:デフォルトの名無しさん mailto:sage [2007/06/02(土) 19:33:47 ]
GetThreadAffinityMaskでできるみたいですにゃ


650 名前:デフォルトの名無しさん mailto:sage [2007/06/02(土) 19:38:23 ]
>>649
すげえ
初めて叱咤
あんた最強ですぅ

Set〜から辿らないとぐぐってもmsdnに引っかからないね



651 名前:デフォルトの名無しさん mailto:sage [2007/06/02(土) 19:46:56 ]
え、GetThreadAffinityMaskってなくない?
kernel32.dll直接見てもなかったよ

652 名前:デフォルトの名無しさん mailto:sage [2007/06/02(土) 19:51:37 ]
嘘ついたにゃ
SetThreadIdealProcessorを1回空呼びして
プロセッサが指定されてるか調べればいいにゃ

653 名前:デフォルトの名無しさん mailto:sage [2007/06/02(土) 20:01:07 ]
てめえ!
嘘つきやがって、悪い子だな!
つーか優先プロセッサが判るだけで
ほんとにそのプロセサで動いてる証拠なんてねーんじゃねえかぁ?


654 名前:デフォルトの名無しさん mailto:sage [2007/06/03(日) 03:07:37 ]
共有フォルダへのアクセスの認証をプログラムで制御したいのですが、
使用するAPI関数を教えてもらえないでしょうか。
net useコマンドのようなことがしたいです。
ドメイン名とユーザとパスワードを指定して、共有フォルダにアクセス
できるようにしたいです。

655 名前:デフォルトの名無しさん mailto:sage [2007/06/03(日) 04:07:11 ]
>>654です。事故解決しました。
WNetAddConnection3を試してみます。

656 名前:デフォルトの名無しさん mailto:sage [2007/06/03(日) 08:34:11 ]
>>654-655
夜は寝ようよw

657 名前:デフォルトの名無しさん mailto:sage [2007/06/03(日) 11:53:54 ]
[SECTION]
IDENT=VALUE
IDENT2=VALUE2
というINIファイルで、IDENT=VALUEの行だけを消滅せしめる関数ってないですか?

658 名前:デフォルトの名無しさん mailto:sage [2007/06/03(日) 12:10:26 ]
txtで読んで消す

659 名前:デフォルトの名無しさん mailto:sage [2007/06/03(日) 12:12:20 ]
>>657
WritePrivateProfileString()
lpStringにNULLを渡す

660 名前:647 mailto:sage [2007/06/03(日) 13:21:26 ]
自己解決しました。



661 名前:デフォルトの名無しさん mailto:sage [2007/06/03(日) 14:09:42 ]
OutputDebugStringの出力を受け取って表示するツールを探しています。
コマンドライン型のものでできればpidかプロセス名でフィルタをかけられるものはないでしょうか。

662 名前:デフォルトの名無しさん mailto:sage [2007/06/03(日) 14:15:40 ]
そのぐらい自分で作れよ。

663 名前:デフォルトの名無しさん mailto:sage [2007/06/03(日) 17:33:21 ]
DBGMONってのがあるけど
ノートンか何かの影響か何も表示できないw
確実にOutputDebugStringが追えるのはMSDNのlodprof32だけ。

664 名前:デフォルトの名無しさん mailto:sage [2007/06/03(日) 18:27:33 ]
>>661
基本ツールだろ
ttp://www.microsoft.com/technet/sysinternals/utilities/debugview.mspx


665 名前:デフォルトの名無しさん mailto:sage [2007/06/03(日) 18:34:24 ]
それGUIやんけ

666 名前:デフォルトの名無しさん mailto:sage [2007/06/03(日) 22:00:04 ]
シェアウェアで何かあった気がするな。

667 名前:デフォルトの名無しさん mailto:sage [2007/06/03(日) 23:14:57 ]
サンプルソースにあるんだから、好みで作ればいい

668 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 00:45:57 ]
ちょっとどのスレに書いて良いのか謎だったので、不適切なら誘導お願いします。

WIN32APIの学習をしているのですが、TextOutに放り込む文字数の取得方法関連でMSDN見たら、lstrlenはStringCchLengthに変えた方が良いよ、というので
strsafe.hをincludeして書き換えてみたのですが、そのstrsafe.hが原因でwarning C4996を吐きます。

このwarningを消す方法として、無視するか_CRT_SECURE_NO_DEPRECATEする他に何か無いでしょうか。
#普通にlstrlen使うのが一番"まとも"な気もしますが、一応学習ということで……

環境はVC++EE2005です。


ちなみに数時間格闘してみたところ、どうやらDirectX SDK(Microsoft DirectX SDK (April 2007))のstrsafe.h使ったときにはwarningが発生して、
Platform SDK(Microsoft Platform SDK for Windows Server 2003 SP1)のstrsafeを使ったときには発生しない、とか割とどうでもよさそうなことは分かったのですが……


669 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 00:50:55 ]
> このwarningを消す方法として
警告が出てるって事は、lstrlen とか strlen とか古い文字列関数が他に使われてるってことだべ?

全部置き換えれ。

670 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 00:54:52 ]
ir9.jp/prog/ayu/strsafe.htm
> そんな時は STRSAFE_NO_DEPRECATE を、#include <strsafe.h> の前に定義してあげると、
> 従来の関数も同時に使用できるようになります



671 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 01:59:52 ]
>>669
書き方が悪かったですね。warningの詳細も貼り付け忘れていましたし。本当に申し訳ない。
自分の書いているソースには古い文字列関数は一切使われてはいなく(むしろlstrlenすらStringCchLengthに置き換えようとしている)
どうやらstrsafe(が参照しているstdio.h)からwarningが出ているみたいなのです。多分それでPlatform側のstrsafeを使うとWarningが出なくなるわけですね。

c:\program files\microsoft directx sdk (april 2007)\include\strsafe.h(5595) : warning C4996: '_vsnprintf':
This function or variable may be unsafe. Consider using _vsnprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
c:\program files\microsoft visual studio 8\vc\include\stdio.h(339) : '_vsnprintf' の宣言を確認してください。
SDKのパスはデフォルトです。 行数の違う同じ内容のWarningが全部で4つ出ます。

>>670
えぇっと……
> このwarningを消す方法として、無視するか_CRT_SECURE_NO_DEPRECATEする他に何か無いでしょうか。
ということで申し訳ありません。Warning消しとしては正しい方法なのですが、セキュリティを高めるためにわざわざstrsafeしているのに、逆方向のオプション付け足すのもアレなので……

672 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 03:10:38 ]
何か勘違いしてるんじゃない?
そのWarningが、どの関数で出たのか、もう一度よーくチェックしてごらん
つーか、ソース貼ればいいのに・・・

673 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 03:52:45 ]
>>671
strsafe.h って何者か、ちゃんと分かって使ってる?
その前に、警告メッセージちゃんと読んでる??

メッセージの内容そのまま、*_s 系の関数使えばいいだけじゃないの?

674 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 04:21:07 ]
sprintf周りが抜けてるんだろうなあ

675 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 08:20:54 ]
>>671
それ<strsafe.h>関係ない

Visual C++ 2005のCRTのセキュリティ強化 
msdn2.microsoft.com/ja-jp/library/8ef0s5kh(VS.80).aspx
CRT関数のセキュリティが強化されたバージョン 
msdn2.microsoft.com/ja-jp/library/wd3wzwts(VS.80).aspx

676 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 10:25:48 ]
>>671
Warningに書いてあるやんけ。おまいの目は尻に付いてるのか?


677 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 10:38:22 ]
metokoumon

678 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 11:04:05 ]
>>676
フォーラムにもそれ風なことがあったお
forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=1512292&SiteID=7

679 名前:619 mailto:sage [2007/06/04(月) 15:17:29 ]
お返事が遅くなりまして申し訳ございません。
今までの環境が使えなくなったので別環境に移ったところ、
(4)でFALSE, その後のGetLastError()でERROR_IO_PENDINGとなりました。

>>622
VisutalStudio2003, IE6.0となります。

>>623
これにしてみましたが変化はありません

以上、恐れ入りますがよろしくお願い致します

680 名前:619 mailto:sage [2007/06/04(月) 15:19:31 ]
>今までの環境が使えなくなったので別環境に移ったところ、
>(4)でFALSE, その後のGetLastError()でERROR_IO_PENDINGとなりました。

これは元からのようでした・・・大変失礼いたしました



681 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 17:16:39 ]
>>680
>今までの環境が使えなくなったので別環境に移ったところ、
>(4)でFALSE, その後のGetLastError()でERROR_IO_PENDINGとなりました。

ちなみに、非同期側の処理(スレッド)とか、うまく終了してる?
開放してないフローとか考えられない?


682 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 18:28:52 ]
Vistaでログオン直後に画面にかぶさってる「ようこそ」とか「デスクトップの準備をしています...」の画面が
消えるタイミングって何らかの方法で取得できるんでしょうか?
スタートアップに登録するアプリのスプラッシュ画面が見事に隠されてしまって何とかしたいんですが・・・

683 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 18:37:34 ]
作者のオナニーなんて見たくないからいらんモノを出すな。

684 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 18:38:23 ]
>>682
とうぜんシェル(エクスプローラ、、、タスクバーね)が起動するから
それを監視しては?

685 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 18:42:17 ]
もちろんそこでスプラッシュを出すにしても、
やるべきことは、それ以前に終わらせておけよ

686 名前:682 mailto:sage [2007/06/04(月) 19:13:32 ]
事故レス。
LogonUI.exeが存在しているかを判定することで一応解決。
正確にはスプラッシュではなく、飾りとかじゃなくて表示が必須というものだった次第。

>>684
基本的にそういうものの起動が裏で行われている状態なのでそっちの監視だと不可。


687 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 19:35:01 ]
あほだなあ
ウィンドウが可視状態かみてればいいのに

688 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 19:49:30 ]
>>687
686じゃないが、あの状態ってウィンドウステーションかデスクトップも別物になってないか?
列挙かけてみたことあるけどどうも検索不可属性が付いてるのが出てこなかったが・・・

ということでWindowFromPointとかIsWindowVisibleからの切り込みはダメっぽいよ


689 名前:688 mailto:sage [2007/06/04(月) 19:51:00 ]
×付いてるのが
○付いてるのか

ちなみにOpenInputDesktopでも普通にwinsta0\defaultになってた。

690 名前:668 mailto:sage [2007/06/04(月) 20:52:02 ]
わふ。とりあえずソース貼ってなかったのがダメすぎたっぽいので貼ります。すみません。
s-io.net/up/1/_/jump/1180957523712070.8VJMzU
pass: API

Warningは読んでいますし、提示してくださったリンクは(ありがとうございます)既に全て目を通していましたし、
目も尻にはついていません。
#節穴かもしれませんし、脳みそはスポンジかもしれませんが……

トラブルの内容としては>>678と一緒だとは思うのですが、最新のDirectXのstrsafeで発生する(PlatformSDKでは発生しない)ことから、
PlatformSDKのバージョンを上げる、というのも解決策にはならないみたいです。

#Warningの詳細やらソースコードやら貼らずに分かりにくい説明していて本当に申し訳ないです。でも、DirectXのstrsafeでコンパイルせずに、warningなんて出ないじゃないかボケ、というのは勘弁してください。




691 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 23:27:41 ]
WebサーバからSSL証明書をダウンロードして検証したいと思います。

(1)WebサーバからSSL証明書をダウンロードする
(2)それを検証する

といったようなAPIは無いでしょうか?

692 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 23:28:40 ]
ありません

693 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 23:39:16 ]
CryptoAPIがとっても面倒だった記憶があるけど。

694 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 23:42:09 ]
>>690
だから、673,675が書いてくれた事が正解なんだって。
strsafeってのが何の役割を果たすかを理解しる。

どーせ/GS入れてるんだろw。


695 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 00:11:04 ]
Visual C++ 2005は、CRT関数のセキュリティ強化版を“<strsafe.h>とは無関係に”用意している。
(これは次期Cへの提案されている事項でもあるが今はどうでもいい)
このセキュリティ強化版の関数は、基の関数名に_sを付けた名前になっている。
例: scanf→scanf_s

_CRT_SECURE_NO_WARNINGSを定義していない状態で、従来の関数を使うとC4996になる。
(ただし、C4996自体は、<strsafe.h>などこれ以外でも使われている汎用的な警告)

<strsafe.h>とCRTセキュリティ強化、はたまたそれ以外の手段の中からどれを使うかはお前が決めること。
利点欠点を好きに考えて選べ。

696 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 01:36:39 ]
じゃstd::stringという事で

697 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 01:55:52 ]
速度でないじゃん

698 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 01:57:23 ]
文字列操作はコストが高いんだから、速度が欲しけりゃ自前でやるんだな。

699 名前:668 mailto:sage [2007/06/05(火) 02:06:53 ]
うー。了解です。この構成でWarning消すとか、無駄なところに労力注ぐの止めて、別の構成にすることにします。
アドバイスをくれた皆様、どうもありがとうございました。
#学習が第一義なので、とりあえずこれでこの問題はオシマイですけれど……

>>696-697
……一応std::string版のコードも書いちゃったのですけれどね。


700 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 07:53:33 ]
jpegのファイルサイズを先頭500バイトあたりで知ることは
できますか?



701 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 07:58:13 ]
ファイルサイズなら GetFileSize なりなんなりで。

702 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 08:00:29 ]
失礼しました。ファイルサイズじゃなくて、ストリームで呼んでいるときの
jpegのサイズです。

703 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 08:03:45 ]
JPEG フォーマット
siisise.net/jpeg.html

704 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 08:07:38 ]
JPEGフォーマットの詳細を聞いているのではなく、先頭500バイト
あたりまでよんで、サイズを確定可能かが知りたいです。

705 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 08:13:56 ]
フォーマットの詳細を見て自分のやりたいことが出来るか判断しろよ。

706 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 08:42:42 ]
わからない人、答えたくない人は黙ってくれてればいいです。

707 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 09:36:14 ]
無理だよ

708 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 09:46:48 ]
そもそもWinAPIと無関係。

709 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 09:53:54 ]
>>704
正直に言えよ、そのリンク先では難しすぎて自分ではわかりませんでした、と

710 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 10:40:45 ]
>>704
結論:不可能
理由:可変長レコード(500バイト以上もおk)があるため



711 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 10:42:58 ]
>>704 釣り乙

712 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 10:48:28 ]
>>704
結論:不可能
理由:あなたは、まだ、その域に達していない

713 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 10:57:49 ]
だな、たとえ可能でもお前には無理

714 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 11:03:34 ]
起動中のIEのスクロールバーの情報(最大値や最小値、現在の位置)をWin32APIで取得する方法ってありませんか。
GetScrollPosやGetScrollRangeで取得できないようなので、それ以外の方法で取得する方法はあるのでしょうか。

715 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 11:14:19 ]
>>714
取得出来ないようなのでってお前・・・。出来るよ普通に。

716 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 11:17:33 ]
>>702
ストリームで何を呼んでるの?
jpegをハンドリングする関数か何か?
だとしたら、そいつがサイズを知っているんじゃないの?

717 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 11:18:42 ]
>>710>>711
不可能じゃないっしょ。jpegデータが500バイト以下なら。


718 名前:714 mailto:sage [2007/06/05(火) 11:19:46 ]
>>715
マジデスカ。
IEのHWNDとSB_VERTをGetScrollPosに渡せば取得できるということですよね?

719 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 11:22:19 ]
>>718
お前の脳味噌には親ウインドウとか子ウインドウとかの概念はないのか?

720 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 11:26:47 ]
次は子ウィンドウのハンドルの取得方法でも聞いてくるかな



721 名前:714 mailto:sage [2007/06/05(火) 11:26:54 ]
>>719
InternetExplorer_ServerクラスのHWNDを指定してGetScrollPosを呼び出しても取得できないのですが、指定先が間違っていますかね?

722 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 11:31:27 ]
>>721
お前は人の話を聞いているふりだけして、実際は何も聞かないタイプだろ。

723 名前:714 mailto:sage [2007/06/05(火) 11:34:16 ]
>>722
えぇ。確かにそういう人間かもしれません。

724 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 11:57:22 ]
>>722
そういう人間、俺の周りにもわんさか要るわww

725 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 11:59:06 ]
自分のことかな?と最近気づいた

726 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 12:01:34 ]
居るわ

727 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 12:22:39 ]
>>717
マーカーを読みつつパースしながら、運良く APP0 が捕まれば確定&読み込み終了
読み込みバイト数が 500 を超えたら未確定終了
こうするしかないよねぇ

728 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 12:30:08 ]
一応書いてやってみるが
IEブラウザコントロールのスクロールバーはウィンドウ本体の付属オブジェクトじゃなくて子ウィンドウなんだな?

729 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 12:37:32 ]
IEのバージョンは?

730 名前:714 mailto:sage [2007/06/05(火) 12:50:13 ]
>>728
ありがとうございます。
私は子ウインドウだと認識しています。

>>729
IE6です。

COMを使えば比較的簡単に実現可能なのですが、事情により今回はCOMなしで実現したいと思っています。



731 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 12:55:10 ]
DeviceCapabilitiesで特定のプリンタ名を渡したときだけ動作をしないような。。。

ネットワークプリンタで「マシン名\プリンタ共有名」の場合は動くのだが、
「自動 プリンタ名(マシン名 上)」というプリンタ名を渡したときは動作をしない。

名前がおかしいのかなぁ。。。

732 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 15:09:48 ]
>>731
kwsk

733 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 16:06:23 ]
DVD-RAMからタスクトレイに常駐するアプリを起動。
DVD-RAMを取り出す。
XPを終了。

DVD-RAM入れろって出るんですけど、起動元のEXEファイルが無くても、
何も出さずにXPを終了させる方法ってありますか?

734 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 16:08:08 ]
>>733
ファイルコピー

735 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 16:35:50 ]
リンカオプションで「メディア抜いても起動を続けられるようにする」ってのはあるけど、
どっちみちWindows再起動されたらだめぽ

736 名前:733 mailto:sage [2007/06/05(火) 16:54:21 ]
>>734
ファイルコピーしないでやりたいのですけど。

>>735
そんなのあるんですか。 再起動時はEXEは起動してなくて構わないので。
それで出来そうです。 ありがとうございました。
ちょっと733は判りにくくて申し訳なかったです。
「XPを終了させようとすると、DVD-RAMを入れろって出ますです。」

737 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 17:01:28 ]
/SWAPRUN:CD か。

738 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 21:07:00 ]
なんか1文字入力するたびに、SendMessageBox(hEdit, EM_LINEINDEX, 2, 0);で、3行目の
インデックスを表示させているのですが、2回に1回"-1"が返ってきます。
20→-1→22→-1→23→・・・
3行目以降に文字を入力した場合は
23→-1→23→-1→23→・・・
のように動作します。-1は3行目がない場合に返す値だと思うのですが、
それ以外の場合でも-1を返すような事はありえるのでしょうか?

739 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 21:23:41 ]
2回に1回は確実にそういう順番ではなく、大体の割合です。-1が2回続けて返ることもあれば、
通常の値が2回続けて、返ることもあります。ただ、ゆっくりと入力すれば必ず-1と正常な値が交互に返ってきます。
一体何が起きているのかさっぱり分かりません。助けてくだしあ・・・

740 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 21:32:48 ]
ちなみに今調べてみたところ、どうやらhEditというコントロールにおいてだけこのような現象が起きています。
hEditは、あるエディットコントロールに文字が入力された場合、そのエディットコントロールの文字を表示するといった動作をします。
表示はGetWindowTextとSetWindowTextで行われます。もしかしたらSetWindowTextで再描画する瞬間に
EM_LINEINDEXで行数を調べてるから-1が返って来てるのかな?とか思って排他制御したのですが、やはり-1が返ってきます。
というか、デッドロックも起きたり起きなかったり。



741 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 21:34:02 ]
ひとつのファイルを、二つのプロセスからMoveFile()で、名前を変更しようとします。

プロセスA -> MoveFile("hoge", "XXX")
プロセスB -> MoveFile("hoge", "YYY")

当然片方のプロセスは失敗すると思ったのだけど、両方リターン値が成功で帰ってくるときがあります。
(リターン値が成功で帰ってくるけど、実際は片方は失敗してる)

二つのプロセスで、ひとつのファイルを取り合うのにこういう方法って、使えないんですかね?
それとも、コードの書き方がどこかおかしいとか。



742 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 21:45:30 ]
質問です。あるエディットコントロール内で例えば、"aaaaaaaaaaaあああああああああ"と入力します。
すると、ある程度の長さになると"a"と"あ"の間で改行されます(実際は\nは入っていなくて、表示上改行されてるだけ)。
これは仕様なのでしょうか?このように勝手に改行されないようにするにはどうすればいいのでしょうか?

743 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 21:48:36 ]
WM_なんとか

744 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 21:52:16 ]
>>742
英単語の途中で改行されないようになっている。
EM_SETWORDBREAKPROCでコールバック関数を登録すれば
自分で好きなように変更可能。

745 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 22:16:10 ]
>>741
プロセスAのMoveFileが完了する前に、
プロセスBのMoveFileが走るんでしょ?

Mutexを使って管理すればいいんじゃない?

746 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 22:17:37 ]
>>738-740
ソースあげ

747 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 22:18:11 ]
>>744
ありがとうございます。とりあえずエディットコントロールは複数あるのですが、
そのうちの一つは自動で改行されないようになりました。全てのエディットコントロールで
自動改行をされないようにするには、全てのエディットコントロールをサブクラス化して
WM_CHARを捕まえないといけないのでしょうか?

748 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 22:19:17 ]
>>746
1500行くらいあるので要点を簡略化してUPします。
その作業をするのでもう少し待ってください。

749 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 22:30:19 ]
簡略化したら治っちゃたりするんだなーこれが

750 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 22:41:43 ]
>>742
スクロールバーつければいいだけかも



751 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 23:04:20 ]
>>749
簡略化してる途中に治りました。原因は、等幅フォントを使用してないことにありました。
3行目までの文字をカウントし、2行+1バイトを他のエディットコントロールに送っていたのですが、
時々2行しか送られない事があるせいで-1が返ってきてたようです。2行+5バイトくらいにしたら正常に動作しました。

>>750
インターフェイスの仕様上、スクロールバーはつけないようにしています。
そのせいでエラーの原因に気付きにくい状態が生まれてしまったのですが・・・。

752 名前:749 mailto:sage [2007/06/05(火) 23:11:45 ]
>>751
だろw

753 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 23:14:18 ]
>>751
バカスw

754 名前:749 mailto:sage [2007/06/06(水) 00:03:36 ]
ま、早とちりは誰にでもある。
元気だせw

755 名前:747 mailto:sage [2007/06/06(水) 00:15:21 ]
どうやらWM_CHARの時にいちいちSendMessageしなくても、
WM_CREATEの時に一回SendMessageするだけでいいみたいですね。
随分時間を取られてしまった・・・orz

756 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 05:37:31 ]
IWebBrowser2::Navigate2で存在しないURLに移動しようとしたときに
'xxx'が見つかりません。パスまたはインターネット アドレスが正しいかどうかを確認してください。
というエラーのメッセージボックスが出ます。これを抑制する方法はないでしょうか。
このメッセージボックスはDWebBrowserEvents2::OnBeforeNavigate2が呼びだされる前に出て来ます。


757 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 05:59:31 ]
なぜ存在しないURLに行きたいの

758 名前:デフォルトの名無しさん [2007/06/06(水) 06:11:12 ]
ウインドウズマシンって、
目覚まし時計みたいに、あらかじめ決められた時間に起動するように設定するとかってできるのですか?
それと、usbバスに今、抜き差しが行われたって情報を確認することってできるのでしょうか?
それは原理的に無理なのでしょうか?

759 名前:デフォルトの名無しさん [2007/06/06(水) 06:28:49 ]
detail.chiebukuro.yahoo.co.jp/qa/question_detail.php?qid=119795641
一つ目の質問は調べたら分かってのでいいです。
スンマソン。

760 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 06:39:49 ]
>>757
移動できない時に代替処理をしたいのですが、
イベント通知や関数から戻るより先に強制的にメッセージボックスが出ているのが困るのです。




761 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 08:11:46 ]
移動する前に存在するか調べればいい

762 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 08:25:41 ]
>>756
IWebBrowser2::SilentにVARIANT_TRUEは?

763 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 09:42:44 ]
>>758
RegisterDeviceNotification

764 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 09:44:27 ]
>目覚まし時計みたいに、あらかじめ決められた時間に起動するように設定するとかってできるのですか?
コンパネ-タスク or at

765 名前:デフォルトの名無しさん [2007/06/06(水) 10:45:08 ]
>>763
>>764
ありがトン。

766 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 10:59:54 ]
OSの起動じゃないのか

767 名前:デフォルトの名無しさん [2007/06/06(水) 11:09:38 ]
いや、そうなんですけど、
それは、基本的にできないとわかったので良いです。
とりあえず、情報を教えてくれたと言う気持ち自体に感謝しとるわけです。

768 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 11:24:07 ]
BIOSが対応していれば出来るけど?

769 名前:デフォルトの名無しさん [2007/06/06(水) 12:14:56 ]
マジっすか?
バイオスにプログムから指示を出すんですか?

770 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 12:20:36 ]
>>768をどう読めばそうなるんだよ



771 名前:デフォルトの名無しさん [2007/06/06(水) 12:25:46 ]
ああ、なるほど、意味分かったです。

そう言うマシンがあるってことですね。
確かに聞いたことはあります。

772 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 12:33:52 ]
APIでアクティブタイマを設定するだけ。
あとはBIOSが対応していれば指定した時間に起動する。

773 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 12:55:53 ]
BIOS側でしか起動時間を変更出来ないハードウェアのために
スケジュールを変更するGUIを作りたいのですが
WindowsOS上のプログラムからBIOSの設定変更は可能ですか?



774 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 13:06:07 ]
可能ですがやり方や設定位置はマザーボードによって異なります。
詳細は各メーカに問い合わせてください。

775 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 13:27:14 ]
メーカーによってAPIが異なることはありますか?

776 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 13:33:47 ]
詳細は各メーカに問い合わせてください。

777 名前:デフォルトの名無しさん [2007/06/06(水) 13:33:55 ]
>>775
APIはウインドウズなんだから、
ウインドウズosであれば変わらないと考えても良いんじゃないですか?

なるほど。
基本的にはバイオスがアクティブタイマーを監視するようであれば、
プログラムからタイマーを設定すればよくて、
そうでない、場合は各種のバイオス次第と言うわけなんですね。


778 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 13:38:38 ]
APIはウィンドウズなんでしたか・・・
本当にありがとうございました

779 名前:デフォルトの名無しさん [2007/06/06(水) 15:29:05 ]
>>778
winのバージョンで使えなかったり動作が違う事はあるけどなー


780 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 15:56:46 ]
スルーしろよ



781 名前:691 mailto:sage [2007/06/06(水) 17:03:25 ]
>>692
ないですか・・・
>>693
情報ありがとうございます。

(1)はWindowsAPIではどうも難しそうですね。(2)はCryptoAPIでできるかもしれませんが。
(1)はOpenSSLでなんとかならないか調査してみます。

782 名前:デフォルトの名無しさん [2007/06/06(水) 20:22:51 ]
editcontrolにautocompleteを付けたんですが
そのsuggestのドロップダウンが出たタイミングはどうやったら知ることができますか?
WM_NOTIFYとか親に来るのかと思ったけどどうも来ないみたいです

783 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 20:46:18 ]
>>745
昔、PerlでCGIを書いたときは、ファイルのリネームで排他処理ができたから、
windowsでも、同じようにできるかなって思ったんだけど、Linuxなんかとは、動作が違うってことなんかなぁ。

VBからAPIを読んでるから、もしかしたらそのせいかもしれないかなと思ったけど、検証がめんどうだから
MoveFileのあとに、ファイルをオープンして、成功したら、リネーム成功ってことにしました。

784 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 20:48:37 ]
それってMoveFile()はアトミックじゃないってこと?
なんかそれすごく嫌だな

785 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 21:07:55 ]
WIN32APIとは違うかもしれませんが質問させてください。
CAxWindowの作成時にパワーポイントのファイルを読み込ませ表示させているのですが、何度もCAxWindowを作成、削除を繰り返していると、削除時(DestroyWindow時)にパワーポイント側のエラー(マイクロソフトにエラーデータを送信してくださいウィンドウ)が発生します。
何かエラーになる原因、もしくは、エラーウィンドウを表示させない方法を教えていただけないでしょうか。
お願いします。

786 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 21:17:22 ]
CAxWindow付随メンバの解放する順序なんじゃね?

787 名前:785 mailto:sage [2007/06/06(水) 21:41:01 ]
申し訳ありません。
付随メンバの解放とはどうすればよいのでしょうか?

788 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 22:10:55 ]
>>787
多分、ヒープやらなんやらの確保順と解放順がちぐはぐなんじゃね?
パワーポイント関連のオブジェクトの操作順をあらってみ?

789 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 22:16:51 ]
PowerPoint関連オブジェクトのメソッド操作を部分的にコメント(#if 0〜#endif)してみて、
エラーがでるか調べてみたら?

790 名前:785 mailto:sage [2007/06/06(水) 22:54:14 ]
レスありがとうございます。

再現しやすいように、CAxWindowの増加、処理の簡略化を
行いました。
(CAxWindowが一つですと、作成→削除を10時間近く繰り返さないと発生しないので)
処理の流れとしては、

CAxWindowを9個ほどCreateし、表示。
      ↓
3秒間CAxWindowの親ウィンドウにPeekMessageを繰り返す。
(CAxWindowを表示させる為だけであり、
 プログラムで明示的にメッセージは投げていないです。)
      ↓
CAxWindowをすべてDestroyWindowする。

以上の流れをループで10分〜30分繰り返すと発生します。
そして、CAxWindowに対して行う処理ですが、
CreateとShowWindowとDestroyWindow以外の処理はさせていないです。
パワーポイント関連のオブジェクトはCAxWindowだけです。
IWebBrowser2も取得しておりませんし。

また、HTMLファイルを読み込ませた場合は、エラーメッセージは表示されないんですよね。
ほんとお手上げです・・・。



791 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 00:11:10 ]
SBS_SIZEBOXとかSBS_SIZEGRIPとかって何なんですか!
ググっても日本語の解説が無くて

792 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 00:15:31 ]
ウソ付くな。

793 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 00:18:30 ]
思いっきりみつかるけどな

794 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 00:36:13 ]
いや詳しい解説が無くて
どこ行っても「サイズボックスを指定する」だの「縁のあるサイズボックス」だの
その「サイズボックス」って何なの!って

795 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 00:44:10 ]
>>794
www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&rlz=1T4GGIH_jaJP209JP210&q=%e3%82%b5%e3%82%a4%e3%82%ba%e3%83%9c%e3%83%83%e3%82%af%e3%82%b9

796 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 00:45:38 ]
「サイズボックスとは」でググレ

797 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 00:49:31 ]
もちろんググりましたが
「ウィンドウのサイズボックス」ではなく「スクロールバーのサイズボックス」についての解説が見たいのです!

798 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 01:05:18 ]
実際「スクロールバーのサイズボックスだ」としか答えようがないんだが・・。
SBS_SIZEBOX指定でスクロールバー作ってみ。

799 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 01:09:17 ]
>>798
わかりました。一応作っては見ました。が、使い方が今一わかりません
というか解説(又は画像)が無いことをちょっと不思議に思ってます
これ使われてるソフトもあまり見かけないかなー、と

800 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 01:12:53 ]
ttp://msdn2.microsoft.com/en-us/library/ms651267.aspx
この辺に書いてなきゃ諦めな



801 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 01:20:56 ]
そこは一番最初に見ました
が、だめ!
解説ページは諦めます

802 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 01:24:58 ]
へ〜。こんなの初めて知った。
スクロールバーというより「サイズボックスコントロール」っていうひとつの独立したコントロールみたいな感じだな。

803 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 06:38:05 ]
何が知りたいのかさっぱりわからん
自分の思い通りの解説が無かったら自分で書け

804 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 07:21:27 ]
自分の読解力の無さを人の文章力のせいにするな

805 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 08:37:15 ]
季節の変わり目だからな。最近、香ばしいのが多くて困る。

806 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 08:56:16 ]
お前モナー

807 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 09:22:40 ]
僕バッカー!

808 名前:691 mailto:sage [2007/06/07(木) 14:40:34 ]
HttpOpenRequest()のフラグをいろいろ変えて試してみましたが、
InternetOpen()にINTERNET_FLAG_ASYNCを付けると、
HttpSendRequest()はfalseかつERROR_IO_PENDINGになってしまうようですね。

InternetOpen()にINTERNET_FLAG_ASYNCを付けなかった場合、
HttpSendRequest()がfalseになりERROR_INTERNET_INVALID_CAを無事取得できました。

非同期にてERROR_INTERNET_INVALID_CAを取得できる方法はないでしょうか?
試行錯誤してみましたがまったく手段が見当たりません。
アドバイスお願い致しますm(_ _)m

809 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 14:45:51 ]
非同期でERROR_IO_PENDINGは正常なんだけど

810 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 14:56:43 ]
InternetDestroy()ってなんか恐ろしくて使ったこと無いんですけど、
使って大丈夫ですかね?



811 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 15:10:37 ]
>>808
InternetStatusCallbackの値みてる?

msdn2.microsoft.com/en-US/library/aa383931.aspx

812 名前:691 mailto:sage [2007/06/07(木) 16:45:23 ]
>>811
レスありがとうございます。
正にこれでした!
コールバックの第四パラメータlpvStatusからERROR_INTERNET_INVALID_CAを取得できました。

本当にありがとうございましたm(_ _)m

813 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 18:32:03 ]
ウインドウを常に手前に表示するには
SetWindowPosでHWND_TOPMOSTをあたえればできますが
そのウインドウがHWND_TOPMOSTなのかを取得するにはどうすればいいのでしょうか?

814 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 18:35:14 ]
GetWindowLong

815 名前:813 mailto:age [2007/06/08(金) 00:05:48 ]
どなたか分かる方はいませんでしょうか?

816 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 00:10:33 ]
>>815

>>814

817 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 00:12:27 ]
>>815
馬鹿じゃねぇの
分からない方が珍しい

818 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 00:12:42 ]
>>815
間違ってたらゴメン

拡張ウィンドウスタイル(GWL_EXSTYLE)を取得して、
WS_EX_TOPMOSTを含んでるか調べるんじゃないかな?

819 名前:813 mailto:sage [2007/06/08(金) 00:19:25 ]
難しすぎて分かりません

820 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 00:22:33 ]
LONG exStyle = GetWindowLong(hWnd, GWL_EXSTYLE);
if ((exStyle & WS_EX_TOPMOST) != 0)
{
//TOPMOST
}



821 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 00:30:40 ]
WS_EX_TOPMOSTフラグではなく、お触り禁止フラグが立ちました


822 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 01:00:24 ]
>813
TOP MOSTの指定をしたのが知りたいのか?
今、ウィンドウがTOP MOSTで画面に表示されているのが知りたいのか?

後者なら、FindWindowして Z-Orderを確認するしか手がないよ。


823 名前:813 mailto:sage [2007/06/08(金) 02:53:05 ]
自己解決しました^^

824 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 02:55:49 ]
時間掛かり過ぎ(禿藁)

825 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 08:13:39 ]
どうみても他己解決

826 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 08:15:12 ]
たこちゅうちゅ

827 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 08:25:13 ]
>>823
恩知らずとはお前のことだ。

828 名前:デフォルトの名無しさん [2007/06/08(金) 08:35:34 ]
現在VC6.0でsubst相当のことをやろうとしているのですがDefineDosDeviceを
使えばできそうだというとこまではわかったのですがドライブの解除時に
そのドライブを使用していたら(エクスプローラで開いている等)
エラーメッセージを出すということをしたいのですが
探し方が悪いのかよい方法が見つかりません。

申し訳ありませんがどなたか教えていただけないでしょうか?お願いします。


829 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 09:02:36 ]
>>828
もちつけ
要約すると、メッセージが出したいのか?

830 名前:828 [2007/06/08(金) 09:07:00 ]
>>829
そうです。
DefineDosDeviceで割り当てたドライブを使用していたら
メッセージを出したいです。



831 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 09:19:28 ]
必要に応じてSetErrorMode関数
<TODO>
GetLastError関数でエラーNo
FormatMessage関数でエラーNoから日本語(地域言語)

<TODO>の箇所にDefineDosDevice関数とか、使用ユーザーほにゃほにゃ

832 名前:828 [2007/06/08(金) 09:35:23 ]
831>>
DefineDosDeviceはドライブを使用していてもエラーなしでドライブを解除してしまうみたい
なのでGetLastError関数でのやり方がわかりません。
あとSetErrorMode関数も調べてみたのですがいまいち使い方がわかりません。

どうやったらいいか詳しく教えてください。
お願いします。

833 名前:ららら [2007/06/08(金) 09:40:31 ]
COM インターフェイスのメソッドって、何で const メソッドがないのら?

834 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 09:45:37 ]
const の判断はコンパイラの仕事だから

835 名前:ららら [2007/06/08(金) 09:58:04 ]
どういうことなのら?

836 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 10:01:55 ]
あほすぎなのらw

837 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 10:05:49 ]
>>833
COM は C でも使えないといけないから。

838 名前:ららら [2007/06/08(金) 10:07:33 ]
> COM は C でも使えないといけないから
たとえば、
interface ISome {
 STDMETHOD_(size_t, GetSize)(void) PURE;
};
なら、Cでは
size_t ISome_GetSize(const ISome* some);
と書けるだろ?

839 名前:ららら mailto:sage [2007/06/08(金) 10:08:55 ]
× STDMETHOD_(size_t, GetSize)(void) PURE;
○ STDMETHOD_(size_t, GetSize)(void) const PURE;

840 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 12:01:28 ]
>>832
もうひとつの命題は
「そのドライブが、現在使用中かどうか判断」でおk?



841 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 12:21:30 ]
>>828
質問の仕方が悪いよ。

あなたが知りたいのは、
メッセージの出し方ではなく、
DefineDosDeviceした後に、当該のドライブが使用中だったのか否か判別する方法
もしくは、
DefineDosDeviceする前に、当該のドライブが使用中なのか否か判別する方法
なんでしょ?

ならば、そう書いたほうがいい。

>>829が言いたいのは、そういうことなんだと思うよ。


842 名前:828 [2007/06/08(金) 13:15:24 ]
質問の仕方が悪く申し訳ありません。
>>840さん、>>841さんの言うとおり知りたいのは
>DefineDosDeviceする前に、当該のドライブが使用中なのか否か判別する方法
です。

書き込み自体不慣れなもので迷惑をかけているとは思いますが
ご教授よろしくお願いします。

843 名前:828 [2007/06/08(金) 13:27:20 ]
知りたいことがまだわかりにくい気がするので
もう一度書かせてもらいます。

知りたいことは
DefineDosDeviceを用いて割り当てたドライブを
再びDefineDosDeviceを用いて解除する時に、
当該のドライブが使用中なのか否か判別する方法
です。

よろしくお願いします。


844 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 14:21:27 ]
>>838
C++ だと

STDMETHOD_(size_t, GetSize)(void) PURE;
STDMETHOD_(size_t, GetSize)(void) const PURE;

の2つを宣言できるけど、
C だとオーバーロードがないからこういう事ができない。

というあたりを意識してるんじゃないかな、と思ってるんだけど、
まあ、正直なところこれが理由かどうかは分からん。

845 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 14:30:34 ]
VBにconstなメソッドの概念がないからだと思う
まあCOMにconstがないからVBにconstなメソッドを入れなかったという順なのかもしれないけど

846 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 14:31:58 ]
まぁ、COM に限らず、C++ の virtual 関数は const にすべきではないように思う。
メンバ関数が const かどうかは実装に依存して決定されるべきことだが、
virtual メンバ関数がどのような実装になるかは派生クラスに依存するわけだから、
virtual メンバ関数の宣言時には const かどうかを決定できないことになる。
したがって、const メンバ関数と virtual メンバ関数は共存できないように思う。

847 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 14:32:17 ]
っつかCOM自体はOS・言語と独立。

848 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 14:36:15 ]
メンバ関数がconstにすべきかどうかは機能仕様によるだろ

実装に依存するならmutableの存在意義がない

849 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 14:37:03 ]
>>843
DeviceIoControlあたりなんかなー

誰か、ドライブ系のコントロールコマンドしりませんか?

850 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 14:42:43 ]
>>848
mutable は本来使ってはいけないもの。存在しないほうがいい。friend と同じく。



851 名前:ららら [2007/06/08(金) 14:47:20 ]
あのー、もう1つ質問なのら。
CComPtr を使うとインターフェイスの解放し忘れがない
というのは本当なのか? なのら。

たとえば、
ISome* GetSome(void);
という関数があって、これを CComPtr で受け取ろうとする場合、
CComPtr<ISome> spSome = GetSome(); や
CComPtr<ISome> spSome( GetSome() );
とすると、オブジェクトは解放されなくなるらろ?

でもこういうコードは自然に書いてしまいそうだから、コワイのらー。

GetSome 関数からも CComPtr を返せって?
でもライブラリとして与えられている関数だから、
自分ではどうにもならないのらー。

852 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 14:48:48 ]
まず日本語勉強してこい

853 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 14:50:58 ]
まことちゃん?

854 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 14:58:30 ]
静岡の東部人じゃないのか
>>851 そうら?

855 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 15:00:32 ]
山梨出身の友達もそんなしゃべり方するな。

856 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 15:05:27 ]
山梨でも、あんなしゃべり方しねーよw
853の言う通り、まことちゃんだろ。

しかし、まことちゃんを知っている奴は、確実にオッサン

857 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 15:24:31 ]
>>838
ISomeを使う側なら、constがあってもなくても同じじゃん。

858 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 15:33:06 ]
>>843
安全確実な方法はないと思う。

DefineDosDeviceのフラグに、
使用中ならばREMOVEしない
というのがないということは、
OS自体が実現方法を持っていないのだと思う。

副作用や誤判定が生じても構わないなら、
substしたディレクトリ以下にある、すべてのファイルとディレクトリに対して、
共有しないモードでCreateFileを試みて、失敗すれば誰かが使っている、と。

副作用は、CreateFileを試みて成功してしまった場合、
すぐにCloseHandleしなければならないが、その瞬間を狙って、
他のプロセスがCreateFileすると失敗してしまうこと。

誤判定は、仮想ドライブだけでなく、元のパスを使っていても、
引っかかってしまうこと。



859 名前:ららら mailto:sage [2007/06/08(金) 15:33:08 ]
>>857
何ゆーとんのら。使う側が C++ なら const であるかどうかは重要ら。
たとえば、ISome を包含するクラス CHoge を実装する場合、
ISome が const 型システムをもたないが故に、
CHoge も const 型システムを無視しなければならず、
この破壊の連鎖はどこまでも続いて行くらー。

860 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 15:33:48 ]
>>850
本来使ってはいけないものだが、
使わざるを得ない場合ってのもあるんだぜ?



861 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 15:36:24 ]
>>851
そういうコードを自然に書くくせを直すべき。Attach もあるし。

ISome* tmp = GetSome();
CComPtr<ISome> spSome = tmp;
// 以降でも tmp->Release() はしない

これでリークしないと思える筈がないわけで、1行に書いても同じこと。
でもまぁ MFC みたいに ctor で AddRef しないオプションも、あれば便利だったかもね。

862 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 15:36:25 ]
>>846
おいおい。本気で言ってるのか?

863 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 15:36:42 ]
>>860
それは分かるが、const_cast で代用できる。

864 名前:846 [2007/06/08(金) 15:38:15 ]
>>862
本気だが?


865 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 15:39:56 ]
「本気」と書いて「マジ」と読む

866 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 15:41:02 ]
>>859
単にCOMのシンタックス上非 const になってるだけで
セマンティックス的には const な動作ならば、
適宜 const_cast 使えばいいと思うけど。
そのための const_cast でそ。

盲目的に「変更するから非 const」とか考えてると、
AddRef ひとつ呼べやしない。

867 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 15:42:16 ]
>>863
mutable だと宣言する事と、
const_cast を使う事は、
表している意味合いとか読みやすさとかが変わってくるな。

どちらにしろ、使わざるを得ない状況自体が稀だが・・・。

868 名前:ららら mailto:sage [2007/06/08(金) 15:47:11 ]
>>866
結論!
COM は C++ と相性が悪い!
のらー。

>> 845
> VBにconstなメソッドの概念がないからだと思う
COM と IDispatch を混同してはいかんのらー。
COM は VB のためのものではないのらー。

869 名前:828 [2007/06/08(金) 16:13:14 ]
>>849,>>858
ありがとうございました。
実現が難しそうだということがわかりましたので
もう少し自分で考えた後、突破口が見つからなければあきらめたいと思います。



870 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 16:38:43 ]
>>869
Windowsって、ファイルを開いたときに渡したパスを、覚えてないんだよね。

部屋の中に人がいるかどうかしか管理してなくて、
どの入り口から入ってきたのかは、ノーケアなんだ。

ファイルのハンドルから、ファイル名を知りたくて色々調べたけど、解決方法はなかった。
裏APIを使えば、オブジェクトの名前はわかるようなんだけど、ファイル名とは違うんだよね。

いっそのこと全プロセスに対してCreateProcessをフックしてしまい、
ハンドルに対するCreateFile時のファイル名を管理してしまおうかとも思ったけど、
そんな行儀の悪いことをするのはダメだよねぇ、ってことで諦めた。



871 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 16:56:05 ]
870のいう通りなら、
当該のドライブが使用中に、その解除作業やっても問題ないんじゃないか?
だから「ドライブを使用していてもエラーなしでドライブを解除してしまう」のでは?

これは想像だけど、ファイルを開くときにSubstされたドライブの場合、
正しいディスクのパスに変換してからファイルを開く、ぐらいの処理やっててもおかしくないと思うんだがな。

872 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 17:21:17 ]
>>871
たぶんフィルタドライバを使って実現されていると思われ。



873 名前:869 [2007/06/08(金) 18:32:09 ]
>>870
>>871
>>872
ありがとうございます。参考になりました

874 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 23:39:23 ]
すいません、質問です。

WinXPにてsend,recvを使ってバイナリデータを送受信したいのですが、
バッファの大きさの上限(要するに、一回のsendや一回のrecvで送受信できるデータ量の上限)って、
何バイトでしょうか??


また、もし上限が無いのでしたら、
例えば1GByte程のデータを送受信する場合、
バッファサイズはどのぐらいが効率的なのでしょうか??

ご教授御願いいたしますm(。−_−。)m

875 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 23:47:22 ]
>>874
WinScokのヘルプにバッファの設定について書いてあるんだから、
最低限確認してからにしろよ。

876 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 00:38:16 ]
>>874
なんつーか、そもそもTCP/IPはバッファを大きくしてもそれだけの大きさをそのまま扱えるわけじゃないことも
ご存知ないような。入門サイトでじっくりお勉強することをお勧めするですよ。

877 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 01:04:06 ]
>>874
マジレスしたらここに聞きにくる以前の問題すぎて笑った

878 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 01:55:50 ]
質問です。
CreateCaretでシステムキャレット(長方形型)を使わせていただいていますが
ウィンドウのステータスバーの上に被さって表示されてしまいます。
また、DrawEdgeで描いたウィンドウ内枠も上書きしてしまいます。
システムにお借りしたキャレットは描画のクリッピングなどはできないのでしょうか
お聞かせください。

879 名前:878 mailto:sage [2007/06/09(土) 01:58:46 ]
要するにエディタ等のウィンドウをスクロールした際の
キャレットが隠れるように見える挙動を実現したいのです。

880 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 11:19:01 ]
ウィンドウをスクロールして、
キャレットが隠れなければならないタイミングで、
HideCaret を呼べばいいのでは。



881 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 12:17:40 ]
【政治】民主党、無年金障害者問題で法案提出 在日外国人らも救済

民主党は9日、国民年金の対象外か、任意加入の時期に未加入だったため、
障害基礎年金をもらえない無年金障害者すべてに
「障害福祉年金」を支給する法案を衆院に提出した。
今国会に与党が提出を予定している案では、
救済対象を元学生と専業主婦に限っているが、
民主党案は在日外国人や在外邦人も救済する手厚い内容だ。

給付額は、与党案では障害基礎年金の約6割にあたる月4万〜5万円だが、
民主党案は障害基礎年金と同額としている。

(06/09)朝日新聞
www.asahi.com/money/pension/news/TKY200406090286.html

882 名前:878 mailto:sage [2007/06/09(土) 16:11:21 ]
>>880
手持ちの例で言えば↓このバイナリエディタStirlingのように
ttp://www.vector.co.jp/soft/win95/util/se079072.html
ウィンドウサイズを変更してキャレット上をステータスバーが覆うと
欠けたキャレットが点滅し続ける、このような挙動はどのように実現されているのか?ということです。

883 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 16:16:37 ]
テキストエディタ(バイナリもそうだけど)系の奴って、
キャレットは自前描画するもんなんじゃなかったっけ?
WM_TIMERつかまえて点滅、とか

884 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 16:20:01 ]
君のハートを捕まえて

885 名前:878 mailto:sage [2007/06/09(土) 16:27:03 ]
>>883
そうなんですか。
同じくバイナリエディタの例で申し訳ないのですが↓のBZなんかは
ttp://www.vector.co.jp/soft/win95/util/se032859.html
>>882のようなステータスバーがキャレット上を覆う時は
シンプルにも完全にキャレットを非表示にする隠す挙動になっています。

886 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 16:41:26 ]
?どっちも同じじゃない?

887 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 16:43:33 ]
>>885
ああごめんごめん、全部がそうってわけじゃないよ

でも、あれ。俺はスターリンもBZも持ってんだけど、
試してみたらどっちも、キャレット一部が隠れてもちゃんと残りの一部が点滅してるな・・
バージョンが違うのかな?

888 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 16:46:58 ]
バージョンが違いますね

889 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 16:50:51 ]
そうですか、すんませんです

890 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 18:57:44 ]
>>878
キャレットを所持するウィンドウとステータスバーの領域が重なってるんじゃないか?
StirlingとBZもCreateCaretを使っている



891 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 20:05:43 ]
フォルダの上で中央クリックしたら
フォルダを新しいウインドウで開く
ってのをできるソフトないかな?

892 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 20:07:43 ]
ソフトウェア板に行ってね

893 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 20:16:25 ]
>>891
それぐらい自分で作れカス

894 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 20:48:42 ]
実行ファイルのアイコンについてですが、WindowsXPのアイコンの表示方法には色々あると思います。
縮小版、並べて表示、一覧・・・
これらに対応して、違ったサイズのアイコンを表示したいのですが、どのようにすればいいのでしょうか?

895 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 20:52:26 ]
アイコンは各種サイズを格納してる?

896 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 21:00:03 ]
一応48*48と32*32のアイコンをリソースに取り込んでます。
一番数字が若いやつが実行ファイルのアイコンになるっぽいので、48*48が標準で表示されています。
まぁ、どういう表示にしても48*48が表示されるのですが、これをなんとか・・・

897 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 21:01:20 ]
指定しろよ

898 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 21:03:52 ]
>>896
その2つが別のアイコンとして扱われているのでは?
Windowsでは1つのアイコンファイルやリソースが複数の大きさ・色数のアイコンを保持できる

899 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 21:07:23 ]
どうやって指定するのでしょうか・・・(汗
VS2005を使用しているのですが、リソースビューでは特にいじる場所も見当たらなさそうな・・・

900 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 21:09:38 ]
>>898
そうなんですか。ということは、今は2つのicoファイルが独立したリソースになってるって事ですね。
ちょっと色々試してみます。



901 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 21:11:04 ]
>>899
なんだ、VSかい。EEじゃないよね?
アイコンエディットしてるときに、いろいろメニューさがしてみそ

902 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 21:16:08 ]
アイコンは、専用のソフトで一つの.icoにまとめてから、それを
リソースとしてそのまま取り込むのが楽。

アイコンをまとめるソフトはフリーのやつでもわんさかあるから適当に選んで使うがよろし
ちなみに俺は@iconってのを使ってる

903 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 21:17:14 ]
@icon変換 とかで(ものはなんでもいいけど)ひとつのicoファイルが複数の
サイズの違う画像を持つようするといいんじゃないかな

904 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 21:19:13 ]
>>901
Visual Studio 2005です。リソースの追加>インポートを2回繰り返して2つのicoファイルを読み込んだのですが、
それではいけないんですよね・・・。色々メニュー見てみたり、右クリックしてみたりしたのですが
いまいちどこでそういう変更が出来るのかまだわからないです・・・orz

905 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 21:19:56 ]
>>902-903
ちょっと@iconを落としてきます!

906 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 21:25:27 ]
@iconでマルチ画像保存したら出来ましたああああ;;
ありがとうございます!

というか、icoファイルって意外と高機能なんですね・・・
jpgとかgifの感覚で一つのファイルは一つの画像だと思ってました

907 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 21:34:07 ]
なんでgifが一つなんだ?

908 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 21:37:19 ]
脳内

909 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 21:46:46 ]
あ、gifは全然一つじゃないですね。アニメーションgifとか昔自分作ってたのに・・・orz

910 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 22:55:37 ]
>>904
アイコンのエディット画面のイメージメニューだよ



911 名前:878 mailto:sage [2007/06/09(土) 22:58:18 ]
>>887
BZはどうやら1行目だけは非表示にならずキャレットが点滅表示されるようです。

>>890
つまり、クライアント領域は別の子ウィンドウを張り付けるべきですかね?
今まで親ウィンドウに直書き描画しておりましたが・・・。

912 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 00:02:25 ]
ここで聞くのが正しいか分からないけど、
VC++2005を使って「猫でも分かるプログラミング」を見て
Win32APIの勉強をしているところなのですが、
プログラムに組み込みたいビットマップ画像や音楽ファイルって
生のまま(?)配布するソフトに一緒に入れておくしかないですか?



913 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 00:12:13 ]
自分の好きなようにしろよ。

914 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 00:15:20 ]
>>913
自分の好きなようというか、
そのやり方しか知らなくて他に選択肢が無いから、
それ以外にやり方があるなら教えて下さい、という旨です。

915 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 00:16:09 ]
暗号化するなり、
1つのファイルにまとめるなり、
圧縮するなり、
リソースとして実行ファイルに埋め込むなり

好きにするなりよ

916 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 00:28:03 ]
>>914
やり方なんていくらでもある
その辺のPCゲームとか見れば、いくつか参考例もあるだろ?
あと…あんまりWin32APIには関係ないかもな

俺はzlib使って固めて、独自ファイルヘッダくっつけて、
ついでに軽い暗号化かけて、チェック用のハッシュも持たせてやってる
ファイル対象の圧縮・展開は専用ツール作って、
exeから使うときは展開ツールで利用してるクラスを使って簡単展開

917 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 00:33:52 ]
この手の質問をする奴って、やり方は分かっているのに、
思いつく方法が面倒くさくて逃げ出したいから、
他人に何とかしてもらおうとしているだけなんだよね。

918 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 00:55:22 ]
>>915
色々方法を教えて頂きありがとうございます、とても参考になりました。
まだレベルが低くて暗号化云々がアレなのでリソースとして
埋め込むという方法のやり方を調べてみます。

>>916
PC買って間もなくてプログラミング以外でほとんど使ったことが無かったので
一般的にどうするものなのか分からなかったです。
スレ違い&常識的なことを聞いていたらすいませんでした。
教えて頂いた方法はまだ技術的に追いつかないのでメモしておいて後で参考にさせて頂きます。
詳しく教えて頂きありがとうございました。

>>917
いえ、「猫でも〜」を挙げているように、まだ習い初めなのでガチでやり方が分かりませんでした。
ただ月曜が友人の誕生日で作ったプログラムを送りたくて
日程的に詰まっていたため自分で色々調べる時間が足りず、
ここで他人に何とかしてもらおうと思ったのは事実なので、
教えて君と不快に思われたらすいませんでした。

919 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 01:05:25 ]
誕生日プレゼントなら、happy99だよな

ttp://www.geocities.jp/hiko_bae/happy99.html


920 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 15:29:27 ]
すみません。質問です。
GetOpenFileNameで既存ファイルのフルパス文字列を受け取った場合、
ユーザーがキータイプしている可能性があるのでこれを統一化したいのですが良い方法はないでしょうか?
フルパス文字列をキーとして内部保存し新たにOpenされた場合は相応の処理をしたいのです。
(ちなみに実際にファイル操作をするのはLinkした外部ライブラリです。)

MBCS向けコーディングしていますが単純に_mbsnicmpをかませば大丈夫でしょうか?
パスの命名規則があいまいで確信が持てません。。。



921 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 15:37:11 ]
日本語でおk


922 名前:920 mailto:sage [2007/06/10(日) 16:04:07 ]
ああ、説明端折りすぎで意味不明でしたか。すみません
例えば、Abc.bmp、ABC.BMP、aBc.bmpなどは同じファイル(もっと長いファイル名でも)なので
GetOpenFileNameで受け取ったパスをそのまま使ってキー探索するのは危険かと思いました
で、Windowsシステムが認識しているパス名に統一する方法があればとお訊きした訳です

受け取ったパスでそのままSearchPathしてみたところ、どういう訳か入力した値そのものだったり
エクスプローラ上のファイル名に置き換えられたり動作不定です(win2000)

923 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 16:07:30 ]
> Abc.bmp、ABC.BMP、aBc.bmpなどは同じファイル
ファイルシステムによっては違うファイルなのでは?

924 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 16:09:23 ]
あなたは きょうしには むいていません。

925 名前:920 mailto:sage [2007/06/10(日) 16:23:49 ]
>>923
え゜、、そうなんですか?
少なくともNTFS上では同じファイルとして扱われてますがFATやFAT32だと違うんでしょうか

926 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 16:38:46 ]
なにを悩んでるのかがはっきりしないな。
特に
>GetOpenFileNameで受け取ったパスをそのまま使ってキー探索するのは危険かと思いました
の意味が分からない。
OPENFILENAME構造体のフラグで無効な文字や、無効なパスははじけるはず。

「危険」って何が「危険」なの?

927 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 16:40:14 ]
NTFSもVATもFAT32も大文字と小文字を区別する。
大文字小文字区別しないのは昔のファイル名が8.3のFATじゃなかったっけ?

928 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 16:49:39 ]
ファイルシステムとAPIとシェルの各層を区別しろや

929 名前:926 mailto:sage [2007/06/10(日) 16:52:53 ]
>>920
すみません。よく読んだらちゃんとわかりました。
自分の読解力不足を嘆くばかりです。

www.ipa.go.jp/security/awareness/vendor/programming/b08_01_main.html
ここを読んでおくとさらに悩めると思います。

930 名前:920 mailto:sage [2007/06/10(日) 17:08:36 ]
説明下手ですいません。かなりアホなこと訊いている気がしてきました

>>926
既にOpen済みかそうでないかを判定する手段として
Open済みのファイルのフルパスを保存し、一致検索しようと考ました
新たにOpenされたファイルなら前処理を行った後にライブラリにOpen要求を出します
GetOpenFileNameでは存在するValidなパスしか受け付けないように設定しています

>>927
不安になったので今デスクトップ上で上記3ファイルを新規作成してみましたが
最初の1個以外は同じファイル名だと怒られます(XP、NTFS)




931 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 17:17:52 ]
>>930
> 不安になったので今デスクトップ上で上記3ファイルを新規作成してみましたが
> 最初の1個以外は同じファイル名だと怒られます(XP、NTFS)
それはWindowsのファイルシステムドライバが過去の互換性に縛られるせい。

932 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 17:19:39 ]
GetVolumeInformation
ttp://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpfileio/html/_win32_getvolumeinformation.asp
FS_CASE_IS_PRESERVED
ファイルシステムは、ディスクにファイル名を記録するときに、大文字と小文字を区別して保存します。
FS_CASE_SENSITIVE
ファイルシステムは、ファイル名の大文字と小文字の区別をサポートしています。

933 名前:920 mailto:sage [2007/06/10(日) 17:32:51 ]
皆様、ありがとうございます
なるほど。基本的な理解が足りていなかったようです。
具体的な解決法が未だ見えませんが教えてもらった情報を元に
これから色々テストしてきます

934 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 17:36:45 ]
がんばれ

935 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 17:48:12 ]
>>920
与えられたパスをFindFirstFileに渡す。
これで大文字/小文字も含めて正確なパスが得られるよ。

俺はGetModuleFileNameで得られたパス名を修正するのに使っている。

936 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 18:15:31 ]
がんばるな

937 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 18:25:55 ]
CorrectFileNameEx

938 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 19:11:23 ]
>>937
くわしく。

939 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 19:15:53 ]
CorrectFileNameEx に一致するページは見つかりませんでした。

940 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 19:35:05 ]
次スレたてられなかった



941 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 20:09:01 ]
>>940
>980 くらいでちょうどよい。まだ、早すぎ。

942 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 20:17:01 ]
>>980に期待

943 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 20:27:30 ]
GetCanonicalFileName

944 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 21:32:03 ]
>>943
詳しく

945 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 21:38:41 ]
>>944
詳しく

946 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 21:43:09 ]
>>945
悔しく

947 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 21:54:28 ]
>>943
つまんね

948 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 22:22:49 ]
>>947
ねんまつ

949 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 23:08:34 ]
ファイルハンドルを開きっぱなしでそのファイルを削除しようとすると、
「ファイルまたはフォルダの削除エラー」がでます。
ファイルが削除されるタイミングを知ることができれば、
ファイルハンドルを解放しようと思います。
タイミングを知る方法を教えてください。

950 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 23:12:43 ]
初めから削除権与えたら駄目なん?



951 名前:949 mailto:sage [2007/06/10(日) 23:27:14 ]
>> 950
ありがとうございます。
それで行けそうです。
めちゃ助かりました!

952 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 23:28:25 ]
>>949
試したことはないけど便宜的ロックで何とかならない?
SMBとかで使ってる奴。

953 名前:デフォルトの名無しさん mailto:sage [2007/06/11(月) 06:14:19 ]
スーパーマリオブラザーズで使われているのはロックではありません。

954 名前:デフォルトの名無しさん mailto:sage [2007/06/11(月) 08:40:08 ]
DPMSで画面の電源を切るにはどうするですか?

955 名前:デフォルトの名無しさん mailto:sage [2007/06/11(月) 23:05:52 ]
>>954
KernelIoControlでIOCTL_HAL_DDIとかじゃね?

956 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 00:02:21 ]
ochinchin.h を omanko.cpp に include したのに

957 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 00:15:29 ]
includeはinsertじゃないよバーカ

958 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 00:26:02 ]
僕バ(略

959 名前:デフォルトの名無しさん [2007/06/12(火) 09:33:04 ]
スレ違いかと思いますが、他に適当なスレが見当たらなかったので
ここでお伺いさせてください。

Windows2000で
Shell_NotifyIcon()でシステムトレイに表示できるアイコンは
16色らしいのですが、この16色は16種類の色なのでしょうか?
それとも決められた16色なのでしょうか?

960 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 14:04:17 ]
2kまでシステムカラー16色限定。
XP以後フルカラー+アルファが使えるようになった。

でもMEで256色アイコンが色化け無しでトレイにあるのを見たことあるんだよな・・・



961 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 14:06:32 ]
IEというか Comctrl32 のバージョン依存じゃね?

962 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 14:15:44 ]
ttp://msdn2.microsoft.com/en-us/library/ms538121.aspx
hIcon
 Windows 95, Windows 98, and Microsoft Windows NT 4.0 support icons of up to 4 bits per pixel (BPP).
Windows Millennium Edition (Windows Me) and Windows 2000 support icons of a color depth up to the current display mode.
Windows XP supports icons of up to 32 BPP.

963 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 14:57:49 ]
そのアイコンの話じゃねーんだよバーヤ

964 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 15:02:19 ]
そのアイコンの話なーんだよバーカ

965 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 15:40:27 ]
扱うのはそのアイコンだが、今回の話はそれとは違う部分の制限だろ

966 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 16:05:06 ]
いや、>>962の説明で正しい。

967 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 16:21:31 ]
元の質問者は16色と言ってるんだけど、
つまりこれは16色の環境で実行したってことなの?

968 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 16:32:16 ]
>>967
>16色らしいのですが
っつーくらいだから、試してはいないとふんだ。

969 名前:デフォルトの名無しさん [2007/06/12(火) 16:51:50 ]
すいません。元の質問者です。

試しました。
オレンジベースのグラデーションで16色アイコンをShell_NotifyIcon()で
表示したのですが、XP上ではイメージどおりに表示されたのですが
2Kに持っていったらグレースケール色になってしまったのです。
ググったら2Kは16色だよ。との情報を得ました。

そしてその16色とは固定の16色なのか16種類なのかとの疑問となり、
グレーになる原因を求めてこのスレにお邪魔させていただきました。
>>962さんの情報では
2Kはデスクトップのカラービットに依存すると解釈したのですが
であれば、32bitに設定していますので普通に表示されるはずだと
思うのですが・・・また解からなくなってしまいました。

970 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 17:03:03 ]
普通にShell_NotifyIconだけだと16色にしかならないから
XP未満で256色なのはタスクトレイのウィンドウをフックしてイメージリストを書き換えてるんだよ。
exploer.exeにパッチとか常駐ソフトで変更てのもあるが汎用性がない。



971 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 17:06:47 ]
グレースケールだとシステム標準じゃないような、、、って
白、明灰、暗灰、黒の4段階ならシステム16色だな。

972 名前:デフォルトの名無しさん [2007/06/12(火) 17:13:22 ]
元の質問者です。

すると
Shell_NotifyIcon()だけを素直に使った場合、
>>960のシステムカラー16色という制限を受けるって
ことですね。

973 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 17:33:38 ]
16x16ドット16色で見やすいアイコンを作るのもプログラマの腕の見せ所です

974 名前:デフォルトの名無しさん [2007/06/12(火) 17:42:31 ]
なるほどシステムカラーを組み合わせて
遠目からオレンジっぽく見えるようにします。

それにしても>>962さんの紹介してくれたMSの説明は
フックしてイメージリストを書き換えるのが前提の
説明なのでしょうか。
英語が苦手なので全部を解読するのは厳しいですが、
それもプログラマの腕の見せ所ですものね。

975 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 17:48:12 ]
流れとは関係ないかも知れないが、
うちの win98 では、トレイ上ではないが、8ビットカラーの 32x32, 16x16 の
アイコンが表示されている。写真から xpadie かなんかで減色して作ったもの。

976 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 17:51:12 ]
休止状態、スタンバイ、スリープから復帰したことを知ることって出来ないですか?

977 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 17:54:48 ]
はい。

978 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 18:03:40 ]
>>976
ttp://www.winapi-database.com/Message/WM/WM_POWERBROADCAST.html

979 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 18:06:19 ]
>>976
出来ない が true か → いいえ
出来ない が false か → はい


980 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 18:07:43 ]
>>976
質問の仕方が悪い。

休止状態、スタンバイ、スリープから復帰したことを知る方法がありますか。
あれば、その方法を教えてください。

とか言えばいいのよ。

本当に知りたいことが、方法の有無だけで、
あるなら自分で調べるよ、という人もいるからね。



981 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 18:14:25 ]
>>978
thx
>>980
行間が読めない馬鹿は死ねばいいと思います

982 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 18:24:12 ]
>>978は余計なことをしたな

983 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 18:26:53 ]
一行だから行間はない

984 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 18:27:46 ]
>>980の脳が腐ってるだけ。

985 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 18:45:00 ]
>976が赤の他人に甘えてるだけ。
行間読むなんて、どこまでできても結局読んだ奴の推測にすぎない。

986 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 18:46:52 ]
もう>>983の勝ちでいいよ

987 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 18:46:56 ]
お前らそんなんじゃコンビニにすら行けないな。

988 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 18:49:13 ]
>>985がアホ過ぎるwよくそんなんで生活出来てるなwwwwwww

989 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 18:51:59 ]
質問の回答を聞きに来たのか
煽りに来たのか
どっちだ

990 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 18:53:37 ]
あんな質問してる方がアホ過ぎだ



991 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 18:54:40 ]
一連のレスで何が一番ひどいかって言ったら、>>981だろう。
こういうやつにまともなレスをしてはいけない。
しかも自演までしてるし。

992 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 18:56:29 ]
「ぼくのしつもんに すなおに こたえないやつは わるいやつ」

993 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 18:56:49 ]
じゃあ一番のボケは>>985ってことで

994 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 19:12:25 ]
>>988
対面リアルタイムでのやりとりは、この文字だけのやりとりとは情報量が格段に違うんだよ。

995 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 19:15:25 ]
>>980くらいでカチンとくるやつは
この板でちゃんとした回答はもらえないだろうなぁ

996 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 19:19:16 ]
社会でも駄目だろ
文章力も無いのに行間読めとか言う奴は

997 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 19:22:12 ]
課長、行間読んでます?

998 名前:デフォルトの名無しさん [2007/06/12(火) 19:28:04 ]
>>981
お前が死ねば?


999 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 19:35:08 ]
ぬるぽ

1000 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 19:37:04 ]
行間はここに↓



1001 名前:1001 [Over 1000 Thread]
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<234KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef