Win32API質問箱 Build53

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんやお姉さんたちが答えてくれるかも。

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

■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。英語版(http://msdn.microsoft.com/library/)の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで
2デフォルトの名無しさん:2007/05/11(金) 20:28:47
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
5デフォルトの名無しさん:2007/05/11(金) 20:31:09
MSDN日本語版は誤訳があったり、一部欠けていたりするなど不完全なため、英語版推奨。
http://msdn.microsoft.com/library/
http://msdn2.microsoft.com/en-us/library/

MSDN ライブラリ 2006年12月版
http://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
http://www.microsoft.com/downloads/details.aspx?FamilyID=c2b1e300-f358-4523-b479-f53d234cdccf&DisplayLang=en
6デフォルトの名無しさん:2007/05/11(金) 20:36:07
>>1

>>前スレ997
Delphiスレで聞けよ
API関係無ぇじゃねぇか
とりあえず、整合性が取れてないのはおまいのコーディングが間違ってる可能性が99.99%
7デフォルトの名無しさん:2007/05/11(金) 20:45:18
前スレ>>997
Spy++でダイアログの親がTfrmMainってのはどこをどう見て決定したん?
Delphiのフォームは全てトップのアプリケーションウィンドウであるTApplicationに所有されてるはずなんだが
8デフォルトの名無しさん:2007/05/11(金) 20:48:04
見た目だろw
9デフォルトの名無しさん:2007/05/11(金) 20:57:52
毎年のことだが、この時期はアホな質問が多いですな
10デフォルトの名無しさん:2007/05/11(金) 21:05:14
僕バッカー!
11デフォルトの名無しさん:2007/05/11(金) 21:14:27
>>10
そうでもないよ。
12デフォルトの名無しさん:2007/05/11(金) 21:53:41
>>10
おい、忘れ物だぞ
っデ
13デフォルトの名無しさん:2007/05/11(金) 22:08:10
デ僕バッカー!
14デフォルトの名無しさん:2007/05/11(金) 22:09:26
僕バッカー!っデ
15デフォルトの名無しさん:2007/05/11(金) 22:13:06
何人居るんだよww
16デフォルトの名無しさん: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デフォルトの名無しさん:2007/05/11(金) 23:23:05
ふふふ、決算賞与で40マソ出た俺は勝組。
来月末はその倍ww
19デフォルトの名無しさん:2007/05/11(金) 23:26:22
>>18
スレ違い・・・・クソー羨ましい
20デフォルトの名無しさん:2007/05/11(金) 23:40:14
自給3000円のバイト見っけた俺も勝ち組
21デフォルトの名無しさん: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: [email protected].
とか書いてる場所が残ってた。
http://msdn2.microsoft.com/en-us/library/aa480152.aspx
22デフォルトの名無しさん:2007/05/12(土) 06:30:14
GINAってなんぞや
23デフォルトの名無しさん:2007/05/12(土) 06:35:01
このスレってインテリジェンス検索エンジンなのか?
24デフォルトの名無しさん:2007/05/12(土) 16:40:58
Graphical Identification and Authentication
ってことはGInAが本来の綴りなのか。
25デフォルトの名無しさん:2007/05/12(土) 16:51:08
意味不明
26デフォルトの名無しさん:2007/05/12(土) 18:46:54
>>25
誰に言ってんの?
27デフォルトの名無しさん:2007/05/12(土) 20:12:21
お前
28デフォルトの名無しさん:2007/05/12(土) 20:35:48
タスクトレイに登録されてるアイコン一覧を取得するにはどのようなことをすればいいのでしょうか。
できれば、explorerのプロセスが動いてないときでも取得できるように。
29デフォルトの名無しさん:2007/05/12(土) 20:37:40
FindWindow
30デフォルトの名無しさん:2007/05/12(土) 20:39:42
GINAはvistaで廃止だっけ
31デフォルトの名無しさん:2007/05/12(土) 20:41:22
廃止。前スレで既出
32デフォルトの名無しさん:2007/05/12(土) 20:59:03
>>28
explorerが動いてなきゃアイコンもネェヨ
33デフォルトの名無しさん:2007/05/12(土) 23:20:53
VISTAで生ソケット扱うのってどうすればいいの?
34デフォルトの名無しさん:2007/05/13(日) 00:21:13
>>28
理論的には、explorerより先に起動して、
自分がタスクトレイの振りをしてAPIフックかなんかしてアイコン登録を受け付け、
それを本物のexplorerに登録するような挙動をすれば、
自身が稼働中は全てのアイコン操作を把握できるかもな。
35デフォルトの名無しさん: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デフォルトの名無しさん:2007/05/13(日) 15:24:00
"\\\\testgroup\\testserver\\Backup\\test.txt"
38デフォルトの名無しさん:2007/05/13(日) 15:34:51
>>36
要は、そんなネットワークファイルネェヨって怒られてんだよ
39デフォルトの名無しさん:2007/05/13(日) 15:38:17
>>37-38
エクスプローラでそのネットワークフォルダにtext.txtをコピーしたんですが
書き方的には↓であっていますよね?
\\グループ名\コンピュータ名\フォルダ名\ファイル名
40デフォルトの名無しさん:2007/05/13(日) 15:40:22
\\コンピュータ名\フォルダ名\ファイル名
41デフォルトの名無しさん:2007/05/13(日) 15:41:26
>>39
グループ名はいらねんじゃねーか?
42デフォルトの名無しさん:2007/05/13(日) 15:45:18
>>40-41
ありがとうございます。
コンピュータ名から書けば正常にコピーできました。
43デフォルトの名無しさん:2007/05/13(日) 16:19:18
>>35
WinMainの第4引数がSW_SHOWMAXIMIZEDだったら
SW_SHOWNORMALに置き換える。
44デフォルトの名無しさん:2007/05/13(日) 16:45:03
>>42
マイネットワークから目的のコンピュータの目的のファイルが有るフォルダ開いてみりゃパスなんて一目瞭然なんだが
なぜそれを間違えれるのか・・・
45デフォルトの名無しさん:2007/05/13(日) 16:58:50
EnumDisplayDevicesなのですが、
日本語版と英語版で引数の型が違います。。。
http://msdn.microsoft.com/library/ja/jpgdi/html/_win32_enumdisplaydevices.asp
http://msdn2.microsoft.com/en-us/library/ms533226.aspx

いったいどちらを信用すればいいのでしょうか?
46デフォルトの名無しさん:2007/05/13(日) 16:59:49
ヘッダ
47デフォルトの名無しさん:2007/05/13(日) 17:08:23
>>45
日本語版の説明の「現在使われていません」の現在は2007年じゃないぞ。
たぶん2000年頃の話。
48デフォルトの名無しさん:2007/05/13(日) 17:18:27
日本語版ってメンテされてないの?
49デフォルトの名無しさん:2007/05/13(日) 17:21:29
こういう資料に日付も入れないで「現在」って書くのは微妙だな。
Wikipediaなんかもものすごく時代遅れな記述が堂々と「現在」とか書かれてたりするし。
見つけ次第直してるけど
50デフォルトの名無しさん:2007/05/13(日) 17:55:15
\\?\c:\hoge\hoge

\\.\c:\hoge\hoge
というのはどういう意味でしょう?
51デフォルトの名無しさん:2007/05/13(日) 18:02:23
それってWin32API関係あるのか?
52デフォルトの名無しさん:2007/05/13(日) 18:02:29
上はパス名の解析を無効にする
下は「このコンピュータ」
53デフォルトの名無しさん:2007/05/13(日) 18:11:22
>>46-49
どうもありがとうございます。

このAPI、内部で「マイナーバージョンアップ」しているみたいですね。
VirtualPC上のWin98では最初の引数に非NULLを与えるだけで落ちます。
使うなってことか、もしくはOSの種類によって切り替えろってことなんでしょうか……(^^;
54デフォルトの名無しさん:2007/05/13(日) 18:16:18
切り替えるしかないだろうね
実行ファイルに互換モードが適用されたりするとさらにカオス
55デフォルトの名無しさん:2007/05/13(日) 18:23:05
>非NULLを与えるだけで落ちます。
ワロタw 
9x対応超がんがれ
56デフォルトの名無しさん:2007/05/13(日) 19:39:13
>>43
有難うございます。
試してみますね
57デフォルトの名無しさん:2007/05/13(日) 19:46:09
モニタの電源を切るを作動させるAPIがあった教えて下さい
任意のタイミングでモニタを省電力モードにさせたいです
よろしくお願いします
58デフォルトの名無しさん:2007/05/13(日) 20:33:51
SC_MONITORPOWER
5957:2007/05/13(日) 21:05:54
>>58
出来ました
ありがとうございました
60デフォルトの名無しさん: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デフォルトの名無しさん:2007/05/13(日) 22:42:02
<gdiplus.h>より先に<windows.h>をWIN32_LEAN_AND_MEANなしでインクルードしている?
62デフォルトの名無しさん: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デフォルトの名無しさん:2007/05/15(火) 14:38:24
>>64
WM_SIZING, WM_GETMINMAXINFOとかかな?
66デフォルトの名無しさん:2007/05/15(火) 14:39:22
>>64
RedrawWindow
67デフォルトの名無しさん: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デフォルトの名無しさん:2007/05/15(火) 14:51:44
>ウォークエリアの幅or高さが200以下になったら、
  ̄ ̄ ̄ ̄ ̄ ̄
通路?
69デフォルトの名無しさん:2007/05/15(火) 14:53:09
ワロタw
ワークエリアだな。
7064: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デフォルトの名無しさん:2007/05/16(水) 02:16:16
買収・合併
74デフォルトの名無しさん:2007/05/16(水) 07:19:56
まるで、win32apiが洗練されてるかのような・・・w
75デフォルトの名無しさん:2007/05/16(水) 08:27:15
普通のAPIがスイッチ式だとしたらMCIは音声認識だからな。
高度なんだかアナログなんだか
76デフォルトの名無しさん:2007/05/16(水) 16:03:30
スクリプトに組み込むには使いやすいんだよね‥‥>MCI
77デフォルトの名無しさん:2007/05/16(水) 19:33:08
ショートカットファイルをその内容にしたがって正しく起動する
簡単な方法ってあるのでしょうか?

お願いします。
78デフォルトの名無しさん:2007/05/16(水) 19:37:48
ダブルクリックする
79デフォルトの名無しさん:2007/05/16(水) 20:58:40
>>77
ShellExecute
80デフォルトの名無しさん:2007/05/16(水) 21:27:43
>>77
くりぷろ
8177:2007/05/16(水) 22:57:11
ShellExecuteでできました。
ありがとうございます。
82デフォルトの名無しさん:2007/05/17(木) 00:05:29
ぐあ・・・緑クロスなんて出るのか。めっちゃ欲しいぜ
83デフォルトの名無しさん:2007/05/17(木) 00:11:30
くりぺろ
ぺたぺた
84デフォルトの名無しさん: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デフォルトの名無しさん:2007/05/17(木) 19:42:19
mciSend系で、メモリからロードというのは使えないですよね?
86デフォルトの名無しさん:2007/05/17(木) 21:01:48
>>84
ボタン時はEM_SCROLLCARETが走るんじゃない?
87デフォルトの名無しさん:2007/05/17(木) 23:37:32
>>86
WM_CREATE時にスクロールさせることは不可能なのでしょうか?
SendMessage(hLog_s, EM_SCROLLCARET, 0, 0);を追加してみても結果は変わりませんでした。
88デフォルトの名無しさん:2007/05/18(金) 00:17:34
>>87
なぜ、WM_CREATE時に拘る?

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

GetUpdateRectで更新領域の有無を判定すれば、
簡単なOnInitialUpdate
89デフォルトの名無しさん:2007/05/18(金) 00:35:59
>>88
WM_CREATE時に拘るわけではありませんが、
そん時に処理するのが一番面倒じゃなくていいかなと・・・。
というよりも、ウィンドウを作成した直後に1度だけ行えばいい処理なので、
WM_PAINT内で処理するのもどうなのでしょうか・・・
90デフォルトの名無しさん:2007/05/18(金) 00:44:16
EM_LINESCROLLで無理やりスクロールさせることで解決しました。
しかし、何でWM_CREATE時に限って出来ないのかは謎です・・・。
91 ◆3.JjF77I26 :2007/05/18(金) 01:05:14
>>90
WM_CREATEはウィンドウを生成する前に送られてくる
92デフォルトの名無しさん:2007/05/18(金) 02:06:50
>>91
ウィンドウを生成する前にですか。
なら、WM_CREATE時にCreateWindow()で色々作るってのも
何か変な感じがしますけど、まぁそういうものだ、で納得する事にします(´・ω・`)
93デフォルトの名無しさん:2007/05/18(金) 03:37:59
WM_IME_COMPOSITIONにおいて、if(GCS_COMPSTR & lp)で
現在の編集文字列が習得された、または最新化された時に処理を行えると思うのですが、
これは変換中の文字をBackSpaceで削っていって、最後の1文字を消したときは拾えないですよね?
変換中の文字を削っていって最後の1文字を消した時に処理を行いたいのですが、
どうすればいいでしょうか?
94デフォルトの名無しさん:2007/05/18(金) 04:30:58
MSNのメッセンジャーとかで、ウィンドウを最小化している時にメッセージを受け取ったら
タスクバーのところがオレンジ色にピコピコして知らせてくれると思うのですが、
それはどのようにしているのでしょうか?
95デフォルトの名無しさん:2007/05/18(金) 04:47:57
つピコピコハンマー
96デフォルトの名無しさん:2007/05/18(金) 05:07:13
とりあえずFlashWindowEx()だと色が微妙なのですが・・・
あと、ミリ秒指定ではなく、アクティブになるまで点滅させたいです
97デフォルトの名無しさん:2007/05/18(金) 05:15:54
>>96
すみません、どうやらタスクバーの方はオレンジ色になるようですね。
ミリ秒とカウント設定しても、指定した秒数の最後のほうの一瞬しか色が変化しないのですが
これは何でなんですか?
98デフォルトの名無しさん:2007/05/18(金) 08:08:24
>>92
わかるわかる。

MFCはOnInitialUpdateがあるから、
そんなこと意識せずにそこで記述するが、
OnInitialUpdateの互換(?)処理が>>88だったら、
WM_PAINTは不恰好だよな。
99デフォルトの名無しさん:2007/05/18(金) 08:11:20
>>96−97
FLASHWINFO構造体の中身あげ
100デフォルトの名無しさん:2007/05/18(金) 10:02:35
manifestファイルつきのWin32APIオンリーの簡単なテストプログラムを作ったのですが、
Aという名前のフォルダーでは正しく実行できるのに、Bという名前のフォルダーでは実行できません。
Process Monitorで調べてみたら、Aではmanifestを読み込んでいるのに、Bでは駄目。

で、Bのフォルダー名をCにリネームしたらmanifest読み込みました。
逆にAをBにリネームしたら、今度は駄目になった。
なので、Bという名前のフォルダーに何か制限が掛かっているような気もするのですが、
これって、どのあたりのAPIが絡んでいるのでしょうか?
101デフォルトの名無しさん: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デフォルトの名無しさん:2007/05/18(金) 10:54:26
僕ハッカー
103デフォルトの名無しさん:2007/05/18(金) 12:14:56
僕バッカー!
104デフォルトの名無しさん:2007/05/18(金) 13:13:23
バカバッカー!
105デフォルトの名無しさん: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デフォルトの名無しさん:2007/05/18(金) 19:01:21
>>105
FLASHW_TIMERNOFGをFLASHW_TIMER にしてみるとかとかとかとか
107デフォルトの名無しさん:2007/05/18(金) 19:11:39
>>106
FLASHW_TIMERにしてもやはり、点滅の間隔がおかしいです。
なんかもの凄く気持ち悪いのですが・・・(´・ω・`)
108デフォルトの名無しさん:2007/05/18(金) 19:37:17
作成したアプリケーションを他のパソコンで起動させたところ、
アプリケーションの構成が正しくないと表示され起動されませんでした。
自分のパソコンでは正常に動作するのですが・・・何が原因なのでしょうか?
109デフォルトの名無しさん:2007/05/18(金) 19:37:36
>>107
Exじゃないほうは使ってみた?
110デフォルトの名無しさん:2007/05/18(金) 19:45:37
>>109
ウィンドウがアクティブになるまで点滅させたいので、Exじゃないといけないような・・・。
111デフォルトの名無しさん:2007/05/18(金) 19:46:32
>>108
DLLが無いのでは
もしくは、デバッグビルドを渡してたり?
112デフォルトの名無しさん:2007/05/18(金) 19:52:55
>>111
それはデバッグなしで実行したときにDebugフォルダに出来るexeファイルの事ですか?
まさにそれなんですが、それは実行ファイルとは違うのでしょうか?
113デフォルトの名無しさん:2007/05/18(金) 19:53:17
>>108
ランタイムDLLのバージョン違いだな
114デフォルトの名無しさん:2007/05/18(金) 20:01:10
>>112
ビルドに何使ってるかわからんが、VC++とかだと
DebugとReleaseを切り替えられる。
Debugは開発環境で動かすものだ。
115デフォルトの名無しさん:2007/05/18(金) 20:05:15
>>108
つまり、他のパソコンにDLLを入れないといけないという事ですか・・・
あまりそういうのは詳しくないので申し訳ないのですが、具体的にどうすればいいのでしょうか?

>>114
Microsoft Visual Studio 2005です。一応Microsoft Visual Studio 2005がインストールされている
他のパソコンでは正常に動作するのを確認できています。
116デフォルトの名無しさん:2007/05/18(金) 20:07:40
>>114
Releaseにしてビルドしたらエラーが102個も出てしまいました・・・。
そういう事なのでしょうか・・・。・゚・(ノД`)・゚・。
117デフォルトの名無しさん:2007/05/18(金) 20:09:07
VS2005を使ってると予想
118デフォルトの名無しさん:2007/05/18(金) 20:17:24
>>116
プロジェクトのプロパティでいろいろ設定しなかったか?
あれはDebug、Release、共通、の3通りで設定できるんで
Debugだけ追加でライブラリ指定してたりするとはまる
119デフォルトの名無しさん:2007/05/18(金) 20:26:06
そのあたりではまる人間はVC初心者スレ行きだ
120デフォルトの名無しさん:2007/05/18(金) 20:49:45
>>115
「プロジェクト」→「プロパティ」→「構成プロパティ」→「C/C++」→「コード生成」

「ランタイム ライブラリ」を
「マルチスレッド デバッグ DLL (/MDd)」なら「マルチスレッド デバッグ (/MTd)」に
「マルチスレッド DLL (/MD)」なら「マルチスレッド (/MT)」にしてビルド
121デフォルトの名無しさん:2007/05/18(金) 21:04:14
#pragma commentで指定する俺は勝ち組
122デフォルトの名無しさん:2007/05/18(金) 21:51:49
>>120をやるほかに、ランタイムを用意する方法もある。
VC++ 2005ならランタイムは別途インストールするか、
マニフェスト書いてEXEと同梱する(ググれば何件か例が見つかる)

SP1を当てているかどうかで別ファイルになるんで要注意(上がSP1用)
http://www.microsoft.com/downloads/details.aspx?FamilyID=200b2fd9-ae1a-4a14-984d-389c36f85647&DisplayLang=en
http://www.microsoft.com/downloads/details.aspx?FamilyID=32bc1bee-a3f9-4c13-9c99-220b62a191ee&DisplayLang=ja
123デフォルトの名無しさん:2007/05/18(金) 21:55:25
BCBでVCLのスタティックリンクし忘れはしないけどbccのランタイムリンクし忘れで他PCで動かないとかはよくやる/(^o^)\
124デフォルトの名無しさん:2007/05/18(金) 21:58:59
デバッグ用のDLLは配布禁止(ヘルプのどこかに書いてある)なので注意!!
125デフォルトの名無しさん:2007/05/18(金) 22:21:46
ごめんなさい、ご飯を食べてました。
>>118のように、Releaseでリンカ追加したらエラーはなくなり、
他のパソコンでも無事起動させることが出来ました。
ありがとうございます。

でも、他のパソコンでやると何故か変な動作したりするので
これからそれを直そうと思います。Vistaのせいかな・・・。
126デフォルトの名無しさん:2007/05/18(金) 22:25:09
なんか流れてしまってますが、>>105をよろしくお願いします。
気持ち悪いです。
127デフォルトの名無しさん:2007/05/18(金) 22:45:43
>>126
メッセージループが回らないと点滅しないな、これ。
内部的にWM_TIMER使ってるのかもしれん。
128デフォルトの名無しさん:2007/05/18(金) 22:49:33
>>100
manifestを読み込んでいるかどうかはどうやって判断した?
129デフォルトの名無しさん: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デフォルトの名無しさん:2007/05/19(土) 02:49:08
>>128
SysinternalsのProcess Monitorです。

>>129
それだ!!! 助かりました、ありがとうございます。
この挙動は仕様なのかな。ってことは、Superfetch絡みですかねぇ。
131デフォルトの名無しさん:2007/05/19(土) 13:45:36
おぉ久々にためになる情報だ
知らないとハマるなこりゃ
132デフォルトの名無しさん:2007/05/19(土) 15:13:23
知ってる人は知っていると思うが、
mt.exe(Manifest Tool)を使えば、以前にVS6等で作ったexeに、再コンパイル・リンク無しで
mnifestを埋め込むことができるよ。
133デフォルトの名無しさん:2007/05/19(土) 16:50:25
manifestなんてマンドクセ
134デフォルトの名無しさん:2007/05/19(土) 23:11:14
SendMessage(hLog, EM_LINELENGTH, (WPARAM)3, 0);

EM_LINELENGTHって、第3引数番目の行までのバイト数を取得するんですよね?
上の場合だと、エディットコントロールhLogの3行目までのバイト数を返すんだと思うのですが、
第3引数の数字をいくつに変えても同じ数値が戻ってきます。
これは何故なのですか?
135デフォルトの名無しさん:2007/05/19(土) 23:16:19
>>134
指定した文字インデックスを含む行の文字数を返す。
136デフォルトの名無しさん:2007/05/19(土) 23:29:36
>>135
あるサイトの説明によると、
複数行TextBoxにおいて、指定した行インデックスの一つ前の行までのバイト数を取得する
らしいんですけど、行インデックスとは、例えば第3引数に3を指定した場合、
3行目の先頭が行インデックスでいいんですか?
137デフォルトの名無しさん:2007/05/19(土) 23:33:42
その説明は間違っている。今すぐ忘れなさい。
138デフォルトの名無しさん:2007/05/19(土) 23:38:17
>>137
Σ(TдT)えぇぇぇぇ!?
では、指定した行までのバイト数を取得するものはないのでしょうか?
EM_GETLINEで1行ずつバイト数足していくしか方法ないですか?
139デフォルトの名無しさん:2007/05/20(日) 00:22:48
>>138
つ EM_LINEINDEX
指定行の最初の文字の文字インデックスを返す。
140デフォルトの名無しさん:2007/05/20(日) 00:25:27
どうやらEM_LINEINDEXというのがあるようですね。そのサイトに載ってるのが全部だと思ってました・・・。

とりあえずは解決しました。しかし、エディットコントロール内にどんどん書き足していき、
最大行数を超えると、先頭の行から消していくわけですが、出力する度に
エディットコントロールの最上部に移動し、また最下部に戻すためちらついてしまいます。
SendMessage(hLog, WM_SETREDRAW, FALSE, 0);とかしてみたのですが、
全く変わりませんでした。このちらつきを抑えたいのですが、何かいい方法はないでしょうか?
141デフォルトの名無しさん:2007/05/20(日) 00:29:39
>>139
ありがとうございます。微妙にすれ違いになったようですね(´・ω・`)
142デフォルトの名無しさん:2007/05/20(日) 00:30:53
そんな変なサイト読まないで、マイクロソフトのドキュメント見ろよ。
143デフォルトの名無しさん:2007/05/20(日) 00:42:06
>>142
MSDNがなかなか・・・なかなかで。
どうやらちらつく時と、そうでない時があるようです。
また、時々画面に白い横線が入ったりしてて気持ち悪いです。
どのくらい気持ち悪いかというと亜jsふぃじゃ;jfヵfdぁじふぇくらいです。
144デフォルトの名無しさん:2007/05/20(日) 01:38:20
意味不明
145デフォルトの名無しさん:2007/05/20(日) 01:58:14
俺最強
146デフォルトの名無しさん:2007/05/20(日) 02:01:38
俺西京
147デフォルトの名無しさん:2007/05/20(日) 08:38:34
>>143
オフライン版は使ったことある?>>5
148デフォルトの名無しさん:2007/05/20(日) 10:38:13
>>140
WM_SETREDRAWが駄目なら、LockWindowUpdateはどう?
使った事無いけど。
149デフォルトの名無しさん:2007/05/20(日) 12:07:05
0→"ERROR_SUCCESS"
みたいにエラーから名前を取得する機構は無いですかね。
150デフォルトの名無しさん:2007/05/20(日) 12:16:39
FORMAT_MESSAGE_FROM_SYSTEM
151デフォルトの名無しさん:2007/05/20(日) 12:54:43
>>71をどなたかお願いします
152デフォルトの名無しさん:2007/05/20(日) 13:24:56
一般に無理
153デフォルトの名無しさん:2007/05/20(日) 14:05:42
>151
DataGridViewってdotNETの?それならそういうスレに行ったほうがいいと思う。
154デフォルトの名無しさん:2007/05/20(日) 14:13:35
スレ違いかもしれないのですが、どこに書いたらいいのか分からないのでここで質問させてください。
記憶ディスクにセクタ単位でアクセスしたいのですが、
WindowsのAPIだけでそういうことはできるんでしょうか?
FAT32でもNTFSでもかまいません。方法があったら教えてください。
155デフォルトの名無しさん:2007/05/20(日) 14:38:44
NTならCreateFileで\\.\c:\のようにドライブを指定すれば、
あとはRead/WriteFileでいける。
Cとかならバックスラッシュのエスケープに気を付けろ。

9xならvwin32を叩く。
http://web.archive.org/web/20040620102307/tech.millto.net/~morry/vwin32/adio/index.html
俺がやったときには95 OSR2以前と以降で違う方法をとらないとうまくいかなかった。
156デフォルトの名無しさん:2007/05/20(日) 14:45:13
SP2から禁止されなかったっけ
157154:2007/05/20(日) 14:50:52
ありがとうございます。やってみます。
158デフォルトの名無しさん:2007/05/20(日) 14:57:32
>>155
ttp://homepage3.nifty.com/k-takata/mysoft/rwfd.html
↑ソース付きなので参考になるかも。
159158:2007/05/20(日) 14:58:17
>>155じゃなくて>>154だた。
160デフォルトの名無しさん:2007/05/20(日) 16:01:27
>148
LockWindowUpdateは解除したときに、デスクトップ全部の再描画が発生するよ。
161デフォルトの名無しさん:2007/05/20(日) 16:15:10
>>149

無理
162デフォルトの名無しさん:2007/05/20(日) 18:55:32
winerror.hをreadしてparseしてだな(ry
163デフォルトの名無しさん:2007/05/20(日) 19:47:21
タスクトレイのアイコンを右クリックして出るメニュー(TrackPopupMenu)の
メニューハンドルを取得するにはどうしたらいいでしょうか?
164デフォルトの名無しさん:2007/05/20(日) 19:49:24
タスクトレイのアイコンを右クリックして出るメニューは自分で作るものだろ?
165163:2007/05/20(日) 19:50:25
すみません、他のアプリです。
166デフォルトの名無しさん:2007/05/20(日) 19:54:39
>>163
TrackPopupMenuをAPIフックするとか
167デフォルトの名無しさん:2007/05/20(日) 19:59:20
メニューハンドルを深追いすると、WinAPIの暗黒に飲み込まれるぞ。
168デフォルトの名無しさん:2007/05/20(日) 20:44:37
>>166-167
マジですか!?
とりあえず深追いしない程度に頑張ってみます。
ありがとうございました。
169デフォルトの名無しさん:2007/05/20(日) 21:22:32
ポップアップするまでハンドルって分からないこともあるんじゃ?
WM_CONTEXTMENUとかでメニュー生成してたらアウトでしょ
ずっとメニューハンドル保持し続けてたらいけるかもしれないけど
170デフォルトの名無しさん:2007/05/20(日) 21:24:25
対象プロセスのウインドウを片っ端からモニタ。
171デフォルトの名無しさん:2007/05/21(月) 06:08:00
>>163
popupメニューの操作で起こるActionを
外部からのトリガで実行したいとか言ってた人?

前のスレで答え出てたぞ
SendMessageで WM_COMMANDとメニュー項目のid値なげればおk
id値はspy++でも使って突き止めれば行けるんでは
172デフォルトの名無しさん:2007/05/21(月) 07:11:51
行けたー━━━━(゚∀゚)━━━━!!!!
情報サンクス愛してる♪
173デフォルトの名無しさん:2007/05/21(月) 08:02:08
愛されたw
174デフォルトの名無しさん:2007/05/21(月) 16:27:54
愛されたのは俺ですが
175デフォルトの名無しさん:2007/05/21(月) 17:18:07
>>173
誰だよw

>>174
妬くなよw
176デフォルトの名無しさん:2007/05/21(月) 17:44:33
>>174
上げるほど愛に飢えてるのかw
177デフォルトの名無しさん:2007/05/21(月) 17:55:57
僕愛人!
178デフォルトの名無しさん:2007/05/21(月) 18:09:51
僕ラマンチャ!
179デフォルトの名無しさん:2007/05/21(月) 18:24:45
(XPの)クラシックスタートメニューでコントロールパネルを展開するにしている時、
コントロールパネルのアイテムの増減が即座に反映されるようにするにはどうすればいいですか?
コントロールパネルを開いたら反映されているのですが、アイコンメニューが名前順で並べ替えしないと反映されません。
180デフォルトの名無しさん:2007/05/21(月) 18:25:40
reboot
181デフォルトの名無しさん:2007/05/21(月) 18:28:00
ちょw
182デフォルトの名無しさん:2007/05/21(月) 19:15:13
なのはって頭よさそうじゃん
183デフォルトの名無しさん:2007/05/21(月) 19:16:21
むやみにコントロールパネルに追加するんじゃありません!めっ!
184デフォルトの名無しさん:2007/05/21(月) 21:33:41
エディットコントロールからデスクトップ等にミドルボタンでD&Dした時
ドロップした位置にファイルを作成するにはどうすればいいのでしょうか
185デフォルトの名無しさん:2007/05/21(月) 21:54:40
そんな仕様はMSのガイドラインになかった気がする。
186デフォルトの名無しさん:2007/05/22(火) 00:00:58
IShellFolderからGetUIObjectOfでDataObject作ってDoDragDropかいな?
187デフォルトの名無しさん:2007/05/22(火) 01:24:30
コンソール非表示のためにmainからWinMainに切り替えたんだが、そうすると
起動時にマウスカーソルが5秒程度砂時計になったままになる

長時間砂時計になるのを防ぐいい方法があったら教えてください
188デフォルトの名無しさん:2007/05/22(火) 02:04:24
ありがとうございました
やってみます!
189デフォルトの名無しさん: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デフォルトの名無しさん:2007/05/22(火) 03:27:08
>>187
メインスレッドが応答しないからそうなる。
別スレッドで実行しろ。
192デフォルトの名無しさん:2007/05/22(火) 03:43:54
>>189
ITravelLogStg
193デフォルトの名無しさん:2007/05/22(火) 07:44:55
>>189
DWebBrowser2インターフェイスでそういうイベントを捕まえられたはず
194デフォルトの名無しさん: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デフォルトの名無しさん:2007/05/22(火) 15:27:30
>>190
名前忘れたがフリーソフトである
要は関数名列挙した.defファイルさえあれば.libは作れるんで、それを自動化したものだと思った


で、話変わるけど、GINA差し替えても「ようこそ」画面は維持できるようにする方法ってある?
1.4までの全APIをMSGINAのスタブにしただけのDLLでもようこそ画面は解除されちゃうんで・・・
196デフォルトの名無しさん:2007/05/22(火) 15:28:18
>>194
スクロールバーで子ウィンドウをスクロールさせる発想が間違ってる
子ウィンドウでなく描画位置をかえる
197デフォルトの名無しさん:2007/05/22(火) 15:40:07
>>190
VCなら付属のlib.exeじゃ駄目なのか
198デフォルトの名無しさん:2007/05/22(火) 15:45:27
>>194
スクロールバー自体が最大32767じゃなかったっけ?
199デフォルトの名無しさん:2007/05/22(火) 15:47:14
VC++ 2005EEでWin32APIとC++でゴリゴリ書いてるんだけど、
Windowsフォームアプリケーションみたいなボタンとかの
コントロールって張れるの?
200デフォルトの名無しさん:2007/05/22(火) 15:51:49
>>199
どういった意味で言ってるのかわからん。

コントロールをウィンドウに貼ると言うだけなら
普通にCreateWindowすればいいよん。
エディットコントロールならウィンドウクラスは"EDIT"で、WS_CHILD つけて
親ウィンドウを自分のウィンドウにして。
201デフォルトの名無しさん:2007/05/22(火) 15:55:38
>>196
> >>194
> スクロールバーで子ウィンドウをスクロールさせる発想が間違ってる
> 子ウィンドウでなく描画位置をかえる
ちょっと書き方が悪かったか。別にhCWndをMoveWindowとかしてないよ。
ちゃんとスクロールバが付けているhCWndの親をScrollWindowExで描画位置を変えてるよ。
#汎用的に使える様に子供として乗せる独自クラスを使っている。

ただ、この方法でなくても・・・↑独自クラス化しない・・・例えば 猫の第100章 SCROLLINFO構造体 の例の
WM_SIZE:のGetClientRectでも32767を超えた値を取れないんじゃないか?
#スマソまだ試してないんだけど^^;
202デフォルトの名無しさん:2007/05/22(火) 16:02:27
>>199
ダイアログリソース作ってコントロール配置して ::CreateDialog()。
203デフォルトの名無しさん:2007/05/22(火) 16:02:53
>別にhCWndをMoveWindowとかしてないよ。

なのに、GetClientRectにこだわってるのは何で?
204デフォルトの名無しさん:2007/05/22(火) 16:04:36
あと、たしかにWindows95/98/Meはウィンドウのサイズの上限は32767だけどね
205デフォルトの名無しさん:2007/05/22(火) 16:11:23
>>201
それならウィンドウをそこまで大きくする必要は無い

>>198
メッセージとして送られる値はshortだがSCROLLINFOはintまで使える
後は掛けるなり割るなりして描画位置をかえればいい
206デフォルトの名無しさん:2007/05/22(火) 16:16:58
>>203
> >別にhCWndをMoveWindowとかしてないよ。
>
> なのに、GetClientRectにこだわってるのは何で?
ん?? あれぇ、漏れなんか勘違いしてるかぁ?
描画位置を変えるって、所詮は自分のクライアント領域を上下とか左右にスライドさせている
感覚なのだが…ちゃうんけ?
だからクライアント領域の最大値を最初に SCROLLINFO siとかに設定してスクロールバの位置と表示
されるクライアント領域の位置のつじつまが合う様にしていると思っているのだが…
207デフォルトの名無しさん:2007/05/22(火) 16:30:35
仮に1000行のテキストがあったとする
クライアントには10行表示されたとして
そこから50行スクロールさせる
描画位置は51行、そこから60行までの10行を表示させればいい
1000行分のウィンドウサイズはいらない
208デフォルトの名無しさん:2007/05/22(火) 16:36:33
クライアントエリアの左上は常に 0, 0 なので
どんなにスクロールさせようとGetClientRect の値は
0, 0 を起点にした大きさでしか取得できんよ。
209デフォルトの名無しさん:2007/05/22(火) 17:05:39
>>207
いや、ちょっと待ってくれ。
確かに猫を例にしたのはちょっと悪かったが…
単に文章だけなら、そー言った方法も考えられるんだけど、実際にはクライアント領域には
さまざまなコントロール(ボタンやら)も載ってる訳で…
それらがスクロールバの動きに合わせて見え隠れするってのは、文字列みたいには
ゆかんだろう?

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



どこかに良い例文はないかね? orz
210デフォルトの名無しさん:2007/05/22(火) 17:10:09
>>209
>>207は仮の話しだしヒント
コントロールを移動させろ
211デフォルトの名無しさん:2007/05/22(火) 17:11:31
>>209
色々貼り付けられている親のクライアント領域に 貼り付けられた子で
「子のウインドウrectを取って 親へScreenToClient する」 なら意味ありそうだが、
「子のクライアントrect 取って」 もしゃーないんじゃないか? ということを >>208 は言っている。
212デフォルトの名無しさん:2007/05/22(火) 17:14:47
>>209
文字もコントロールも変わらんよ
213デフォルトの名無しさん:2007/05/22(火) 17:25:47
>>209
OSを書き換える気がないなら、ウィンドウズに頼らずに自前で位置を管理して
見える所のコントロール(+α、tab等でフォーカスが次に移る可能性のあるもの)
だけ正しい位置になるようにすればOK。
あとは適当に表示されない位置に移動or非表示に。

ボタン等コントロールらしきものなどが配置された広大な領域を扱いたい
というだけなら、html ダイアログを作るという手もある。
214デフォルトの名無しさん:2007/05/22(火) 17:35:11
フォームビューみたいなことやりたいのかな。
そもそも32767までしか作れないというのはどうやったの?
普通に32767超えられるけど。
215デフォルトの名無しさん:2007/05/22(火) 17:42:20
Sleep()中にマウスカーソルが砂時計になるのですが、
これを矢印のままにしたいです。どうすればできますか?
MFCはできれば使いたくありません。
216デフォルトの名無しさん:2007/05/22(火) 17:50:06
GUIスレッドでSleepすんな
217デフォルトの名無しさん:2007/05/22(火) 17:50:08
試してないが
WM_SETCURSOR
で何とかならんか?
218デフォルトの名無しさん:2007/05/22(火) 17:50:17
MakeSureDirectoryPathExistsって、PCSTRが引数で、
Unicodeビルドするとコンパイルが通らないんですけど、
この関数ってUnicodeのときは使えないものなんでしょうか?
219デフォルトの名無しさん:2007/05/22(火) 17:53:07
あ、メインスレッドとめちゃってる訳ね
220デフォルトの名無しさん: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デフォルトの名無しさん:2007/05/22(火) 18:01:03
>>220
ああごめん、ウィンドウサイズは超えられるけど、クライアントエリアのサイズは32767止まりだったわ
223デフォルトの名無しさん:2007/05/22(火) 18:02:15
>>218
typedef CONST CHAR* PCSTR;だったはず。
多分デバッガ用のヘルパー関数扱いだったから、
UNICODE版がないんだろうね。
224デフォルトの名無しさん:2007/05/22(火) 18:02:37
>>218
コンパイルが通らないだけじゃわからない
必要ファイルがインクルードされてないのか
libがリンクされてないのか
WIN95を対象に開発してるのか
色々ある
225デフォルトの名無しさん:2007/05/22(火) 18:05:27
>>223
TSTR じゃなく STR だし UNICODE版が居ないように見えるね
226218:2007/05/22(火) 18:11:02
1 番目の引数を 'class CString' から 'const char *' に変換できません。
1 番目の引数を 'const unsigned short *' から 'const char *' に変換できません。

などと出てきます。
今までWindows2000でMBCSのままでやってたときは問題無くビルドできていたけど、
UNICODEに変更したらMakeSureDirectoryPathExistsでずらずらエラーが出ました。
UNICODEでやってる人たちって、この関数に頼ってないということなのでしょうか?
227223:2007/05/22(火) 18:11:18
>>218
エスパー魔美な俺が一言
SHCreateDirectoryExを使え!
228デフォルトの名無しさん:2007/05/22(火) 18:12:18
>>227
俺が・・・ってw
229デフォルトの名無しさん:2007/05/22(火) 18:14:23
ヘルプに書いてあるなw
そうでなくてもPCSTRに変換すれば使えそうだけど
230218:2007/05/22(火) 18:24:21
MakeSureDirectoryPathExistsを全部SHCreateDirectoryExに置き換えてみます。
ヘルプを呼んでみた限り、
SHCreateDirectoryEx(NULL, パス名, NULL);
という呼びかたでいいんですよね?
間違ってたら突っ込んでもらえると嬉しいです。
ありがとうございます。
231デフォルトの名無しさん:2007/05/22(火) 19:15:59
dll側から自身を終了させる(exeは終了させない)にはどうしたらいいですか?
dll側で自身をFreeLibraryしてもexeは普通終了されないのでしょうか?
232デフォルトの名無しさん:2007/05/22(火) 19:21:36
根本的に考え方を間違ってないか?
233231:2007/05/22(火) 19:22:48
そうだと思います。
ご指摘お願いします。
234デフォルトの名無しさん:2007/05/22(火) 19:25:23
>>210
ぐえっ、やっぱりそれかよ…orz
確かに説明わるい。早い話がExcelみたいな画面を作りたいわけだ。
で、もう一度よくよくExcelの動きを見ると…そーかぁ…クライアント領域みたいな物をスクロール
させてる訳では無いかも。枠の線って変化しないで中の数字(文字列)だけが移動しているだけかも(?)
#でも横のスクロールは線も移動してるよなぁ^^;
貼り付けたコントロールも移動させてる感じだね。

了解。やってみるよ。
235デフォルトの名無しさん:2007/05/22(火) 19:49:37
>>231
良くわからん
FreeLibraryを使った関数使うのはexe側だろ
だったらexe側でFreeLibraryしたらいいんじゃないの?
236231:2007/05/22(火) 19:55:55
exeは既存の物でdllが自作です。
exeでもFreeLibraryしてますが、それより早く不要になった時点でdllを解放したいのです。
237デフォルトの名無しさん:2007/05/22(火) 19:58:58
>>236
どうやってLoadLibrary&GetProcAddressするの?
238デフォルトの名無しさん:2007/05/22(火) 20:00:21
exe側でFreeLibraryしてるなら、勝手にDLL側終了しちゃダメじゃん。
えらいことになりそうな気がする。
239231:2007/05/22(火) 20:07:18
>>237
特定の関数をエクスポートしていればそのdllをプラグインとして認識するタイプです。

>>238
そうですか。exeの実行時に使用してexeが終了するまで使わないので、
ちょっとでもメモリ消費量なり抑えられればと思ったのですが・・・。
240デフォルトの名無しさん:2007/05/22(火) 20:19:10
>>239
おまいはDLLのなんたるかを理解していないな
241デフォルトの名無しさん:2007/05/22(火) 20:25:12
もう使わないことが分かってるなら、exeのほうからFreeLibraryすりゃいいじゃないか。
242デフォルトの名無しさん:2007/05/22(火) 20:37:27
>>241
dll側のソースだけでどのようにexeのほうからFreeLibraryするか分からないんですが・・・、
すみませんが教えて頂けませんか?
243デフォルトの名無しさん:2007/05/22(火) 20:46:21
>>242
プラグインとして不要と exe 側のコードを書いた人が判断したタイミングで FreeLibrary を呼ぶ

DLL側のコードを書く人は自前で Load/Free を管理できねー
244231:2007/05/22(火) 20:57:47
分かりました。ありがとうございました。
245デフォルトの名無しさん:2007/05/22(火) 21:41:31
>>195
> MSGINAのスタブ
「ようこそ」画面を提供してるのはshgina.dll
246デフォルトの名無しさん:2007/05/22(火) 21:42:41
Thread動かすタイプのDLLなら、
FreeLibraryAndExitThread
という話になるんだよねたしか。
247デフォルトの名無しさん:2007/05/22(火) 21:49:56
そして、
FreeLibrary();
ExitThread();
すればいいのに、何でこんな関数あるのって話になるんだよねたしか。
248デフォルトの名無しさん:2007/05/22(火) 21:54:05
FreeLibrary();
ExitThread();
すればいいのに、何でこんな関数あるの?
249デフォルトの名無しさん:2007/05/22(火) 21:54:34
FreeLibraryを先に呼ぶと、ExitThread呼ぶコードがアンロードされて死亡だし、
ExitThreadを先に呼ぶと、FreeLibraryするチャンスがないからだよ、
ってたしか the Old New Things あたりに載ってたんだよねきっと。
250デフォルトの名無しさん:2007/05/22(火) 22:03:45
なるほど。
251デフォルトの名無しさん:2007/05/22(火) 23:11:53
子プロセスを特定してヌッ殺す方法を教えてください

明示的に作成したプロセスなら簡単なんだけど、コンソールアプリ起動した時の
conime.exeみたいに勝手にくっ付いてる子プロセスを特定する方法が分からない
252デフォルトの名無しさん:2007/05/22(火) 23:33:52
exe, dll, ico, iclなどから
インデックス、サイズ(small/largeだけでなく24とか128も)を
指定してHICONを取得したいと思っています。

IExtractIcon::Extractで希望のアイコンは取得できるのですが
数が多いと動作が遅くて困ってます。
何か他に良い方法ってあるのでしょうか?
ご存知の方いたらお願いします。
253デフォルトの名無しさん:2007/05/22(火) 23:39:52
>>252
エスパーが予想。
IExtractIcon::Extractとは関係ないところで速度低下
254デフォルトの名無しさん:2007/05/22(火) 23:47:17
>251
自分をJobObjectに所属させれば。
255デフォルトの名無しさん:2007/05/23(水) 05:41:22
>>252
>>253が原因でなければ、エクスプローラみたく非同期で処理。
256デフォルトの名無しさん:2007/05/23(水) 09:52:32
SystemParametersInfoに SPI_SETICONSを渡した場合、
MSDNによれば
>システムアイコンを再ロードします。
って事らしいんですけど、
ここで言う「システムアイコン」って何なんですかね?

呼出は成功してるんですけど、今ひとつ実効性というか、
要するにこいつは何をやってくれるんだろうってのが、
はっきり解らないんですけど。
どなたかご存じないですか?
257デフォルトの名無しさん:2007/05/23(水) 09:54:55
>>234
こんなもん、ちょっとでもコード書いてみりゃ要領がわかるよ
258デフォルトの名無しさん:2007/05/23(水) 11:08:31
>>256
システムアイコンはメッセージボックスに表示されるアイコン。
?や!や×みたいなの
259256:2007/05/23(水) 13:44:46
>>258
ありがとうございます!

あれですかー…
どうりで、実行してもぱっと見何も起こらないわけですね。
260デフォルトの名無しさん:2007/05/23(水) 14:42:03
Win2kの環境で
アクティブデスクトップの背景を自分のウィンドウのクライアントに描画したいのですが
SHELLDLL_DefView SysListView32 Internet Explorer_Server DeskMover GetDesktopWindow()
あたりにWM_PAINTやWM_PRINTをいろいろオプション変えて送っても描画されません。
どうしたらアクティブデスクトップの背景を描画させる事ができますか?
261デフォルトの名無しさん:2007/05/23(水) 14:58:29
PrintWindow API辺りならなんとかなるんじゃないかな?
262デフォルトの名無しさん:2007/05/23(水) 16:46:27
マウスカーソルの下のツールバーボタンのコマンドIDかインデックスを取得したいのですがどうすればできますか?
263デフォルトの名無しさん:2007/05/23(水) 17:01:44
264デフォルトの名無しさん:2007/05/23(水) 22:12:09
>>261
PrintWindowはXPにはない。
それがアリならVistaとAero有効なPCを買ってこいと回答しておこう
265デフォルトの名無しさん:2007/05/23(水) 22:18:21
>>264
PrintWindowはちゃんとXPにあるから。
266デフォルトの名無しさん:2007/05/23(水) 22:21:43
>>265
ごめん「XP以降にしかない」と書こうとして間違えた。
267252:2007/05/23(水) 23:40:35
>>253
Extract自体ではなくて前後の
COM関係のあーだ、こーだが遅いみたいでした。

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

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

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

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

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

ちなみに接続ボタンを押すと接続/受信用スレッドが立ち上がり、切断ボタンを押すとスレッドが終了します。
272デフォルトの名無しさん:2007/05/24(木) 00:39:06
>>271
ログウィンドウはエディットコントロールのおかん
ママー
273デフォルトの名無しさん:2007/05/24(木) 00:51:54
>>272
つまり・・・どういう事ですか?
274デフォルトの名無しさん:2007/05/24(木) 00:53:03
それは、こっちが聞きたい
275デフォルトの名無しさん:2007/05/24(木) 00:54:25
つまりだね
276デフォルトの名無しさん:2007/05/24(木) 01:16:12
>>271
debug
277デフォルトの名無しさん:2007/05/24(木) 01:19:56
質問させて頂きます。
GetOpenFileNameでファイル選択ダイアログを表示し、ファイルを取得しているのですが
何故か、別のモジュール側の処理を少し追加したらダイアログが表示されなくなりました。
原因が全く分かりません…。GetOpenFileNameを利用する上で何か注意しないといけない事があるのでしょうか?

コンパイラはBCCとVCの両方で試しましたが、ダメでした。
278デフォルトの名無しさん:2007/05/24(木) 01:22:23
追加した処理が原因です
279デフォルトの名無しさん:2007/05/24(木) 01:33:20
>>277
debug
280デフォルトの名無しさん:2007/05/24(木) 01:35:10
その処理を消してみて元に戻るかどうかは試したの?
281デフォルトの名無しさん: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デフォルトの名無しさん:2007/05/24(木) 01:51:56
レスありがとうございます。
>>280さん
はい、戻ります。
追加した処理の内容ですが、実行パスを取得した後に、設定ファイルのパスを作るだけの処理です^^;
メッセージボックスを出す等すると何故か表示されたりします
283デフォルトの名無しさん:2007/05/24(木) 01:58:11
>>282
エラーコード調べたり、デバッガ使ったり
やる事は色々あるだろ
284デフォルトの名無しさん:2007/05/24(木) 02:49:11
正直、これだけの情報で答えられるのはエスパーだけだと思う。
せめて追加したコードだけでも出すとか・・
285デフォルトの名無しさん:2007/05/24(木) 02:52:53
メッセージボックスを出すとうまくいく、というのがなんか引っかかるな。
OPENFILENAME構造体をちゃんと初期化してるか?
286デフォルトの名無しさん: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デフォルトの名無しさん:2007/05/24(木) 03:51:12
wsprintf( p_dis, TEXT("%s%s"),p_dis,INI_PATH);
これって同じ領域指定しても良かったっけ?
288デフォルトの名無しさん:2007/05/24(木) 04:02:31
だめだめです
289デフォルトの名無しさん:2007/05/24(木) 06:58:22
だからコンパイルエラーとか挙動不審なのはAPIと関係ないっつーの
290デフォルトの名無しさん:2007/05/24(木) 08:16:54
1.GetModuleFileName
2.結果をバッファにコピー
3.PathRemoveFileSpecでモジュール名を取り除く
4.lstrcatで"\"と設定ファイル名を追加する

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

だめなのか?
291デフォルトの名無しさん: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デフォルトの名無しさん:2007/05/24(木) 12:55:21
std::stringのrfindとかってMBCS対応できてるんだっけ?
293デフォルトの名無しさん:2007/05/24(木) 13:01:23
>>290
3でshlwapi使うなら4はPathAddBackslashとStringCchCatだろ
294デフォルトの名無しさん:2007/05/24(木) 15:00:20
名前解決を行うプログラムを作りたいのですが、
DnsQuery()はPIP_ARRAYを使っており、DNSサーバにIPv4のものしか指定できません。
DNSサーバにIPv6アドレスを指定できるDnsQuery()または同等なものはないでしょうか?

よろしくおねがいいたしますm(_ _)m
295デフォルトの名無しさん:2007/05/24(木) 18:39:44
getaddrinfo じゃ駄目なの?
296デフォルトの名無しさん: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デフォルトの名無しさん:2007/05/24(木) 18:48:44
LOWORD(wp) の値が 3 じゃないの?
298デフォルトの名無しさん:2007/05/24(木) 18:53:02
LOWORD(wp)をMessageBoxで表示させたところ6とか見当違いの数字が入ってます。
299デフォルトの名無しさん:2007/05/24(木) 18:54:44
追記ですが、そのボタンの9番目の引数を(HMENU)30とかに変えると、
LOWORD(wp)に30が送られてきます。これで正常に動作はさせれるのですが、
結局のところ根本の解決になってないのであまり納得が出来ません。
300デフォルトの名無しさん:2007/05/24(木) 18:57:37
Dialog でかつ WM_INITDIALOG のタイミングで >>296 をやろうとしてる?

LOWORD(wp)==6 って IDYES 相当なんだが、、、
ちゃんとコントロール作れてないとか
break し忘れているとか
そっち方面な気配がする
301デフォルトの名無しさん:2007/05/24(木) 18:57:59
#define IDABORT 3
とかぶってるからじゃないの?
302デフォルトの名無しさん: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デフォルトの名無しさん:2007/05/24(木) 19:16:21
>>302
(HMENU)9 + i じゃだめさーね
(HMENU)(9 + i) でないとあかん
304デフォルトの名無しさん:2007/05/24(木) 19:17:05
WM_COMMAND の解説ちゃんと読め
305デフォルトの名無しさん:2007/05/24(木) 19:20:03
>>303
頭悪い間違えですね。ごめんなさい。
首吊ってきます。死ぬ前に、直接数値指定してるのに違う数値が来る時のやつ
調べてきます。
306デフォルトの名無しさん:2007/05/24(木) 20:22:00
>>292
たぶん対応していないし、第一TCHARを使うんだったら、
std::stringではなく、std::basic_string<TCHAR>を使うべき。
307デフォルトの名無しさん:2007/05/24(木) 20:57:44
なんかエディットコントロールに文字が増えれば増えるほど、
動作が重くなってくるのですが、これは仕様って事でいいのでしょうか?
特に、winsockの関数周りが遅くなってるような気がします。
308294:2007/05/24(木) 21:10:12
>>295
レスありがとうございます。

getaddrinfoは名前解決をOSに任せる物だと思っております。
(IPv6アドレスを持った)DNSサーバを指定して名前解決を行いたいです。
309デフォルトの名無しさん:2007/05/24(木) 21:29:44
>>307
とりあえず、EM_GETHANDLE, EM_SETHANDLEを使って、
標準のハンドルを差し替えたら?
GlobalAlloc(GPTR, メモリサイズ)で当てはめはめて

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

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

パパー
310デフォルトの名無しさん:2007/05/24(木) 21:44:14
http://msdn2.microsoft.com/en-us/library/ms682035.aspx
DnsQueryが使えない理由を詳しく
311デフォルトの名無しさん:2007/05/24(木) 21:52:28
よく読めよ。
IPv6レコードではなく、IPv6アドレスしか持たないDNSサーバを扱う話だろ。
312294: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デフォルトの名無しさん:2007/05/24(木) 22:06:42
IPv6でのDNSクエリの発行自体xpSP2でサポートされたばかりだしなあ。
314デフォルトの名無しさん:2007/05/24(木) 22:08:37
http://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デフォルトの名無しさん:2007/05/24(木) 22:18:42
>>312
そのシグニチャはどこから持ってきたん?
316デフォルトの名無しさん:2007/05/24(木) 22:23:51
Windows CE?
317デフォルトの名無しさん:2007/05/24(木) 22:30:11
XPってv6トランスポートで本当に名前解決できるの?
http://www.ipv6style.jp/jp/action/20050905/index.shtml
ここ読むとできない、みたいなはなしがあるけどさ
318デフォルトの名無しさん:2007/05/24(木) 22:30:59
>>312
WinDNS.h見てみたけど無理そうだな。アキラメロ
319294: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
320294:2007/05/24(木) 22:33:14
>>317
Vistaならできるはずです。
XPでできないならAPIでも提供されていないでしょうかね?

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

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


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

で、aipServersの所は予約パラメータ扱いに変更されている。
対応するつもりが、面倒で放置したって感じか。
323名無し@沢村:2007/05/25(金) 05:34:10
256色の画面をクリップボードにコピーして、コピーや貼り付けがしたいのですが、
どのようにすればいいかわかりません。
誰か詳しく教えてくれませんか?
324デフォルトの名無しさん: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デフォルトの名無しさん:2007/05/25(金) 10:03:00
256色だとパレットも持ってこないとな
326294:2007/05/25(金) 11:32:09
皆様レスありがとうございます
特に>>317の記事大変参考になりました。
DLLをわざわざ開発するくらいですからAPIでは無理ですね。

BIND(dig,host,nslookup,...)のソースなどを参考に時間があるときにでも作成したいと思います。
327デフォルトの名無しさん:2007/05/25(金) 16:15:08
読み込み違反ってどんな時に起きるんでしょうか?
LoadLibraryでDLLを呼び出してDLL内の関数を実行すると、
「アドレス 00000000 でアドレス 00000000 に対する読み込み違反がおきました。」
となります。そのDLL関数は4つの引数をサポートしていて他の3つの引数では成功します。
328デフォルトの名無しさん:2007/05/25(金) 16:19:40
まさにぬるぽ
329デフォルトの名無しさん:2007/05/25(金) 17:24:14
>>327
デバッグしろよ

「作ったソフトがまともに動きませんどうしてでしょうか?」
みたいな質問が多いけど情報は少ないし、しかもスレ違い
330デフォルトの名無しさん:2007/05/25(金) 17:43:54
とりあえず、APIと関係なさそうなのは間違いない感じだなw

あれじゃね?
渡さなきゃいかん値をNULLで渡してるとか。
渡してるつもりになってる変数が0でしたとか。
331デフォルトの名無しさん:2007/05/25(金) 17:48:23
>>327
> そのDLL関数は4つの引数をサポートしていて他の3つの引数では成功します。
どういう意味?
引数の数が一つで、4種類の値しかとらないってこと?
それとも、DLLが複数の関数をエクスポートしていて、
引数が3つのやつは成功するけど、4つのは失敗するってこと?
332デフォルトの名無しさん:2007/05/25(金) 18:31:40
>>327
わんわん わわわん わんわん わん?
(関数ポインタの宣言がおかしいじゃね?)
333デフォルトの名無しさん:2007/05/25(金) 19:30:13
>>327
その「アドレス 00000000 でアドレス 00000000 に対する読み込み違反がおきました。」
という分かりやすく簡潔なメッセージの何がわからないのか書いてもらわないと・・・

「アドレス」の意味が分からないとか?
334デフォルトの名無しさん:2007/05/25(金) 19:37:12
メッセージが分からないとは書いてないぞ
335デフォルトの名無しさん:2007/05/25(金) 19:46:51
じゃあこれでいいだろ

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

答え
「アドレス 00000000 に対する読み込み」を行ったとき、等。
336デフォルトの名無しさん:2007/05/25(金) 19:48:52
( ゚д゚)ポカーン
337デフォルトの名無しさん:2007/05/25(金) 19:50:46
OSが保護している領域に書き込んだ時
「そのアドレスはらめぇ」とWinに言われてる
338デフォルトの名無しさん:2007/05/25(金) 19:53:24
読み込みエラーの話をしているのに書き込みの話をし出す馬鹿。
339デフォルトの名無しさん:2007/05/25(金) 19:56:27
馬鹿馬鹿言うしか能のない馬鹿。
340デフォルトの名無しさん:2007/05/25(金) 20:12:10
OSが保護している領域を読み込んだ時
「そのアドレスはらめぇ」とWinに言われてる
341デフォルトの名無しさん:2007/05/25(金) 20:12:11
まぁたぶん今回のはコールバック関数のアドレスとして NULL を渡したとか
なんかそんなことだろうね。IP もゼロだし。
342デフォルトの名無しさん:2007/05/25(金) 20:44:07
>>341
IP???????????
343デフォルトの名無しさん:2007/05/25(金) 20:50:44
>>342
Instruction Pointer。どこのコードを実行するかを格納しているレジスタ。
「アドレス 00000000 で」の部分が当該コードのアドレスを示している。

それはともかくとして、Win32 とかいう以前の話ばかり・・・
レベル低すぎだろいくらなんでも。
この板には初心者スレとか無いのか?
344デフォルトの名無しさん:2007/05/25(金) 20:55:26
たくさんあります
345デフォルトの名無しさん:2007/05/25(金) 21:04:59
>>343
レベル低いのはお前の方では?
コールバック関数のアドレスとして NULL を渡したとかそんなレベルの話でないと思われ。
レベルの低い奴はレベルの低い事しか考えられないと思われても仕方ない。
346デフォルトの名無しさん:2007/05/25(金) 21:10:02
tabcontrolってデフォルトでフォーカスの四角を表示しない機能って
ありませんでしたか?

もしあったら教えてください。
347デフォルトの名無しさん: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デフォルトの名無しさん:2007/05/25(金) 21:20:52
僕バッカー!
349デフォルトの名無しさん:2007/05/25(金) 21:22:36
>>346
スタイルのTCS_TABSを外す
350デフォルトの名無しさん:2007/05/25(金) 21:22:51
>>345
>コールバック関数のアドレスとして NULL を渡したとかそんなレベルの話でないと思われ。
おそらくそこまでも行っていないレベルの話だと思われ
NULL をコールしてるんだよね、たぶん。
351デフォルトの名無しさん:2007/05/25(金) 21:25:54
DLL自作なのかな?
352デフォルトの名無しさん: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デフォルトの名無しさん:2007/05/25(金) 21:44:35
memdcとmemdc2をSRCPAINTにしてないとか
355デフォルトの名無しさん:2007/05/26(土) 01:08:52
MeteredSection
・パフォーマンスはCriticalSection並で
・セマフォの様にカウンタもあり
・win9x,NT,CEで使える
というステキな同期機構があるようなんですが、

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

これは一般には使われてないんでしょうか
だとしたら理由はなんでしょう
356デフォルトの名無しさん:2007/05/26(土) 01:14:54
そんなに必要じゃないからだろ マイナーだし
357デフォルトの名無しさん:2007/05/26(土) 01:15:52
>>355
単純にみんなが知らないだけだと思われ。
ってか、自分もはじめて知った
358デフォルトの名無しさん:2007/05/26(土) 01:22:24
359デフォルトの名無しさん:2007/05/26(土) 01:50:48
唐突な質問すみません。
WAVファイルが使用されているかどうかをチェックするにはどうすればいいでしょうか?
360デフォルトの名無しさん:2007/05/26(土) 02:02:34
アクセス日時でも調べたら?
361デフォルトの名無しさん:2007/05/26(土) 02:09:16
使用とはつまり今使用中なのかどうかを調べたいのですが、
362デフォルトの名無しさん:2007/05/26(土) 02:13:31
そのWAVファイルをごみ箱に投函。

入ってくれなければ使用中。以上
363デフォルトの名無しさん:2007/05/26(土) 02:26:09
さうんどどらいばにおくられているはけいがそのわヴのものならしようちゅう。いじょう。
364デフォルトの名無しさん:2007/05/26(土) 02:31:54
スレ違いでしたら誘導をお願いします

CreateProcessで作成したプロセスを安全に終了させたいと思っています。
メッセージループを持っているプロセスならWM_CLOSEで事足りるのですが、コマンドラインアプリケーションの場合はどうすればいいのでしょうか?
たとえばpingの場合control-Cを送れば終了できるんじゃないかと思い、パイプを作成してETXを送ったのですが終了できません。
また、command.comのプロンプトはCR(control-M)でちゃんと改行と処理されるのですが、パイプを通した場合はLFCRを送らなければ認識されません。
パイプの処理に関して何か根本的な勘違いをしているのでしょうか?
365デフォルトの名無しさん:2007/05/26(土) 02:42:52
>>364
どういう使い方してるの?
ウチの環境ではpingし終わったら勝手に閉じるけど?
366デフォルトの名無しさん:2007/05/26(土) 05:59:02
command.comってことは98・・・か・・・?
367デフォルトの名無しさん:2007/05/26(土) 08:50:30
>>364

http://support.microsoft.com/kb/190351/ja

まず、ここのサンプルを試してみ
368デフォルトの名無しさん:2007/05/26(土) 10:16:56
シグナルを送るんだよ
369デフォルトの名無しさん:2007/05/26(土) 11:05:33
>>364
安全に終了させる汎用的な方法は無い。
WM_CLOSEで終了したとしても、それが正規な終了方法でないアプリがあるかもしれない。
結局各アプリを解析して、個別の対応を採らなければならない。
370デフォルトの名無しさん:2007/05/26(土) 11:08:36
ウィンドウクラスのとこで
winc.hIcon = LoadIcon(NULL , (LPCSTR)IDI_ICON2);
で、アイコンを指定しているのですが、何故かふきだしに i マークがついたアイコンになります。
リソースに自分で作成したICONを追加もしているのですが、何か上の式は間違ってるのでしょうか?
371デフォルトの名無しさん:2007/05/26(土) 11:18:46
>>370
MSDNで第一引数の説明を調べるんだ
372デフォルトの名無しさん:2007/05/26(土) 11:37:37
>>371
ああああありがとうございます(泣)
NULLをhInstanceにしたらアイコンが変わりました!
ぬるぬる
373デフォルトの名無しさん:2007/05/26(土) 12:07:52
ぽぽ
374デフォルトの名無しさん:2007/05/26(土) 13:26:33
>>364
GenerateConsoleCtrlEvent
375364:2007/05/26(土) 19:25:12
>>365
現在親プロセスからコマンドラインアプリケーションを起動して標準出力を拾っているのですが、親プロセスを終了したときにそのコマンドラインアプリケーションを安全に終了させたいのです

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

>>369
起動させるプロセスは限られていますので私も個別に対応したいと考えています
たとえばCOMMAND.COMならば'EXIT'を送れば終了でき、pingならばctrl-Cで終了できるはずです。
しかし前者は成功するのですが、後者は失敗しました
パイプでは制御コードを送れないってことはありませんか?
376デフォルトの名無しさん:2007/05/26(土) 19:35:47
>>364
ちょっ話変わるけど、
コンソールリダイレクトの想定先は何?
例えば、コンパイラのキッカーみたいなもの?
バッチ処理の結果を取得したい為?
377デフォルトの名無しさん:2007/05/26(土) 19:35:53
自作アプリケーションにXPスタイルを適用しつつ
一部のコントロール(ステータスバーなど)のみをXPスタイル以外ってできないのかな?
378デフォルトの名無しさん:2007/05/26(土) 20:01:01
>>377 SetWindowTheme
379355:2007/05/26(土) 20:15:21
>>356
>>357
>>358
ありがとうございます

MSDNの記述を読む限り、とても有用な機能だと思ったんですが
何でマイナーになってるんでしょうね・・・
380デフォルトの名無しさん:2007/05/26(土) 20:22:20
381デフォルトの名無しさん:2007/05/26(土) 20:27:33
>>379
自分で作らにゃならんし、メンテナンスや互換性を考えると面倒くさいからでしょ
382デフォルトの名無しさん:2007/05/26(土) 20:27:36
>>379
http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=1437677&SiteID=7
MeteredSectionってもともとはAPIじゃなくて
あるユーザーが勝手に作ったものみたい。
383デフォルトの名無しさん:2007/05/26(土) 21:04:50
>>375
>>374は無視ですか。パイプを作ってCtrl-Cを送る必要自体ないと言ってるんだけど
384デフォルトの名無しさん:2007/05/26(土) 21:13:22
>>383
心配しなくても無視されないよ。
パイプを作ってCtrl-Cを送ってもどうせ効かないから。
385デフォルトの名無しさん:2007/05/26(土) 21:32:05
逆にパイプのデータ経由で死ねるなら、
パイプはバイナリデータを送れない、という話になる
386デフォルトの名無しさん: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デフォルトの名無しさん:2007/05/27(日) 00:11:18
ども。>>364です

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

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

>>374
私が探していた方法はまさしくコレです
コマンドラインアプリケーションにもちゃんとExitProcessが標準で実装されていたんですね
プログラム側で入力シーケンスを監視してctrl-C信号を拾っているんだと思っていました
色々とありがとうございました。
389デフォルトの名無しさん:2007/05/27(日) 00:23:29
>>388
だからシグナル送れといっとるだろうが
390387:2007/05/27(日) 00:39:55
自己解決しました。
同スレッドからD&Dされると挙動不審になるみたいです。
別スレッドからなら(一見)問題ないみたいですが。
止めることにしました。
391デフォルトの名無しさん:2007/05/27(日) 02:35:12
猫でもわかるプログラミングってどこにあるんですか?
392デフォルトの名無しさん:2007/05/27(日) 02:36:22
「猫でも」でぐぐれ
393デフォルトの名無しさん: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デフォルトの名無しさん:2007/05/27(日) 10:54:49
ダイアログを、呼び出したアプリケーションのフォームの最前面に表示したいのですがどうすればよいのでしょう?
WS_EX_TOPMOSTや、SetWindowPosでHWND_TOPMOSTだと、他のアプリの前面にも出てしまいます。
あくまで呼び出したアプリの最前面にしたいのです。
396デフォルトの名無しさん:2007/05/27(日) 11:04:26
WM_OVERLAPPED & WM_CHILD & WM_POPUP
397395:2007/05/27(日) 11:10:18
失礼しました。
DialogBox関数の第3引数がうまく設定できていないのが原因でした。
お騒がせしました。
398デフォルトの名無しさん:2007/05/27(日) 11:14:09
>>394 そのSelectObjectは何かのギャグか?
399デフォルトの名無しさん:2007/05/27(日) 12:17:07
>>394
http://msdn.microsoft.com/library/ja/jpgdi/html/_win32_selectobject.asp?frame=true
> アプリケーションは、1つのビットマップを一度に複数のデバイスコンテキストで選択することはできません。
400名無し@沢村:2007/05/27(日) 12:52:00
>>399
つまり描画用のデバイスコンテキストを複数つくることはできないということですか?
ペイントソフトのアンドウリドゥとかはどうなっているんだろう?
メモリデバイスコンテキストを複数つくれば、そこにコピーして待避させておいて、簡単に実装できるんだけど…
401デフォルトの名無しさん:2007/05/27(日) 12:54:49
逆にビットマップを複数作ればいい
402名無し@沢村:2007/05/27(日) 12:58:04
私がつくりたいのは、
例えば赤と黒で画面に線を描画して、
あとから赤の線だけを消して、赤の線の下に引かれている黒い線もちゃんと復元できるようなソフトなんですけども…

黒い線と赤の線を別々のデバイスコンテキストに描画すれば簡単だと思ったんですがテ…
403デフォルトの名無しさん:2007/05/27(日) 13:13:53
操作履歴があるなら、それをもとに
「ファイルを開く」から復元できるやろうが。
404デフォルトの名無しさん: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【天王山の決戦!!】
http://wwwww.2ch.net/test/read.cgi/news4vip/1180241158/

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

レイヤーのことだろうか?
407デフォルトの名無しさん:2007/05/27(日) 16:23:17
この手のは、BitBltをパワーアップさせて、転送先や転送元に、
HDCだけじゃなくHWNDやHBITMAPも渡せるような
関数を作っておくと楽かな。
408デフォルトの名無しさん:2007/05/27(日) 18:36:53
>>402
スレ違いの回答になるが・・・・
Undo/Redoをやりたいなら、ビットマップレベルで履歴を保存するより
描画内容(座標・色・線種など)で履歴を保存するほうがいいと思うよ。
409デフォルトの名無しさん:2007/05/27(日) 18:42:42
質問です。F1を押したときにある動作をさせたいのですが、
ウィンドウプロシージャでWM_KEYDOWNでメッセージを受け取る事が出来ません。
起動した直後は出来るのですが、その後、エディットコントロールにフォーカスを移動した時とかに
メッセージを拾う事ができなくなります。エディットコントロールやボタンにフォーカスがある状態でも
メッセージを受け取るにはどうすればいいのでしょうか?
410デフォルトの名無しさん:2007/05/27(日) 18:54:56
キー関係のメッセージははフォーカスを持つウィンドウに送られる

メッセージをDispatchする前に、アクセタレータを使うなり何なりすること。
411デフォルトの名無しさん:2007/05/27(日) 18:56:55
ごめtypo
*アクセラレータ

TranslateAcceleratortとかHACCELとかのことです
412デフォルトの名無しさん: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デフォルトの名無しさん:2007/05/27(日) 20:07:28
LoadAccelerators(hInstance, MAKEINTRESOURCE(IDA_ACCEL1)); とか
TranslateAccelerator(hwnd, hAccel, &msg) 抜けとかかなーといってみる
414デフォルトの名無しさん:2007/05/27(日) 20:12:37
TranslateAcceleratorは?
あと、(LPCSTR)IDR_ACCELERATOR1よりもMAKEINTRESOURCE(IDR_ACCELERATOR1)
LOWORD(wp)よりもGET_WM_COMMAND_ID(wp, lp)お薦め
415デフォルトの名無しさん: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デフォルトの名無しさん:2007/05/27(日) 20:40:34
なんで見えない番号があるのかと思ったら
なつかしいな沢村
418デフォルトの名無しさん: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デフォルトの名無しさん:2007/05/27(日) 21:00:41
>>419
既にAPIの質問ではないと思うが
基本的な方法としては、
1、画像そのものを最初にどこかに保存しておいて
2、描画時に使ったコマンドの内容を保存しておく。 点を打った、線を引いた、円を描いたというようなね。

そして、巻き戻すときは、1から順にコマンドを再現して、一つ手前で止めればいい。
422デフォルトの名無しさん:2007/05/27(日) 21:26:41
WM_CHARメッセージで、送られてきた文字を取得することは可能なのでしょうか?
423デフォルトの名無しさん:2007/05/27(日) 21:29:18
>>422
お前が手の届く範囲にいたら殴りたい。
なんで訊く前にちょっと調べてみないわけ?
ほんの少し調べれば分かることなのに。
424デフォルトの名無しさん:2007/05/27(日) 21:37:34
本人にとって、2chで聞く=調べる、なんだろうな

お前の手の届く範囲にはディスプレイがあるだろうから代わりにそれでも殴っとけ
425デフォルトの名無しさん:2007/05/27(日) 21:52:49
いえ、質問の仕方が適当すぎました・・・。
WM_CHARのwpに入ってるっぽいのですが、その取り出し方がわかりません。
MessageBox()で表示させようと、(PTSTR)&wpにしても、文字コード取得しようとして(int)wpで見てみても
なんか全然変な値が入っててわけわかりません。
426デフォルトの名無しさん:2007/05/27(日) 22:01:52
あのさあ、ちゃんと調べてんの?
ぐぐっただけで詳しい使い方なり情報なりわんさか出てくるんだが。

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

俺も殴りたくなってきた
427デフォルトの名無しさん:2007/05/27(日) 22:02:22
殴るなら俺を殴れ
428デフォルトの名無しさん:2007/05/27(日) 22:15:19
>>419
SaveDC, RestoreDCじゃダメか?
429デフォルトの名無しさん:2007/05/27(日) 22:16:38
>>425
Cの文字の扱いをまるで理解していないと見た。
430デフォルトの名無しさん:2007/05/27(日) 22:36:50
いえ、殴るなら僕を殴って下さい。それはそのはず、入ってるわけがありませんでした。
WM_COMMANDで拾ってそのパラメータからWM_CHARの処理やってたので、
そのままWM_CHARを捕まえたような気分になってました。
431デフォルトの名無しさん:2007/05/27(日) 22:44:41
>>430
あんた誰だよ。>>425か?

名乗りもせずいきなり僕などという一人称使うな。殴るぞ
432412:2007/05/27(日) 22:57:40
>>412-415
これでF1はどこにカーソルがあっても機能するようになったのですが、
F2、F3は機能しなくなりました。F2、F3等は、あるエディットコントロール内にカーソルが
ある時のみ有効にしたくて、F1だけ特殊な感じでした。これはF2、F3とかも
アクセラレータに持っていかれてしまってるせいなのでしょうか?
433デフォルトの名無しさん:2007/05/27(日) 22:59:21
>>431
すみません、俺が悪かったです。もう名乗りません。
違う方法でなんとか解決できたのでなんとか出来ました。
434デフォルトの名無しさん:2007/05/27(日) 23:25:20
>>433
だーかーら、名乗りもせず「俺が」なんて言うな、っていってんだよ
>>430です、くらい書けよ
誰だかわからんだろう
435デフォルトの名無しさん:2007/05/27(日) 23:28:17
いえ、それは俺です。
436デフォルトの名無しさん:2007/05/27(日) 23:29:05
>>434
俺だよ俺
437デフォルトの名無しさん:2007/05/27(日) 23:34:17
だから俺が俺なんだって
勝手に人の名前騙るなよ
438デフォルトの名無しさん:2007/05/27(日) 23:36:23
>>437
すまん、お前が俺か。
悪かった。
439デフォルトの名無しさん:2007/05/27(日) 23:54:24
>>412
もしかして: WM_HELP
なんか、ID_MYHELPとか書いているし。
440412:2007/05/28(月) 00:02:55
>>439
いえ、WM_HELPではありません。まぁ同じなんですけど、
F1ボタンを押したら自分で作ったヘルプのウィンドウが出るようにしています。
それはいいんですが、F2〜F8にもその他の機能を用意していて、
あるエディットコントロールをサブクラス化してそのプロシージャで
WM_KEYDOWNで拾っているのですが、それが機能しなくなりました。
F1だけをアクセラレータで変にやったせいなのでしょうか?
441デフォルトの名無しさん:2007/05/28(月) 00:12:26
>>420
コミックスタジオでも買った方が良いぞ

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

赤い線が黒くならないようにするには、どうしたらいいのでしょう?
いくつも組み合わせがあるので、全部ためすのは、気が遠くなるほど時間がかかりそうなので…
443デフォルトの名無しさん:2007/05/28(月) 00:20:18
組み合わせとは何の組み合わせ?
444デフォルトの名無しさん:2007/05/28(月) 00:30:55
ねむい
445デフォルトの名無しさん:2007/05/28(月) 00:58:48
質問です。
CでWindowsプログラム作るため、Win32APIを学ぼうと思っていろいろ調べている途中で気になったことがあります。
テンプレのWin32 API入門というサイトではWin32API学ぶ上で、
windowsの知識とアーキテクチャの知識が必須だと書かれていました。
そこで、「コンピュータの構成と設計」「アーキテクチャ徹底解説MicrosoftWindows2000・・・」
などの書籍でコンピュータアーキテクチャについて学んだ方がいいのでしょうか?
お金に余裕がないので無駄な出費は避けたいです。
ちなみに私は、基本情報技術者試験の知識とCの入門書の知識くらいしかもっていません。
御回答よろしくお願いします。
446デフォルトの名無しさん:2007/05/28(月) 01:02:31
パソコン初心者でもなければ別に要らないと思う
447デフォルトの名無しさん:2007/05/28(月) 01:02:50
いらん
448デフォルトの名無しさん:2007/05/28(月) 01:03:19
その程度は、Win32APIを色々試しているうちに自ずと判ってくるから要らない。
449445:2007/05/28(月) 01:09:36
>>446-448
御回答ありがとうございました。
ではこのままWin32APIの学習に入ろうと思います。
450デフォルトの名無しさん:2007/05/28(月) 02:30:45
Windowsプログラムを作るためならば、APIから学ぶのは止めたほうがいい。
実際開発では窓とかはフレームワーク任せだからな。それで問題ない。
ど〜しても、変態的な非効率な開発を求めるならAPIから始めることを止めはしない。
451デフォルトの名無しさん:2007/05/28(月) 02:59:11
>>449
>>450の意見と思いっきり逆のタイトルですまんが

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

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

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

まぁ服毒本として興味があればどうぞ
452デフォルトの名無しさん: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デフォルトの名無しさん:2007/05/28(月) 06:03:28
すいません、アクセス違反じゃなくて、
GetLastError() 5 「アクセスが拒否されました。」
ってエラーです。
454デフォルトの名無しさん:2007/05/28(月) 06:31:58
開き方が悪い
455デフォルトの名無しさん:2007/05/28(月) 08:08:45
最低限必要なところのAPIくらい理解しとかんと問題が起きたときにどうにもならん
456デフォルトの名無しさん:2007/05/28(月) 08:14:01
>>442
そうか?
小さいBMPを2つ作って、
組み合わせをプレビューをすればいいんじゃない?

Photoshopとかあれば、もっと容易だけど
457デフォルトの名無しさん:2007/05/28(月) 08:44:38
>>453
偽装しておけ
458デフォルトの名無しさん:2007/05/28(月) 10:08:22
ツールバーのアイコンに指定する背景色のカラーコードって何を指定すると透過になるんですか?
459デフォルトの名無しさん:2007/05/28(月) 10:10:09
イメージリストを作るときのフラグによって異なる
460445:2007/05/28(月) 10:59:14
いろんな回答がでて、よく分からなくなってきました。
最終的にDirectX使いたいという場合はどうなのでしょう?
461デフォルトの名無しさん:2007/05/28(月) 11:04:22
DirectXとWin32API はあんまり関係ない。
API直接やDirectX直接を身に付けたいなら 参考書を買ってDelphiでやるという手がある。
API/DirectXの参考書はC/C++で書かれているから、これをC/C++のままコピペしたら
動くのは当然だけど勉強には、あんまりならん。
Delphiに直しながらやれば結構勉強になる。
462デフォルトの名無しさん:2007/05/28(月) 11:17:27
>>460
DirectX 入門

>>461
Delphiはマジ死亡しているんで知らないなら覚えるだけ無駄。
移植の問題ありまくりなのに素人に、わざわざ複雑な方法を提案してどうする馬鹿か?
463デフォルトの名無しさん:2007/05/28(月) 11:18:25
>>461
Delphiの布教乙
464デフォルトの名無しさん:2007/05/28(月) 11:22:02
>>462
  WIN32APIを今さらやるのも、Delphiやるのも同じだろう。
トータルで速い方法を説明してるだけ。
DelphiのVCLはWin32APIの非常に素直なラッパで、VCLを理解すればAPIの作法も理解出来るからね。
MFCでやるよりはずっといい。
465デフォルトの名無しさん:2007/05/28(月) 11:22:39
DirectX はコピペだけでもやること多いのに、さらに言語移植て…
466デフォルトの名無しさん:2007/05/28(月) 11:23:33
>>464
ラッパライブラリから API を学ぶのは違うようなキガス
467デフォルトの名無しさん:2007/05/28(月) 11:25:31
DirectXをやるのにDelphiを勧めるぐらいならC++Builderにしろよ
468デフォルトの名無しさん:2007/05/28(月) 11:26:14
APIって学ぶものなの?
こんなんあったよな〜ってMSDN漁って
挙動とか注意点とか調べて使うだけじゃない?
469デフォルトの名無しさん:2007/05/28(月) 11:28:00
>>468
最初の作法とイベント駆動まわり、MSDNの見方だけは 慣れとく必要がないかな?
470デフォルトの名無しさん:2007/05/28(月) 11:37:09
>>464
>WIN32APIを今さらやるのも、Delphiやるのも同じだろう。
同じじゃねーよ!
471デフォルトの名無しさん:2007/05/28(月) 11:41:58
>>465
DirectXは COMで IDispatch も持ってるから、 Delphiからだと実はVBのようにもアクセス出来る
インターフェースを定義せずに、OLEVariantでアクセス出来るわけ。
ただし遅いけど挙動を見るお試しならまあ十分
472デフォルトの名無しさん:2007/05/28(月) 11:44:46
>>460
Win32APIでWindowsプログラミングは激しく不向き。
窓一枚で100行とか書かされるからな(コピペですむにしても)。

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

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

>「コンピュータの構成と設計」「アーキテクチャ徹底解説MicrosoftWindows2000・・・」
この辺は日本語学習における日本文化の知識みたいなもんでさしあたり不要。
最低限の説明はDirectXの本に載っている程度のもので十分。
473デフォルトの名無しさん:2007/05/28(月) 12:34:07
>>471
サンプルやヘルプがC++を前提に書かれていて、
いちいち言語の違いを意識して書き直さなければならないので、
挙動を見るだけでも完全に不向き。
474デフォルトの名無しさん:2007/05/28(月) 12:37:12
>>461は自分がやった方法が一番良いと思っている可哀想な子
475デフォルトの名無しさん:2007/05/28(月) 13:02:54
>>473
質問者はC++じゃなくてCらしいから
->lpVtbl->ブフォァアな目にあうけどな
476デフォルトの名無しさん:2007/05/28(月) 13:10:43
全く別の言語を扱うより遙かにマシ。
477デフォルトの名無しさん:2007/05/28(月) 13:10:57
ぶふぉぁあ?
478デフォルトの名無しさん:2007/05/28(月) 13:18:39
>>477
次のバージョンで追加されるメソッドです
たぶん
479デフォルトの名無しさん:2007/05/28(月) 13:20:29
そうなのか、ダイレクトエッキスには日本語のメソッドがあるんだなたぶん
480デフォルトの名無しさん:2007/05/28(月) 13:53:17
COMの話だろ
481デフォルトの名無しさん:2007/05/28(月) 14:31:16
昔は、Delphiから CreateOleObject('CLSID_DirectInput') とか出来たけど DirectX8から出来なくなった
482445:2007/05/28(月) 15:23:03
ではアーキテクチャについては放置し、C++の方が楽みたいなのでそちらも覚えながら、
C++でDirectX使えることを目標にします
483デフォルトの名無しさん:2007/05/28(月) 15:27:18
DirectXならDirectXだけの世界だから大丈夫 Win32もとなると大変だけどね。

なお、言語の複雑さは C++ >>> Delphi/C#/VB > C だから覚悟はしておいてね
484デフォルトの名無しさん:2007/05/28(月) 15:46:39
C#って結構難しいよ
485デフォルトの名無しさん:2007/05/28(月) 16:15:54
>>483
>言語の複雑さは C++ >>> Delphi/C#/VB > C
C++の全てを理解しようとすればそうかもしれんが、DirectX/MFC等を使うのに必要最低限の知識でいいなら、
Cを(本当に)知ってる人なら3日もあればOKでしょう。
486デフォルトの名無しさん:2007/05/28(月) 16:21:02
言語論争ウゼェ
487デフォルトの名無しさん:2007/05/28(月) 16:33:10
>>445君へ

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

んで、気が付きゃ、君も荒くれどもの一員
488デフォルトの名無しさん: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デフォルトの名無しさん:2007/05/28(月) 19:23:24
エディットコントロールにWS_VSCROLLでついてくるスクロールバーについてですが、
このスクロールバーが一番下までスクロールされているかされていないかを判断するには
SetScrollInfo()とGetScrollInfo()を使わなければいけないのでしょうか?
なんかSetScrollInfo()で設定しても、元からあるスクロールバーのままで何も変わらず
いまいち使い方がよくわからなくて困ってます。これらを使わずに
一番下までスクロールされているかそうでないかを判断する方法はないでしょうか?
492デフォルトの名無しさん:2007/05/28(月) 19:26:43
あります
493デフォルトの名無しさん:2007/05/28(月) 19:43:45
で?
494デフォルトの名無しさん:2007/05/28(月) 19:48:07
bool 型は便利だな
495デフォルトの名無しさん:2007/05/28(月) 20:33:48
>>492
>>491の後半部分しか答えてないよ。
496デフォルトの名無しさん:2007/05/28(月) 20:42:39
全部の質問に答えたとは誰も言っていない。
497491:2007/05/28(月) 21:29:42
どのように判断すればいいのでしょうか?
498デフォルトの名無しさん:2007/05/28(月) 21:38:57
::GetScrollPos
499デフォルトの名無しさん: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デフォルトの名無しさん:2007/05/28(月) 23:12:36
教えてください。
SetClipboardViewerで画像かどうかを識別するには何を使えばいいのでしょうか?
501デフォルトの名無しさん:2007/05/28(月) 23:29:50
>>500
WM_DRAWCLIPBOARDでEnumClipboardFormats
502500:2007/05/28(月) 23:35:32
>>501
ありがとうございます。やってみます。
503デフォルトの名無しさん:2007/05/29(火) 00:02:42
自作アプリの起動時処理として、とある起動済みの(自作でない)アプリケーションのウィンドウハンドルを取得したいのですが
ウィンドウキャプションがしょっちゅう変わる上に
ウィンドウクラス名もATL:00xxxxxxといった名前でこれまたWindowsを再起動するたびに変わります

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


現在は、起動時に「対象アプリケーションをクリックしてください」と表示して
SetCapture と WindowFromPoint の組み合わせでなんとか取得してますが自動化したいのです。
504デフォルトの名無しさん:2007/05/29(火) 00:10:16
そのアプリの特徴を研究する。
505デフォルトの名無しさん:2007/05/29(火) 00:23:09
子ウィンドウを列挙してそのパターンから判別ればよかろ。
506デフォルトの名無しさん:2007/05/29(火) 00:31:55
プロセス列挙してモジュール名で判別なんてのも
507503:2007/05/29(火) 00:59:45
>>504-506
506さんの方法でやってみます。
ありがとうございました。
508デフォルトの名無しさん:2007/05/29(火) 02:03:14
>>503
FindWindowを使えばいいよ
509デフォルトの名無しさん:2007/05/29(火) 05:31:25
>>503
アプリケーションの名前が判ってるなら、
GetWindowThreadProcessIdで指定の窓のpidを取得、
pidからOpenProcessでプロセスハンドル、
プロセスハンドルからEnumProcessModulesでモジュールハンドル、
GetModuleBaseNameでアプリケーション名を取得できる。
GetModuleFileNameExでフルパス名も取得できる。
以上を見つかるまでEnumWindowsで繰り返す。

EnumProcessesから辿る場合はどうすんのかな。
510452:2007/05/29(火) 05:52:02
お願いします。
>>452
511デフォルトの名無しさん:2007/05/29(火) 06:01:19
>>510
セキュリティソフトに蹴られたりしてね?
最近のセキュリティソフトはマルウェア対策でその手のアクセスを蹴る場合がある
512デフォルトの名無しさん:2007/05/29(火) 06:12:48
あ、分かった
>>510
WTSEnumerateProcessesでプロセスのSIDが直接手に入る
OpenProcessTokenは必要ない
513452:2007/05/29(火) 06:37:47
ありがとうございます。
SID取得できたんで解決しそうです。
514489:2007/05/29(火) 06:39:32
>>499
ありがとうございます。
TabCtrl_InsertItemに変えるとうまくいきました。
515452:2007/05/29(火) 07:06:24
NETWORK SERVICE、LOCAL SERVICE共に
無事LookupAccountSidで取得できました。
516デフォルトの名無しさん:2007/05/29(火) 07:11:47
報告乙
517デフォルトの名無しさん:2007/05/29(火) 07:20:17
なんか夜明けと共に明るい声が響いてくる
518デフォルトの名無しさん:2007/05/29(火) 07:42:12
EnumWindows/EnumChildWindowsで見て特徴的な何かを探すかないんじゃないの
519デフォルトの名無しさん:2007/05/29(火) 08:20:52
>>509
それをソースコードにするとどのようになりますか?
520デフォルトの名無しさん:2007/05/29(火) 08:42:03
コンパイルすればプログラムになるだろ。
521デフォルトの名無しさん:2007/05/29(火) 11:31:32
とにかく、ウィンドウタイトルもウィンドウクラスも変わるものに対して、
何を持って特定するのだろうか。EXEファイル名だって変えられるしな。
522デフォルトの名無しさん:2007/05/29(火) 12:19:32
ファイル名が分かればファイルのチェックサムを算出できる。
523デフォルトの名無しさん:2007/05/29(火) 12:31:16
>>503
なんか、ネトゲのチートツールかなにかを作ろうとしてるように見えるwww
524デフォルトの名無しさん:2007/05/29(火) 12:56:08
ATL製ネトゲなんてあるのか・・・?
525デフォルトの名無しさん:2007/05/29(火) 14:26:51
ふとした疑問なんだけど
Win32ファイバって一体どういう用途で使うと真価を発揮できるんだろ?
526デフォルトの名無しさん:2007/05/29(火) 15:06:03
アセンブラが使えない言語でコルーチンを実装したい場合だろうな >>525
C++/Delphi はインラインアセンブラが使えるから自前でコールチンの実装が出来るから不要。
C#.NET VB.NET あたりの為に用意されたものだろう。

コルーチンは、get/put同士を接続するパイプとか
クライアント型で書かれたものをサーバ型に変換するといった場合に使う
527デフォルトの名無しさん:2007/05/29(火) 15:07:04
フィボナッチ数列を求める
528デフォルトの名無しさん: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あったら教えてください。
最終的には↓にしたいです。
http://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デフォルトの名無しさん:2007/05/29(火) 15:46:06
MultiByteToWideChar と WideCharToMultiByte
530529:2007/05/29(火) 15:50:08
具体的には、MultiByteToWideChar でSJISからunicodeにし、
WideCharToMultiByte で unicodeから UTF-8にする。
最後に、そのバイト列をsprintf とかで文字列にすればよかろう。
531デフォルトの名無しさん:2007/05/29(火) 17:40:47
#define VOID void とか #define CONST const は、どういう意味があるんですか?
532デフォルトの名無しさん:2007/05/29(火) 17:44:23
>>531
#define マクロで置き換えてるだけ。
データ型が大文字(DWORD, UINT)なんで、
大文字で揃えたかったんだけじゃね?
533デフォルトの名無しさん:2007/05/29(火) 17:48:28
>>525
使い方によっては、デコード/エンコード、画像処理なんかでも
534デフォルトの名無しさん:2007/05/29(火) 17:56:16
>>531
VOIDとかは違うが、
boolとかconstとかのキーワードはもともとのC言語には無いから、C++でもCでもtう
535デフォルトの名無しさん:2007/05/29(火) 17:59:10
const は C でもあるぜ。
まあ、全て大文字の奴を使えば、どれもどの環境でも安心! という形にしたかったんだろう。
536デフォルトの名無しさん:2007/05/29(火) 18:28:45
>>525
Unixからの移植に使えるとAdvanced Windowsには書いてあったような気がする
537デフォルトの名無しさん:2007/05/29(火) 19:13:37
>>535
最近のANSI Cにはconstがあるが、これは比較的後になって追加されたもの。
もともと、というか少なくともK&Rにはconstはなかった。
538デフォルトの名無しさん:2007/05/29(火) 19:18:44
K&R まで遡るのはアレだけど、
昔の ANSI C にすら無かったのか・・・。
539デフォルトの名無しさん:2007/05/29(火) 19:23:12
少なくとも89年のANSI Cではあったな。
540デフォルトの名無しさん:2007/05/29(火) 19:43:17
Windowsの開発が始まった頃には間違いなくあった。
541デフォルトの名無しさん:2007/05/29(火) 21:10:54
>Windows 1.0が登場したのは1985年11月18日
542デフォルトの名無しさん:2007/05/29(火) 21:26:47
>>538
gccじゃないUNIX用のコンパイラはものすごく古い仕様のままだったりするから
Win32の場合はconstが使えない可能性なんて考慮する必要すらないな
543デフォルトの名無しさん:2007/05/29(火) 22:00:31
const char *とchar const *は違うそうです。
ということはconst char const *もあり?
それぞれどう違うのか説明おねg
544デフォルトの名無しさん:2007/05/29(火) 22:03:52
const char * と char const * は同じだよ。
違うのは char * const 。
545デフォルトの名無しさん:2007/05/29(火) 22:14:17
WinAPI関係ない
C++スレとかいきなされ あるいは本屋いって入門書でも立ち読みしとけ
546デフォルトの名無しさん:2007/05/29(火) 22:22:54
>>545
この手のは意外と書籍じゃわかりやすく解説されていない気がする。
547デフォルトの名無しさん:2007/05/29(火) 22:25:26
>>546
どっちにしろスレ違い。
548デフォルトの名無しさん:2007/05/29(火) 22:29:45
CONSTとconstに関連して,コーディングスタイルについて質問です。
Windowsプログラミングで自分で関数やクラスをつくるときに,
(1)BOOL, UINT, CONSTなどのWin32用にtypedefされたものを使う
(2)bool, unsigned int, constなどのC++予約語を使う
どっちが一般的なのでしょうか?
549デフォルトの名無しさん:2007/05/29(火) 22:32:28
C++のboolとBOOLは違うんだぜ
550デフォルトの名無しさん:2007/05/29(火) 22:37:31
どう違うんだぜ?
551デフォルトの名無しさん:2007/05/29(火) 22:37:51
>>549
そもそもC++にはBOOLなんて型はない
552デフォルトの名無しさん:2007/05/29(火) 22:39:42
>>550
普通にWindows.hをインクルードしていれば、BOOLはintにtypedefされる
553デフォルトの名無しさん: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デフォルトの名無しさん:2007/05/29(火) 23:53:25
だってBOOTはtypedef int BOOL;だし‥‥
bool型とは違うのだよ。
556デフォルトの名無しさん:2007/05/30(水) 00:10:56
BOOL/boolはほかが言っているとおりなんで、残りのやつについて俺の場合
CONSTは使わず、常にconst
UINTはunsignedより文字数少ないから場合によって使う
557デフォルトの名無しさん:2007/05/30(水) 00:37:32
>>555
BOOT?
>>552
558デフォルトの名無しさん:2007/05/30(水) 00:40:54
559デフォルトの名無しさん:2007/05/30(水) 00:44:31
>>558
ちっ、先に張られたか。
560デフォルトの名無しさん:2007/05/30(水) 02:42:33
つーかBOOLもBOOTSもどーでもいいからお前らWin32APIの質問しろよ
561デフォルトの名無しさん:2007/05/30(水) 02:49:46
>>554
あれヒドいよなw
なら戻り値の型 BOOL にすんなと。
562デフォルトの名無しさん:2007/05/30(水) 02:50:05
>>560
BOOLはWin32APIの話だろうが。
563デフォルトの名無しさん:2007/05/30(水) 03:20:10
>>562
BOOLはwindef.hで定義されている単なるtypedefであり、APIではありません。
564デフォルトの名無しさん:2007/05/30(水) 04:24:21
>>563
型もAPIのうちですよ。
565デフォルトの名無しさん:2007/05/30(水) 04:31:43
Vistaで新規に追加されたAPIのリストとかってどこかにありますか?
あれば教えていただきたいです
566デフォルトの名無しさん:2007/05/30(水) 05:27:23
567デフォルトの名無しさん:2007/05/30(水) 05:53:39
>>566
うお、こんな体系化されたページあったのか
ありがとうございます
568デフォルトの名無しさん:2007/05/30(水) 09:30:24
XPで追加されたAPI一度も使ったことないどころか一つも知らんかった・・・orz
569デフォルトの名無しさん:2007/05/30(水) 10:03:53
記述漏れがあるけど参考程度にはなるな
570デフォルトの名無しさん:2007/05/30(水) 14:51:46
>>554
WM_CTRCOLOR**の戻り値とか、そもそもDialogProcとか
まあx64ではBOOLが32bitのままだもんでDialogProcの戻り値はINT_PTRに変わったけどな
571デフォルトの名無しさん:2007/05/30(水) 15:50:15
GetMessageもWin32化するときに戻り値の型をintへ変更すればよかったのに
572デフォルトの名無しさん:2007/05/30(水) 16:23:46
質問です。

あるAPLから、フルスクリーンAPLのデバイスコンテキストを
取得したいのですが、どのようにしたら実装できますでしょうか?
573デフォルトの名無しさん:2007/05/30(水) 16:39:17
GetDC(NULL)
574デフォルトの名無しさん:2007/05/30(水) 16:46:21
APL(エーピーエル)は、コンピューターのプログラミング言語の一種で、
1957年のケネス・アイバーソンによる創案に基づいた独特の表記法を用いた、
対話型インタープリター言語である。とくに配列処理に優れる。
「APL」とは、『Aプログラミング言語』(A Programming Language)の略であるが、
言語の特性から時に『配列処理言語』(Array Processing Language)と言い換えられる。
575デフォルトの名無しさん:2007/05/30(水) 16:55:20
これって、アルファベットの A を意味してるのか、
それとも冠詞の a を意味してるのか、
どっちなんだろ?
和訳は前者を採用してるみたいだけど、
訳の都合かもしれないし。
576デフォルトの名無しさん:2007/05/30(水) 17:01:20
>>575
double meaningじゃないのかな。
と、適当なことを言ってみる。
577デフォルトの名無しさん:2007/05/30(水) 18:00:53
ごめん素で分からんのだが、APLって何
578デフォルトの名無しさん:2007/05/30(水) 18:06:57
APL知らんのか。言語だよ
キーボードが特殊だった。まあ普通のキーボードでなんとかなるが
579デフォルトの名無しさん:2007/05/30(水) 18:07:50
APLって遅延評価を積極的に使った言語だったよね
16ビットの鈍足マシンで巨大な配列を使っても結構速く結果が出た
580デフォルトの名無しさん:2007/05/30(水) 18:58:42
冠詞の a で始まる固有名詞は見たことない
581デフォルトの名無しさん:2007/05/30(水) 19:14:17
>>580
>>574で見ているはずだ
582デフォルトの名無しさん:2007/05/30(水) 21:25:35
ある Windows マシン上の動画ファイルを、
別の Windows マシンからストリーミング再生で表示したいです。
DirectShow + HTTP サーバーを使えば簡単にできそうですが、
動画ファイルを全部ダウンロードすることなく、
動画の特定の時刻からすぐにストリーミング再生することは可能でしょうか?
583デフォルトの名無しさん:2007/05/30(水) 21:37:58
ネットワーク共有+プレイヤーで好きな位置にシーク
APIと全然関係ない
584デフォルトの名無しさん:2007/05/30(水) 21:43:50
ネットワーク共有したくない場合は?
585デフォルトの名無しさん:2007/05/30(水) 21:50:20
なにワガママ言ってるんだ?
586ららら:2007/05/30(水) 21:51:34
ワガママじゃなくて、途中から再生できるようなプレーヤーを作りたいのら。
ネットワーク共有みたいな、面倒な設定はユーザーにさせたくないのら。
587デフォルトの名無しさん:2007/05/30(水) 21:51:55
>>584
したくないというキモチをガマンする
588ららら:2007/05/30(水) 21:52:20
ガマンできないのらー!
589デフォルトの名無しさん:2007/05/30(水) 21:57:16
ユーザにわざわざデフォルトの機能以外を使わせて、サーバソフトを用意させるのか?
なんてワガママな奴だ。
590ららら:2007/05/30(水) 22:02:42
ちがうのら!
動画ファイルはLAN内じゃなくて、インターネット上にあるのら。
サーバーはインターネット上のホストら!
591デフォルトの名無しさん:2007/05/30(水) 22:07:51
インターネット上経由だろうがネットワーク共有できる。
ユーザに負担をかけたくないならUPnPにでもしておけ。
592ららら:2007/05/30(水) 22:10:44
セキュリティは大丈夫なのか?
593デフォルトの名無しさん:2007/05/30(水) 22:13:03
それはお前のコード次第
594デフォルトの名無しさん:2007/05/30(水) 22:14:10
馬鹿が自作したソフトを外部公開するのは大丈夫なのか?
595デフォルトの名無しさん:2007/05/30(水) 22:17:34
ストリーミングだろうがファイル共有だろうが
インデックスでも作らない限り
キャッシュ無しで指定時間からの動画再生開始は不可能だろ
596ららら:2007/05/30(水) 22:17:56
わぅー・・・・
597デフォルトの名無しさん:2007/05/30(水) 22:26:31
気持ち悪すぎワロタw
598デフォルトの名無しさん: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デフォルトの名無しさん:2007/05/30(水) 22:46:41
不正はやめましょう。
600デフォルトの名無しさん:2007/05/30(水) 22:55:38
素直にUWSCで組みましょう
601デフォルトの名無しさん:2007/05/30(水) 23:00:05
低スキルチーターがあらわれた!
602デフォルトの名無しさん:2007/05/30(水) 23:02:55
じーんせいはワンツーパンティー
603デフォルトの名無しさん:2007/05/30(水) 23:14:21
>>582
Windows Media Server 買ってら…
ってかマジレスするとストリーミングサーバとクライアント
を実装するってって話になっちゃうのだけれどそうなると
Win32API 1つ2つだけの話じゃすまないのでもはやスレ違い…
604デフォルトの名無しさん:2007/05/31(木) 15:23:20
>>579
漏れの完璧で確かな記憶によれば、APL に遅延評価は無かったと思うよ。
605デフォルトの名無しさん:2007/05/31(木) 15:26:42
>>582
実際にそういうソリューションあるわけだから、自前でコードを書いて
「出来ない」なんて返事はあり得ないよね。

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

市販品のストリーミングシンク/ソースフィルタとかを買えば別だけど。
606デフォルトの名無しさん:2007/05/31(木) 15:32:57 BE:139752689-2BP(222)
607デフォルトの名無しさん:2007/05/31(木) 15:47:14
Windows Home Server機がAppleTV並みの値段とサイズで出るといいんだが
608デフォルトの名無しさん:2007/05/31(木) 23:30:13
609デフォルトの名無しさん:2007/06/01(金) 00:06:19
>>608
英語版の最新があれば十分だと思う。同じバージョンの日本語版っていうのであれば使おうと思うけどね。
610デフォルトの名無しさん:2007/06/01(金) 00:27:56
>>608
どうみてもAPIまわりは日本語化されてない予感
611デフォルトの名無しさん:2007/06/01(金) 01:00:04
サンプルプログラムのバグを報告してもなかなか修正されねぇよーって中の人が言ってたから、
日本語版では修正されてっかもね。
612デフォルトの名無しさん:2007/06/01(金) 01:00:49
今まさに英語版入れた所なんだよな……。
.NET まわりのドキュメントの日本語化は欲しいところだが API まわりは英語で構わんし。

異言語版SDK の共存って可能なんすか?
613デフォルトの名無しさん:2007/06/01(金) 06:05:41
>日本語版 Windows SDK をインストールする前に、英語版 Windows SDK をアンインストールしておく必要があります。
って書いてるよ
614デフォルトの名無しさん:2007/06/01(金) 06:49:53
>>610
統合前のPlatform SDKも英語版しかなかったからねえ
615デフォルトの名無しさん:2007/06/01(金) 07:26:12
>>613
あら。すんません読んでませんでした。

ならまあいいか別に英語版で
616デフォルトの名無しさん:2007/06/01(金) 09:35:37
ドキュメントの一部が日本語なだけじゃないのか
昨日ダウンロード始めたまま寝てしまったが、、、
今夜入れてみるか、、、MSDN待てばいいだけだが。
617デフォルトの名無しさん:2007/06/01(金) 16:25:42
Ctrl+Alt+Delを禁止するのに今までGINAを使ってたんだけど、Vistaになってどうしたらいいやら・・・
Credential Providerにも同じような機能は用意されてるんだろうか?
メソッド一覧を見た感じでは無さそう・・・
618デフォルトの名無しさん:2007/06/01(金) 16:51:15
>>609
>同じバージョンの日本語版っていうのであれば使おうと思うけどね。

同じバージョンの日本語版なわけだけど、ホントに使おうと思う?
619デフォルトの名無しさん: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が来ます。

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

どこが悪いのかお気づきの方お教え下さい。
620デフォルトの名無しさん:2007/06/01(金) 18:31:06
>>619
>(2)InternetConnect( Open, server, port, NULL, NULL, INTERNET_SERVICE_HTTP, 0, this )
Portはなぬ?
621619:2007/06/01(金) 18:41:32
>>620
可変ですが現在は0x1bb(443)でやっております。
よろしくお願い致します。
622デフォルトの名無しさん:2007/06/01(金) 18:55:46
>>621
開発環境と、想定IEはなぬ?
623デフォルトの名無しさん:2007/06/01(金) 19:31:54
INTERNET_FLAG_RELOAD | INTERNET_FLAG_SECURE | INTERNET_FLAG_NO_UI | INTERNET_FLAG_KEEP_CONNECTION
624デフォルトの名無しさん: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デフォルトの名無しさん:2007/06/01(金) 22:49:41
関連無いけどこっちもwininetの質問
httpQueryInfoを同じアプリケーション内で繰り返し呼ぶと、
abnormal tarminationとかいうエラーがでるようなのですが
原因となりえるものってどんなことがあるでしょうか?


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

HTTP_QUERY_DATE|HTTP_QUERY_FLAG_SYSTEMTIMEをフラグにして、
SYSTEMTIME変数のポインタを渡してます。
626デフォルトの名無しさん:2007/06/01(金) 23:47:24
>>625
エスパーな俺が一言。
wininet系関数は直接の要因じゃない。

配列やアロケート、Open/Closeを良く調べてみ?
あと、HDDキツキツじゃね?
627デフォルトの名無しさん:2007/06/02(土) 00:21:32
そうさ!
俺がルールだ!!
628デフォルトの名無しさん:2007/06/02(土) 00:54:04
ソーサ ヨミウリ
629デフォルトの名無しさん:2007/06/02(土) 14:57:01
SetParentで親ウインドを設定した場合、親ウインドと子ウインドのUIステータスを同期させろ
ってMSDNのSetParentの説明に書いてあるんですけど、
UIステータスってなんですか?
具体的にどういう処理をすればいいのですか?
630625:2007/06/02(土) 15:08:12
どうやらサーバーが重くてヘッダーが
取得できてないようです。

httpSendRequestは成功してるんだけどなぁ。
631デフォルトの名無しさん:2007/06/02(土) 15:17:32
632デフォルトの名無しさん:2007/06/02(土) 15:41:07
>>630
乱発(?)した後、ハンドルやアロケートは的確に開放されてる?
特に、失敗パターンは見落としやすいからね。
633デフォルトの名無しさん:2007/06/02(土) 18:13:09
OSが動作している環境がマルチコアかどうか判定する方法を教えてください
634デフォルトの名無しさん:2007/06/02(土) 18:29:37
デュアルやクアッドCPUじゃなくてマルチコアなのか
635デフォルトの名無しさん:2007/06/02(土) 18:31:46
カーネルに聞け
636デフォルトの名無しさん:2007/06/02(土) 18:36:52
WMIでWin32_Processorあたりかな?
HT対応のCPUに関してはGetEnumerator()で例外が発生するかもね。
searcher.Get()の結果がヌルポかどうかで判定しないといけないかもよ。
637636:2007/06/02(土) 18:37:41
638デフォルトの名無しさん:2007/06/02(土) 18:37:43
kernel32.dll に聞くAPIはほとんどすべて、結果的にカーネルに聞いているのではないの?
639636:2007/06/02(土) 18:40:57
http://msdn2.microsoft.com/en-us/library/Aa394102.aspx

Win32_ComputerSystemクラスも見るべきか?
640デフォルトの名無しさん:2007/06/02(土) 18:46:58
>>634
デュアルもクアッドもマルチコアではないのですか?

>>636
うう、WMIですか。
Win32API SDKでは取得できないのかな。
ありがとうざいます。
641デフォルトの名無しさん:2007/06/02(土) 18:50:05
COMベースってキモイよね
複雑性上げて何したいのかワカラン
642デフォルトの名無しさん:2007/06/02(土) 18:52:55
>>640
そういう場合は普通マルチプロセッサって言わないか?
マルチコアだと「1つのパッケージに複数のCPU」という意味に使われると思うけど。
643デフォルトの名無しさん:2007/06/02(土) 18:53:07
>>640
デュアルコアとデュアルCPUは違うぞ?
644636:2007/06/02(土) 18:54:09
>>641
C側からは、儀式的に感じるよね。
憂鬱なカンヂや
645デフォルトの名無しさん:2007/06/02(土) 18:58:28
GetSystemInfoでプロセッサ数は得られるが
物理的なプロセッサ数なのか論理的なプロセッサ数なのかは知らん。
646636:2007/06/02(土) 19:11:08
最近はGetLogicalProcessorInformationって関数もあるのね
647デフォルトの名無しさん:2007/06/02(土) 19:25:28
便乗で質問です
複数プロセッサに割り当てられてる各プロセッサ毎の
スレッドIDを知りたいのですが、できるでしょうか?
648デフォルトの名無しさん:2007/06/02(土) 19:33:38
今その瞬間に、実際に動いているところの、
他のプロセッサで走っているスレッドIDを知りたいの?
649デフォルトの名無しさん:2007/06/02(土) 19:33:47
GetThreadAffinityMaskでできるみたいですにゃ
650デフォルトの名無しさん:2007/06/02(土) 19:38:23
>>649
すげえ
初めて叱咤
あんた最強ですぅ

Set〜から辿らないとぐぐってもmsdnに引っかからないね
651デフォルトの名無しさん:2007/06/02(土) 19:46:56
え、GetThreadAffinityMaskってなくない?
kernel32.dll直接見てもなかったよ
652デフォルトの名無しさん:2007/06/02(土) 19:51:37
嘘ついたにゃ
SetThreadIdealProcessorを1回空呼びして
プロセッサが指定されてるか調べればいいにゃ
653デフォルトの名無しさん:2007/06/02(土) 20:01:07
てめえ!
嘘つきやがって、悪い子だな!
つーか優先プロセッサが判るだけで
ほんとにそのプロセサで動いてる証拠なんてねーんじゃねえかぁ?
654デフォルトの名無しさん:2007/06/03(日) 03:07:37
共有フォルダへのアクセスの認証をプログラムで制御したいのですが、
使用するAPI関数を教えてもらえないでしょうか。
net useコマンドのようなことがしたいです。
ドメイン名とユーザとパスワードを指定して、共有フォルダにアクセス
できるようにしたいです。
655デフォルトの名無しさん:2007/06/03(日) 04:07:11
>>654です。事故解決しました。
WNetAddConnection3を試してみます。
656デフォルトの名無しさん:2007/06/03(日) 08:34:11
>>654-655
夜は寝ようよw
657デフォルトの名無しさん:2007/06/03(日) 11:53:54
[SECTION]
IDENT=VALUE
IDENT2=VALUE2
というINIファイルで、IDENT=VALUEの行だけを消滅せしめる関数ってないですか?
658デフォルトの名無しさん:2007/06/03(日) 12:10:26
txtで読んで消す
659デフォルトの名無しさん:2007/06/03(日) 12:12:20
>>657
WritePrivateProfileString()
lpStringにNULLを渡す
660647:2007/06/03(日) 13:21:26
自己解決しました。
661デフォルトの名無しさん:2007/06/03(日) 14:09:42
OutputDebugStringの出力を受け取って表示するツールを探しています。
コマンドライン型のものでできればpidかプロセス名でフィルタをかけられるものはないでしょうか。
662デフォルトの名無しさん:2007/06/03(日) 14:15:40
そのぐらい自分で作れよ。
663デフォルトの名無しさん:2007/06/03(日) 17:33:21
DBGMONってのがあるけど
ノートンか何かの影響か何も表示できないw
確実にOutputDebugStringが追えるのはMSDNのlodprof32だけ。
664デフォルトの名無しさん:2007/06/03(日) 18:27:33
665デフォルトの名無しさん:2007/06/03(日) 18:34:24
それGUIやんけ
666デフォルトの名無しさん:2007/06/03(日) 22:00:04
シェアウェアで何かあった気がするな。
667デフォルトの名無しさん:2007/06/03(日) 23:14:57
サンプルソースにあるんだから、好みで作ればいい
668デフォルトの名無しさん: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デフォルトの名無しさん:2007/06/04(月) 00:50:55
> このwarningを消す方法として
警告が出てるって事は、lstrlen とか strlen とか古い文字列関数が他に使われてるってことだべ?

全部置き換えれ。
670デフォルトの名無しさん:2007/06/04(月) 00:54:52
http://ir9.jp/prog/ayu/strsafe.htm
> そんな時は STRSAFE_NO_DEPRECATE を、#include <strsafe.h> の前に定義してあげると、
> 従来の関数も同時に使用できるようになります
671デフォルトの名無しさん: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デフォルトの名無しさん:2007/06/04(月) 03:10:38
何か勘違いしてるんじゃない?
そのWarningが、どの関数で出たのか、もう一度よーくチェックしてごらん
つーか、ソース貼ればいいのに・・・
673デフォルトの名無しさん:2007/06/04(月) 03:52:45
>>671
strsafe.h って何者か、ちゃんと分かって使ってる?
その前に、警告メッセージちゃんと読んでる??

メッセージの内容そのまま、*_s 系の関数使えばいいだけじゃないの?
674デフォルトの名無しさん:2007/06/04(月) 04:21:07
sprintf周りが抜けてるんだろうなあ
675デフォルトの名無しさん:2007/06/04(月) 08:20:54
>>671
それ<strsafe.h>関係ない

Visual C++ 2005のCRTのセキュリティ強化 
http://msdn2.microsoft.com/ja-jp/library/8ef0s5kh(VS.80).aspx
CRT関数のセキュリティが強化されたバージョン 
http://msdn2.microsoft.com/ja-jp/library/wd3wzwts(VS.80).aspx
676デフォルトの名無しさん:2007/06/04(月) 10:25:48
>>671
Warningに書いてあるやんけ。おまいの目は尻に付いてるのか?
677デフォルトの名無しさん:2007/06/04(月) 10:38:22
metokoumon
678デフォルトの名無しさん:2007/06/04(月) 11:04:05
>>676
フォーラムにもそれ風なことがあったお
http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=1512292&SiteID=7
679619:2007/06/04(月) 15:17:29
お返事が遅くなりまして申し訳ございません。
今までの環境が使えなくなったので別環境に移ったところ、
(4)でFALSE, その後のGetLastError()でERROR_IO_PENDINGとなりました。

>>622
VisutalStudio2003, IE6.0となります。

>>623
これにしてみましたが変化はありません

以上、恐れ入りますがよろしくお願い致します
680619:2007/06/04(月) 15:19:31
>今までの環境が使えなくなったので別環境に移ったところ、
>(4)でFALSE, その後のGetLastError()でERROR_IO_PENDINGとなりました。

これは元からのようでした・・・大変失礼いたしました
681デフォルトの名無しさん:2007/06/04(月) 17:16:39
>>680
>今までの環境が使えなくなったので別環境に移ったところ、
>(4)でFALSE, その後のGetLastError()でERROR_IO_PENDINGとなりました。

ちなみに、非同期側の処理(スレッド)とか、うまく終了してる?
開放してないフローとか考えられない?
682デフォルトの名無しさん:2007/06/04(月) 18:28:52
Vistaでログオン直後に画面にかぶさってる「ようこそ」とか「デスクトップの準備をしています...」の画面が
消えるタイミングって何らかの方法で取得できるんでしょうか?
スタートアップに登録するアプリのスプラッシュ画面が見事に隠されてしまって何とかしたいんですが・・・
683デフォルトの名無しさん:2007/06/04(月) 18:37:34
作者のオナニーなんて見たくないからいらんモノを出すな。
684デフォルトの名無しさん:2007/06/04(月) 18:38:23
>>682
とうぜんシェル(エクスプローラ、、、タスクバーね)が起動するから
それを監視しては?
685デフォルトの名無しさん:2007/06/04(月) 18:42:17
もちろんそこでスプラッシュを出すにしても、
やるべきことは、それ以前に終わらせておけよ
686682:2007/06/04(月) 19:13:32
事故レス。
LogonUI.exeが存在しているかを判定することで一応解決。
正確にはスプラッシュではなく、飾りとかじゃなくて表示が必須というものだった次第。

>>684
基本的にそういうものの起動が裏で行われている状態なのでそっちの監視だと不可。
687デフォルトの名無しさん:2007/06/04(月) 19:35:01
あほだなあ
ウィンドウが可視状態かみてればいいのに
688デフォルトの名無しさん:2007/06/04(月) 19:49:30
>>687
686じゃないが、あの状態ってウィンドウステーションかデスクトップも別物になってないか?
列挙かけてみたことあるけどどうも検索不可属性が付いてるのが出てこなかったが・・・

ということでWindowFromPointとかIsWindowVisibleからの切り込みはダメっぽいよ
689688:2007/06/04(月) 19:51:00
×付いてるのが
○付いてるのか

ちなみにOpenInputDesktopでも普通にwinsta0\defaultになってた。
690668:2007/06/04(月) 20:52:02
わふ。とりあえずソース貼ってなかったのがダメすぎたっぽいので貼ります。すみません。
http://s-io.net/up/1/_/jump/1180957523712070.8VJMzU
pass: API

Warningは読んでいますし、提示してくださったリンクは(ありがとうございます)既に全て目を通していましたし、
目も尻にはついていません。
#節穴かもしれませんし、脳みそはスポンジかもしれませんが……

トラブルの内容としては>>678と一緒だとは思うのですが、最新のDirectXのstrsafeで発生する(PlatformSDKでは発生しない)ことから、
PlatformSDKのバージョンを上げる、というのも解決策にはならないみたいです。

#Warningの詳細やらソースコードやら貼らずに分かりにくい説明していて本当に申し訳ないです。でも、DirectXのstrsafeでコンパイルせずに、warningなんて出ないじゃないかボケ、というのは勘弁してください。
691デフォルトの名無しさん:2007/06/04(月) 23:27:41
WebサーバからSSL証明書をダウンロードして検証したいと思います。

(1)WebサーバからSSL証明書をダウンロードする
(2)それを検証する

といったようなAPIは無いでしょうか?
692デフォルトの名無しさん:2007/06/04(月) 23:28:40
ありません
693デフォルトの名無しさん:2007/06/04(月) 23:39:16
CryptoAPIがとっても面倒だった記憶があるけど。
694デフォルトの名無しさん:2007/06/04(月) 23:42:09
>>690
だから、673,675が書いてくれた事が正解なんだって。
strsafeってのが何の役割を果たすかを理解しる。

どーせ/GS入れてるんだろw。
695デフォルトの名無しさん: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デフォルトの名無しさん:2007/06/05(火) 01:36:39
じゃstd::stringという事で
697デフォルトの名無しさん:2007/06/05(火) 01:55:52
速度でないじゃん
698デフォルトの名無しさん:2007/06/05(火) 01:57:23
文字列操作はコストが高いんだから、速度が欲しけりゃ自前でやるんだな。
699668:2007/06/05(火) 02:06:53
うー。了解です。この構成でWarning消すとか、無駄なところに労力注ぐの止めて、別の構成にすることにします。
アドバイスをくれた皆様、どうもありがとうございました。
#学習が第一義なので、とりあえずこれでこの問題はオシマイですけれど……

>>696-697
……一応std::string版のコードも書いちゃったのですけれどね。
700デフォルトの名無しさん:2007/06/05(火) 07:53:33
jpegのファイルサイズを先頭500バイトあたりで知ることは
できますか?
701デフォルトの名無しさん:2007/06/05(火) 07:58:13
ファイルサイズなら GetFileSize なりなんなりで。
702デフォルトの名無しさん:2007/06/05(火) 08:00:29
失礼しました。ファイルサイズじゃなくて、ストリームで呼んでいるときの
jpegのサイズです。
703デフォルトの名無しさん:2007/06/05(火) 08:03:45
JPEG フォーマット
http://siisise.net/jpeg.html
704デフォルトの名無しさん:2007/06/05(火) 08:07:38
JPEGフォーマットの詳細を聞いているのではなく、先頭500バイト
あたりまでよんで、サイズを確定可能かが知りたいです。
705デフォルトの名無しさん:2007/06/05(火) 08:13:56
フォーマットの詳細を見て自分のやりたいことが出来るか判断しろよ。
706デフォルトの名無しさん:2007/06/05(火) 08:42:42
わからない人、答えたくない人は黙ってくれてればいいです。
707デフォルトの名無しさん:2007/06/05(火) 09:36:14
無理だよ
708デフォルトの名無しさん:2007/06/05(火) 09:46:48
そもそもWinAPIと無関係。
709デフォルトの名無しさん:2007/06/05(火) 09:53:54
>>704
正直に言えよ、そのリンク先では難しすぎて自分ではわかりませんでした、と
710デフォルトの名無しさん:2007/06/05(火) 10:40:45
>>704
結論:不可能
理由:可変長レコード(500バイト以上もおk)があるため
711デフォルトの名無しさん:2007/06/05(火) 10:42:58
>>704 釣り乙
712デフォルトの名無しさん:2007/06/05(火) 10:48:28
>>704
結論:不可能
理由:あなたは、まだ、その域に達していない
713デフォルトの名無しさん:2007/06/05(火) 10:57:49
だな、たとえ可能でもお前には無理
714デフォルトの名無しさん:2007/06/05(火) 11:03:34
起動中のIEのスクロールバーの情報(最大値や最小値、現在の位置)をWin32APIで取得する方法ってありませんか。
GetScrollPosやGetScrollRangeで取得できないようなので、それ以外の方法で取得する方法はあるのでしょうか。
715デフォルトの名無しさん:2007/06/05(火) 11:14:19
>>714
取得出来ないようなのでってお前・・・。出来るよ普通に。
716デフォルトの名無しさん:2007/06/05(火) 11:17:33
>>702
ストリームで何を呼んでるの?
jpegをハンドリングする関数か何か?
だとしたら、そいつがサイズを知っているんじゃないの?
717デフォルトの名無しさん:2007/06/05(火) 11:18:42
>>710>>711
不可能じゃないっしょ。jpegデータが500バイト以下なら。
718714:2007/06/05(火) 11:19:46
>>715
マジデスカ。
IEのHWNDとSB_VERTをGetScrollPosに渡せば取得できるということですよね?
719デフォルトの名無しさん:2007/06/05(火) 11:22:19
>>718
お前の脳味噌には親ウインドウとか子ウインドウとかの概念はないのか?
720デフォルトの名無しさん:2007/06/05(火) 11:26:47
次は子ウィンドウのハンドルの取得方法でも聞いてくるかな
721714:2007/06/05(火) 11:26:54
>>719
InternetExplorer_ServerクラスのHWNDを指定してGetScrollPosを呼び出しても取得できないのですが、指定先が間違っていますかね?
722デフォルトの名無しさん:2007/06/05(火) 11:31:27
>>721
お前は人の話を聞いているふりだけして、実際は何も聞かないタイプだろ。
723714:2007/06/05(火) 11:34:16
>>722
えぇ。確かにそういう人間かもしれません。
724デフォルトの名無しさん:2007/06/05(火) 11:57:22
>>722
そういう人間、俺の周りにもわんさか要るわww
725デフォルトの名無しさん:2007/06/05(火) 11:59:06
自分のことかな?と最近気づいた
726デフォルトの名無しさん:2007/06/05(火) 12:01:34
居るわ
727デフォルトの名無しさん:2007/06/05(火) 12:22:39
>>717
マーカーを読みつつパースしながら、運良く APP0 が捕まれば確定&読み込み終了
読み込みバイト数が 500 を超えたら未確定終了
こうするしかないよねぇ
728デフォルトの名無しさん:2007/06/05(火) 12:30:08
一応書いてやってみるが
IEブラウザコントロールのスクロールバーはウィンドウ本体の付属オブジェクトじゃなくて子ウィンドウなんだな?
729デフォルトの名無しさん:2007/06/05(火) 12:37:32
IEのバージョンは?
730714:2007/06/05(火) 12:50:13
>>728
ありがとうございます。
私は子ウインドウだと認識しています。

>>729
IE6です。

COMを使えば比較的簡単に実現可能なのですが、事情により今回はCOMなしで実現したいと思っています。
731デフォルトの名無しさん:2007/06/05(火) 12:55:10
DeviceCapabilitiesで特定のプリンタ名を渡したときだけ動作をしないような。。。

ネットワークプリンタで「マシン名\プリンタ共有名」の場合は動くのだが、
「自動 プリンタ名(マシン名 上)」というプリンタ名を渡したときは動作をしない。

名前がおかしいのかなぁ。。。
732デフォルトの名無しさん:2007/06/05(火) 15:09:48
>>731
kwsk
733デフォルトの名無しさん:2007/06/05(火) 16:06:23
DVD-RAMからタスクトレイに常駐するアプリを起動。
DVD-RAMを取り出す。
XPを終了。

DVD-RAM入れろって出るんですけど、起動元のEXEファイルが無くても、
何も出さずにXPを終了させる方法ってありますか?
734デフォルトの名無しさん:2007/06/05(火) 16:08:08
>>733
ファイルコピー
735デフォルトの名無しさん:2007/06/05(火) 16:35:50
リンカオプションで「メディア抜いても起動を続けられるようにする」ってのはあるけど、
どっちみちWindows再起動されたらだめぽ
736733:2007/06/05(火) 16:54:21
>>734
ファイルコピーしないでやりたいのですけど。

>>735
そんなのあるんですか。 再起動時はEXEは起動してなくて構わないので。
それで出来そうです。 ありがとうございました。
ちょっと733は判りにくくて申し訳なかったです。
「XPを終了させようとすると、DVD-RAMを入れろって出ますです。」
737デフォルトの名無しさん:2007/06/05(火) 17:01:28
/SWAPRUN:CD か。
738デフォルトの名無しさん: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デフォルトの名無しさん:2007/06/05(火) 21:23:41
2回に1回は確実にそういう順番ではなく、大体の割合です。-1が2回続けて返ることもあれば、
通常の値が2回続けて、返ることもあります。ただ、ゆっくりと入力すれば必ず-1と正常な値が交互に返ってきます。
一体何が起きているのかさっぱり分かりません。助けてくだしあ・・・
740デフォルトの名無しさん:2007/06/05(火) 21:32:48
ちなみに今調べてみたところ、どうやらhEditというコントロールにおいてだけこのような現象が起きています。
hEditは、あるエディットコントロールに文字が入力された場合、そのエディットコントロールの文字を表示するといった動作をします。
表示はGetWindowTextとSetWindowTextで行われます。もしかしたらSetWindowTextで再描画する瞬間に
EM_LINEINDEXで行数を調べてるから-1が返って来てるのかな?とか思って排他制御したのですが、やはり-1が返ってきます。
というか、デッドロックも起きたり起きなかったり。
741デフォルトの名無しさん:2007/06/05(火) 21:34:02
ひとつのファイルを、二つのプロセスからMoveFile()で、名前を変更しようとします。

プロセスA -> MoveFile("hoge", "XXX")
プロセスB -> MoveFile("hoge", "YYY")

当然片方のプロセスは失敗すると思ったのだけど、両方リターン値が成功で帰ってくるときがあります。
(リターン値が成功で帰ってくるけど、実際は片方は失敗してる)

二つのプロセスで、ひとつのファイルを取り合うのにこういう方法って、使えないんですかね?
それとも、コードの書き方がどこかおかしいとか。

742デフォルトの名無しさん:2007/06/05(火) 21:45:30
質問です。あるエディットコントロール内で例えば、"aaaaaaaaaaaあああああああああ"と入力します。
すると、ある程度の長さになると"a"と"あ"の間で改行されます(実際は\nは入っていなくて、表示上改行されてるだけ)。
これは仕様なのでしょうか?このように勝手に改行されないようにするにはどうすればいいのでしょうか?
743デフォルトの名無しさん:2007/06/05(火) 21:48:36
WM_なんとか
744デフォルトの名無しさん:2007/06/05(火) 21:52:16
>>742
英単語の途中で改行されないようになっている。
EM_SETWORDBREAKPROCでコールバック関数を登録すれば
自分で好きなように変更可能。
745デフォルトの名無しさん:2007/06/05(火) 22:16:10
>>741
プロセスAのMoveFileが完了する前に、
プロセスBのMoveFileが走るんでしょ?

Mutexを使って管理すればいいんじゃない?
746デフォルトの名無しさん:2007/06/05(火) 22:17:37
>>738-740
ソースあげ
747デフォルトの名無しさん:2007/06/05(火) 22:18:11
>>744
ありがとうございます。とりあえずエディットコントロールは複数あるのですが、
そのうちの一つは自動で改行されないようになりました。全てのエディットコントロールで
自動改行をされないようにするには、全てのエディットコントロールをサブクラス化して
WM_CHARを捕まえないといけないのでしょうか?
748デフォルトの名無しさん:2007/06/05(火) 22:19:17
>>746
1500行くらいあるので要点を簡略化してUPします。
その作業をするのでもう少し待ってください。
749デフォルトの名無しさん:2007/06/05(火) 22:30:19
簡略化したら治っちゃたりするんだなーこれが
750デフォルトの名無しさん:2007/06/05(火) 22:41:43
>>742
スクロールバーつければいいだけかも
751デフォルトの名無しさん:2007/06/05(火) 23:04:20
>>749
簡略化してる途中に治りました。原因は、等幅フォントを使用してないことにありました。
3行目までの文字をカウントし、2行+1バイトを他のエディットコントロールに送っていたのですが、
時々2行しか送られない事があるせいで-1が返ってきてたようです。2行+5バイトくらいにしたら正常に動作しました。

>>750
インターフェイスの仕様上、スクロールバーはつけないようにしています。
そのせいでエラーの原因に気付きにくい状態が生まれてしまったのですが・・・。
752749:2007/06/05(火) 23:11:45
>>751
だろw
753デフォルトの名無しさん:2007/06/05(火) 23:14:18
>>751
バカスw
754749:2007/06/06(水) 00:03:36
ま、早とちりは誰にでもある。
元気だせw
755747:2007/06/06(水) 00:15:21
どうやらWM_CHARの時にいちいちSendMessageしなくても、
WM_CREATEの時に一回SendMessageするだけでいいみたいですね。
随分時間を取られてしまった・・・orz
756デフォルトの名無しさん:2007/06/06(水) 05:37:31
IWebBrowser2::Navigate2で存在しないURLに移動しようとしたときに
'xxx'が見つかりません。パスまたはインターネット アドレスが正しいかどうかを確認してください。
というエラーのメッセージボックスが出ます。これを抑制する方法はないでしょうか。
このメッセージボックスはDWebBrowserEvents2::OnBeforeNavigate2が呼びだされる前に出て来ます。
757デフォルトの名無しさん:2007/06/06(水) 05:59:31
なぜ存在しないURLに行きたいの
758デフォルトの名無しさん:2007/06/06(水) 06:11:12
ウインドウズマシンって、
目覚まし時計みたいに、あらかじめ決められた時間に起動するように設定するとかってできるのですか?
それと、usbバスに今、抜き差しが行われたって情報を確認することってできるのでしょうか?
それは原理的に無理なのでしょうか?
759デフォルトの名無しさん:2007/06/06(水) 06:28:49
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail.php?qid=119795641
一つ目の質問は調べたら分かってのでいいです。
スンマソン。
760デフォルトの名無しさん:2007/06/06(水) 06:39:49
>>757
移動できない時に代替処理をしたいのですが、
イベント通知や関数から戻るより先に強制的にメッセージボックスが出ているのが困るのです。
761デフォルトの名無しさん:2007/06/06(水) 08:11:46
移動する前に存在するか調べればいい
762デフォルトの名無しさん:2007/06/06(水) 08:25:41
>>756
IWebBrowser2::SilentにVARIANT_TRUEは?
763デフォルトの名無しさん:2007/06/06(水) 09:42:44
>>758
RegisterDeviceNotification
764デフォルトの名無しさん:2007/06/06(水) 09:44:27
>目覚まし時計みたいに、あらかじめ決められた時間に起動するように設定するとかってできるのですか?
コンパネ-タスク or at
765デフォルトの名無しさん:2007/06/06(水) 10:45:08
>>763
>>764
ありがトン。
766デフォルトの名無しさん:2007/06/06(水) 10:59:54
OSの起動じゃないのか
767デフォルトの名無しさん:2007/06/06(水) 11:09:38
いや、そうなんですけど、
それは、基本的にできないとわかったので良いです。
とりあえず、情報を教えてくれたと言う気持ち自体に感謝しとるわけです。
768デフォルトの名無しさん:2007/06/06(水) 11:24:07
BIOSが対応していれば出来るけど?
769デフォルトの名無しさん:2007/06/06(水) 12:14:56
マジっすか?
バイオスにプログムから指示を出すんですか?
770デフォルトの名無しさん:2007/06/06(水) 12:20:36
>>768をどう読めばそうなるんだよ
771デフォルトの名無しさん:2007/06/06(水) 12:25:46
ああ、なるほど、意味分かったです。

そう言うマシンがあるってことですね。
確かに聞いたことはあります。
772デフォルトの名無しさん:2007/06/06(水) 12:33:52
APIでアクティブタイマを設定するだけ。
あとはBIOSが対応していれば指定した時間に起動する。
773デフォルトの名無しさん:2007/06/06(水) 12:55:53
BIOS側でしか起動時間を変更出来ないハードウェアのために
スケジュールを変更するGUIを作りたいのですが
WindowsOS上のプログラムからBIOSの設定変更は可能ですか?

774デフォルトの名無しさん:2007/06/06(水) 13:06:07
可能ですがやり方や設定位置はマザーボードによって異なります。
詳細は各メーカに問い合わせてください。
775デフォルトの名無しさん:2007/06/06(水) 13:27:14
メーカーによってAPIが異なることはありますか?
776デフォルトの名無しさん:2007/06/06(水) 13:33:47
詳細は各メーカに問い合わせてください。
777デフォルトの名無しさん:2007/06/06(水) 13:33:55
>>775
APIはウインドウズなんだから、
ウインドウズosであれば変わらないと考えても良いんじゃないですか?

なるほど。
基本的にはバイオスがアクティブタイマーを監視するようであれば、
プログラムからタイマーを設定すればよくて、
そうでない、場合は各種のバイオス次第と言うわけなんですね。
778デフォルトの名無しさん:2007/06/06(水) 13:38:38
APIはウィンドウズなんでしたか・・・
本当にありがとうございました
779デフォルトの名無しさん:2007/06/06(水) 15:29:05
>>778
winのバージョンで使えなかったり動作が違う事はあるけどなー
780デフォルトの名無しさん:2007/06/06(水) 15:56:46
スルーしろよ
781691: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デフォルトの名無しさん:2007/06/06(水) 20:46:18
>>745
昔、PerlでCGIを書いたときは、ファイルのリネームで排他処理ができたから、
windowsでも、同じようにできるかなって思ったんだけど、Linuxなんかとは、動作が違うってことなんかなぁ。

VBからAPIを読んでるから、もしかしたらそのせいかもしれないかなと思ったけど、検証がめんどうだから
MoveFileのあとに、ファイルをオープンして、成功したら、リネーム成功ってことにしました。
784デフォルトの名無しさん:2007/06/06(水) 20:48:37
それってMoveFile()はアトミックじゃないってこと?
なんかそれすごく嫌だな
785デフォルトの名無しさん:2007/06/06(水) 21:07:55
WIN32APIとは違うかもしれませんが質問させてください。
CAxWindowの作成時にパワーポイントのファイルを読み込ませ表示させているのですが、何度もCAxWindowを作成、削除を繰り返していると、削除時(DestroyWindow時)にパワーポイント側のエラー(マイクロソフトにエラーデータを送信してくださいウィンドウ)が発生します。
何かエラーになる原因、もしくは、エラーウィンドウを表示させない方法を教えていただけないでしょうか。
お願いします。
786デフォルトの名無しさん:2007/06/06(水) 21:17:22
CAxWindow付随メンバの解放する順序なんじゃね?
787785:2007/06/06(水) 21:41:01
申し訳ありません。
付随メンバの解放とはどうすればよいのでしょうか?
788デフォルトの名無しさん:2007/06/06(水) 22:10:55
>>787
多分、ヒープやらなんやらの確保順と解放順がちぐはぐなんじゃね?
パワーポイント関連のオブジェクトの操作順をあらってみ?
789デフォルトの名無しさん:2007/06/06(水) 22:16:51
PowerPoint関連オブジェクトのメソッド操作を部分的にコメント(#if 0〜#endif)してみて、
エラーがでるか調べてみたら?
790785: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デフォルトの名無しさん:2007/06/07(木) 00:11:10
SBS_SIZEBOXとかSBS_SIZEGRIPとかって何なんですか!
ググっても日本語の解説が無くて
792デフォルトの名無しさん:2007/06/07(木) 00:15:31
ウソ付くな。
793デフォルトの名無しさん:2007/06/07(木) 00:18:30
思いっきりみつかるけどな
794デフォルトの名無しさん:2007/06/07(木) 00:36:13
いや詳しい解説が無くて
どこ行っても「サイズボックスを指定する」だの「縁のあるサイズボックス」だの
その「サイズボックス」って何なの!って
795デフォルトの名無しさん:2007/06/07(木) 00:44:10
796デフォルトの名無しさん:2007/06/07(木) 00:45:38
「サイズボックスとは」でググレ
797デフォルトの名無しさん:2007/06/07(木) 00:49:31
もちろんググりましたが
「ウィンドウのサイズボックス」ではなく「スクロールバーのサイズボックス」についての解説が見たいのです!
798デフォルトの名無しさん:2007/06/07(木) 01:05:18
実際「スクロールバーのサイズボックスだ」としか答えようがないんだが・・。
SBS_SIZEBOX指定でスクロールバー作ってみ。
799デフォルトの名無しさん:2007/06/07(木) 01:09:17
>>798
わかりました。一応作っては見ました。が、使い方が今一わかりません
というか解説(又は画像)が無いことをちょっと不思議に思ってます
これ使われてるソフトもあまり見かけないかなー、と
800デフォルトの名無しさん:2007/06/07(木) 01:12:53
ttp://msdn2.microsoft.com/en-us/library/ms651267.aspx
この辺に書いてなきゃ諦めな
801デフォルトの名無しさん:2007/06/07(木) 01:20:56
そこは一番最初に見ました
が、だめ!
解説ページは諦めます
802デフォルトの名無しさん:2007/06/07(木) 01:24:58
へ〜。こんなの初めて知った。
スクロールバーというより「サイズボックスコントロール」っていうひとつの独立したコントロールみたいな感じだな。
803デフォルトの名無しさん:2007/06/07(木) 06:38:05
何が知りたいのかさっぱりわからん
自分の思い通りの解説が無かったら自分で書け
804デフォルトの名無しさん:2007/06/07(木) 07:21:27
自分の読解力の無さを人の文章力のせいにするな
805デフォルトの名無しさん:2007/06/07(木) 08:37:15
季節の変わり目だからな。最近、香ばしいのが多くて困る。
806デフォルトの名無しさん:2007/06/07(木) 08:56:16
お前モナー
807デフォルトの名無しさん:2007/06/07(木) 09:22:40
僕バッカー!
808691: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デフォルトの名無しさん:2007/06/07(木) 14:45:51
非同期でERROR_IO_PENDINGは正常なんだけど
810デフォルトの名無しさん:2007/06/07(木) 14:56:43
InternetDestroy()ってなんか恐ろしくて使ったこと無いんですけど、
使って大丈夫ですかね?
811デフォルトの名無しさん:2007/06/07(木) 15:10:37
>>808
InternetStatusCallbackの値みてる?

http://msdn2.microsoft.com/en-US/library/aa383931.aspx
812691:2007/06/07(木) 16:45:23
>>811
レスありがとうございます。
正にこれでした!
コールバックの第四パラメータlpvStatusからERROR_INTERNET_INVALID_CAを取得できました。

本当にありがとうございましたm(_ _)m
813デフォルトの名無しさん:2007/06/07(木) 18:32:03
ウインドウを常に手前に表示するには
SetWindowPosでHWND_TOPMOSTをあたえればできますが
そのウインドウがHWND_TOPMOSTなのかを取得するにはどうすればいいのでしょうか?
814デフォルトの名無しさん:2007/06/07(木) 18:35:14
GetWindowLong
815813:2007/06/08(金) 00:05:48
どなたか分かる方はいませんでしょうか?
816デフォルトの名無しさん:2007/06/08(金) 00:10:33
817デフォルトの名無しさん:2007/06/08(金) 00:12:27
>>815
馬鹿じゃねぇの
分からない方が珍しい
818デフォルトの名無しさん:2007/06/08(金) 00:12:42
>>815
間違ってたらゴメン

拡張ウィンドウスタイル(GWL_EXSTYLE)を取得して、
WS_EX_TOPMOSTを含んでるか調べるんじゃないかな?
819813:2007/06/08(金) 00:19:25
難しすぎて分かりません
820デフォルトの名無しさん:2007/06/08(金) 00:22:33
LONG exStyle = GetWindowLong(hWnd, GWL_EXSTYLE);
if ((exStyle & WS_EX_TOPMOST) != 0)
{
//TOPMOST
}
821デフォルトの名無しさん:2007/06/08(金) 00:30:40
WS_EX_TOPMOSTフラグではなく、お触り禁止フラグが立ちました
822デフォルトの名無しさん:2007/06/08(金) 01:00:24
>813
TOP MOSTの指定をしたのが知りたいのか?
今、ウィンドウがTOP MOSTで画面に表示されているのが知りたいのか?

後者なら、FindWindowして Z-Orderを確認するしか手がないよ。
823813:2007/06/08(金) 02:53:05
自己解決しました^^
824デフォルトの名無しさん:2007/06/08(金) 02:55:49
時間掛かり過ぎ(禿藁)
825デフォルトの名無しさん:2007/06/08(金) 08:13:39
どうみても他己解決
826デフォルトの名無しさん:2007/06/08(金) 08:15:12
たこちゅうちゅ
827デフォルトの名無しさん:2007/06/08(金) 08:25:13
>>823
恩知らずとはお前のことだ。
828デフォルトの名無しさん:2007/06/08(金) 08:35:34
現在VC6.0でsubst相当のことをやろうとしているのですがDefineDosDeviceを
使えばできそうだというとこまではわかったのですがドライブの解除時に
そのドライブを使用していたら(エクスプローラで開いている等)
エラーメッセージを出すということをしたいのですが
探し方が悪いのかよい方法が見つかりません。

申し訳ありませんがどなたか教えていただけないでしょうか?お願いします。
829デフォルトの名無しさん:2007/06/08(金) 09:02:36
>>828
もちつけ
要約すると、メッセージが出したいのか?
830828:2007/06/08(金) 09:07:00
>>829
そうです。
DefineDosDeviceで割り当てたドライブを使用していたら
メッセージを出したいです。
831デフォルトの名無しさん:2007/06/08(金) 09:19:28
必要に応じてSetErrorMode関数
<TODO>
GetLastError関数でエラーNo
FormatMessage関数でエラーNoから日本語(地域言語)

<TODO>の箇所にDefineDosDevice関数とか、使用ユーザーほにゃほにゃ
832828:2007/06/08(金) 09:35:23
831>>
DefineDosDeviceはドライブを使用していてもエラーなしでドライブを解除してしまうみたい
なのでGetLastError関数でのやり方がわかりません。
あとSetErrorMode関数も調べてみたのですがいまいち使い方がわかりません。

どうやったらいいか詳しく教えてください。
お願いします。
833ららら:2007/06/08(金) 09:40:31
COM インターフェイスのメソッドって、何で const メソッドがないのら?
834デフォルトの名無しさん:2007/06/08(金) 09:45:37
const の判断はコンパイラの仕事だから
835ららら:2007/06/08(金) 09:58:04
どういうことなのら?
836デフォルトの名無しさん:2007/06/08(金) 10:01:55
あほすぎなのらw
837デフォルトの名無しさん: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ららら:2007/06/08(金) 10:08:55
× STDMETHOD_(size_t, GetSize)(void) PURE;
○ STDMETHOD_(size_t, GetSize)(void) const PURE;
840デフォルトの名無しさん:2007/06/08(金) 12:01:28
>>832
もうひとつの命題は
「そのドライブが、現在使用中かどうか判断」でおk?
841デフォルトの名無しさん:2007/06/08(金) 12:21:30
>>828
質問の仕方が悪いよ。

あなたが知りたいのは、
メッセージの出し方ではなく、
DefineDosDeviceした後に、当該のドライブが使用中だったのか否か判別する方法
もしくは、
DefineDosDeviceする前に、当該のドライブが使用中なのか否か判別する方法
なんでしょ?

ならば、そう書いたほうがいい。

>>829が言いたいのは、そういうことなんだと思うよ。
842828:2007/06/08(金) 13:15:24
質問の仕方が悪く申し訳ありません。
>>840さん、>>841さんの言うとおり知りたいのは
>DefineDosDeviceする前に、当該のドライブが使用中なのか否か判別する方法
です。

書き込み自体不慣れなもので迷惑をかけているとは思いますが
ご教授よろしくお願いします。
843828:2007/06/08(金) 13:27:20
知りたいことがまだわかりにくい気がするので
もう一度書かせてもらいます。

知りたいことは
DefineDosDeviceを用いて割り当てたドライブを
再びDefineDosDeviceを用いて解除する時に、
当該のドライブが使用中なのか否か判別する方法
です。

よろしくお願いします。
844デフォルトの名無しさん:2007/06/08(金) 14:21:27
>>838
C++ だと

STDMETHOD_(size_t, GetSize)(void) PURE;
STDMETHOD_(size_t, GetSize)(void) const PURE;

の2つを宣言できるけど、
C だとオーバーロードがないからこういう事ができない。

というあたりを意識してるんじゃないかな、と思ってるんだけど、
まあ、正直なところこれが理由かどうかは分からん。
845デフォルトの名無しさん:2007/06/08(金) 14:30:34
VBにconstなメソッドの概念がないからだと思う
まあCOMにconstがないからVBにconstなメソッドを入れなかったという順なのかもしれないけど
846デフォルトの名無しさん:2007/06/08(金) 14:31:58
まぁ、COM に限らず、C++ の virtual 関数は const にすべきではないように思う。
メンバ関数が const かどうかは実装に依存して決定されるべきことだが、
virtual メンバ関数がどのような実装になるかは派生クラスに依存するわけだから、
virtual メンバ関数の宣言時には const かどうかを決定できないことになる。
したがって、const メンバ関数と virtual メンバ関数は共存できないように思う。
847デフォルトの名無しさん:2007/06/08(金) 14:32:17
っつかCOM自体はOS・言語と独立。
848デフォルトの名無しさん:2007/06/08(金) 14:36:15
メンバ関数がconstにすべきかどうかは機能仕様によるだろ

実装に依存するならmutableの存在意義がない
849デフォルトの名無しさん:2007/06/08(金) 14:37:03
>>843
DeviceIoControlあたりなんかなー

誰か、ドライブ系のコントロールコマンドしりませんか?
850デフォルトの名無しさん: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デフォルトの名無しさん:2007/06/08(金) 14:48:48
まず日本語勉強してこい
853デフォルトの名無しさん:2007/06/08(金) 14:50:58
まことちゃん?
854デフォルトの名無しさん:2007/06/08(金) 14:58:30
静岡の東部人じゃないのか
>>851 そうら?
855デフォルトの名無しさん:2007/06/08(金) 15:00:32
山梨出身の友達もそんなしゃべり方するな。
856デフォルトの名無しさん:2007/06/08(金) 15:05:27
山梨でも、あんなしゃべり方しねーよw
853の言う通り、まことちゃんだろ。

しかし、まことちゃんを知っている奴は、確実にオッサン
857デフォルトの名無しさん:2007/06/08(金) 15:24:31
>>838
ISomeを使う側なら、constがあってもなくても同じじゃん。
858デフォルトの名無しさん:2007/06/08(金) 15:33:06
>>843
安全確実な方法はないと思う。

DefineDosDeviceのフラグに、
使用中ならばREMOVEしない
というのがないということは、
OS自体が実現方法を持っていないのだと思う。

副作用や誤判定が生じても構わないなら、
substしたディレクトリ以下にある、すべてのファイルとディレクトリに対して、
共有しないモードでCreateFileを試みて、失敗すれば誰かが使っている、と。

副作用は、CreateFileを試みて成功してしまった場合、
すぐにCloseHandleしなければならないが、その瞬間を狙って、
他のプロセスがCreateFileすると失敗してしまうこと。

誤判定は、仮想ドライブだけでなく、元のパスを使っていても、
引っかかってしまうこと。

859ららら:2007/06/08(金) 15:33:08
>>857
何ゆーとんのら。使う側が C++ なら const であるかどうかは重要ら。
たとえば、ISome を包含するクラス CHoge を実装する場合、
ISome が const 型システムをもたないが故に、
CHoge も const 型システムを無視しなければならず、
この破壊の連鎖はどこまでも続いて行くらー。
860デフォルトの名無しさん:2007/06/08(金) 15:33:48
>>850
本来使ってはいけないものだが、
使わざるを得ない場合ってのもあるんだぜ?
861デフォルトの名無しさん:2007/06/08(金) 15:36:24
>>851
そういうコードを自然に書くくせを直すべき。Attach もあるし。

ISome* tmp = GetSome();
CComPtr<ISome> spSome = tmp;
// 以降でも tmp->Release() はしない

これでリークしないと思える筈がないわけで、1行に書いても同じこと。
でもまぁ MFC みたいに ctor で AddRef しないオプションも、あれば便利だったかもね。
862デフォルトの名無しさん:2007/06/08(金) 15:36:25
>>846
おいおい。本気で言ってるのか?
863デフォルトの名無しさん:2007/06/08(金) 15:36:42
>>860
それは分かるが、const_cast で代用できる。
864846:2007/06/08(金) 15:38:15
>>862
本気だが?
865デフォルトの名無しさん:2007/06/08(金) 15:39:56
「本気」と書いて「マジ」と読む
866デフォルトの名無しさん:2007/06/08(金) 15:41:02
>>859
単にCOMのシンタックス上非 const になってるだけで
セマンティックス的には const な動作ならば、
適宜 const_cast 使えばいいと思うけど。
そのための const_cast でそ。

盲目的に「変更するから非 const」とか考えてると、
AddRef ひとつ呼べやしない。
867デフォルトの名無しさん:2007/06/08(金) 15:42:16
>>863
mutable だと宣言する事と、
const_cast を使う事は、
表している意味合いとか読みやすさとかが変わってくるな。

どちらにしろ、使わざるを得ない状況自体が稀だが・・・。
868ららら:2007/06/08(金) 15:47:11
>>866
結論!
COM は C++ と相性が悪い!
のらー。

>> 845
> VBにconstなメソッドの概念がないからだと思う
COM と IDispatch を混同してはいかんのらー。
COM は VB のためのものではないのらー。
869828:2007/06/08(金) 16:13:14
>>849,>>858
ありがとうございました。
実現が難しそうだということがわかりましたので
もう少し自分で考えた後、突破口が見つからなければあきらめたいと思います。

870デフォルトの名無しさん:2007/06/08(金) 16:38:43
>>869
Windowsって、ファイルを開いたときに渡したパスを、覚えてないんだよね。

部屋の中に人がいるかどうかしか管理してなくて、
どの入り口から入ってきたのかは、ノーケアなんだ。

ファイルのハンドルから、ファイル名を知りたくて色々調べたけど、解決方法はなかった。
裏APIを使えば、オブジェクトの名前はわかるようなんだけど、ファイル名とは違うんだよね。

いっそのこと全プロセスに対してCreateProcessをフックしてしまい、
ハンドルに対するCreateFile時のファイル名を管理してしまおうかとも思ったけど、
そんな行儀の悪いことをするのはダメだよねぇ、ってことで諦めた。
871デフォルトの名無しさん:2007/06/08(金) 16:56:05
870のいう通りなら、
当該のドライブが使用中に、その解除作業やっても問題ないんじゃないか?
だから「ドライブを使用していてもエラーなしでドライブを解除してしまう」のでは?

これは想像だけど、ファイルを開くときにSubstされたドライブの場合、
正しいディスクのパスに変換してからファイルを開く、ぐらいの処理やっててもおかしくないと思うんだがな。
872デフォルトの名無しさん:2007/06/08(金) 17:21:17
>>871
たぶんフィルタドライバを使って実現されていると思われ。

873869:2007/06/08(金) 18:32:09
>>870
>>871
>>872
ありがとうございます。参考になりました
874デフォルトの名無しさん:2007/06/08(金) 23:39:23
すいません、質問です。

WinXPにてsend,recvを使ってバイナリデータを送受信したいのですが、
バッファの大きさの上限(要するに、一回のsendや一回のrecvで送受信できるデータ量の上限)って、
何バイトでしょうか??


また、もし上限が無いのでしたら、
例えば1GByte程のデータを送受信する場合、
バッファサイズはどのぐらいが効率的なのでしょうか??

ご教授御願いいたしますm(。−_−。)m
875デフォルトの名無しさん:2007/06/08(金) 23:47:22
>>874
WinScokのヘルプにバッファの設定について書いてあるんだから、
最低限確認してからにしろよ。
876デフォルトの名無しさん:2007/06/09(土) 00:38:16
>>874
なんつーか、そもそもTCP/IPはバッファを大きくしてもそれだけの大きさをそのまま扱えるわけじゃないことも
ご存知ないような。入門サイトでじっくりお勉強することをお勧めするですよ。
877デフォルトの名無しさん:2007/06/09(土) 01:04:06
>>874
マジレスしたらここに聞きにくる以前の問題すぎて笑った
878デフォルトの名無しさん:2007/06/09(土) 01:55:50
質問です。
CreateCaretでシステムキャレット(長方形型)を使わせていただいていますが
ウィンドウのステータスバーの上に被さって表示されてしまいます。
また、DrawEdgeで描いたウィンドウ内枠も上書きしてしまいます。
システムにお借りしたキャレットは描画のクリッピングなどはできないのでしょうか
お聞かせください。
879878:2007/06/09(土) 01:58:46
要するにエディタ等のウィンドウをスクロールした際の
キャレットが隠れるように見える挙動を実現したいのです。
880デフォルトの名無しさん:2007/06/09(土) 11:19:01
ウィンドウをスクロールして、
キャレットが隠れなければならないタイミングで、
HideCaret を呼べばいいのでは。
881デフォルトの名無しさん:2007/06/09(土) 12:17:40
【政治】民主党、無年金障害者問題で法案提出 在日外国人らも救済

民主党は9日、国民年金の対象外か、任意加入の時期に未加入だったため、
障害基礎年金をもらえない無年金障害者すべてに
「障害福祉年金」を支給する法案を衆院に提出した。
今国会に与党が提出を予定している案では、
救済対象を元学生と専業主婦に限っているが、
民主党案は在日外国人や在外邦人も救済する手厚い内容だ。

給付額は、与党案では障害基礎年金の約6割にあたる月4万〜5万円だが、
民主党案は障害基礎年金と同額としている。

(06/09)朝日新聞
http://www.asahi.com/money/pension/news/TKY200406090286.html
882878:2007/06/09(土) 16:11:21
>>880
手持ちの例で言えば↓このバイナリエディタStirlingのように
ttp://www.vector.co.jp/soft/win95/util/se079072.html
ウィンドウサイズを変更してキャレット上をステータスバーが覆うと
欠けたキャレットが点滅し続ける、このような挙動はどのように実現されているのか?ということです。
883デフォルトの名無しさん:2007/06/09(土) 16:16:37
テキストエディタ(バイナリもそうだけど)系の奴って、
キャレットは自前描画するもんなんじゃなかったっけ?
WM_TIMERつかまえて点滅、とか
884デフォルトの名無しさん:2007/06/09(土) 16:20:01
君のハートを捕まえて
885878:2007/06/09(土) 16:27:03
>>883
そうなんですか。
同じくバイナリエディタの例で申し訳ないのですが↓のBZなんかは
ttp://www.vector.co.jp/soft/win95/util/se032859.html
>>882のようなステータスバーがキャレット上を覆う時は
シンプルにも完全にキャレットを非表示にする隠す挙動になっています。
886デフォルトの名無しさん:2007/06/09(土) 16:41:26
?どっちも同じじゃない?
887デフォルトの名無しさん:2007/06/09(土) 16:43:33
>>885
ああごめんごめん、全部がそうってわけじゃないよ

でも、あれ。俺はスターリンもBZも持ってんだけど、
試してみたらどっちも、キャレット一部が隠れてもちゃんと残りの一部が点滅してるな・・
バージョンが違うのかな?
888デフォルトの名無しさん:2007/06/09(土) 16:46:58
バージョンが違いますね
889デフォルトの名無しさん:2007/06/09(土) 16:50:51
そうですか、すんませんです
890デフォルトの名無しさん:2007/06/09(土) 18:57:44
>>878
キャレットを所持するウィンドウとステータスバーの領域が重なってるんじゃないか?
StirlingとBZもCreateCaretを使っている
891デフォルトの名無しさん:2007/06/09(土) 20:05:43
フォルダの上で中央クリックしたら
フォルダを新しいウインドウで開く
ってのをできるソフトないかな?
892デフォルトの名無しさん:2007/06/09(土) 20:07:43
ソフトウェア板に行ってね
893デフォルトの名無しさん:2007/06/09(土) 20:16:25
>>891
それぐらい自分で作れカス
894デフォルトの名無しさん:2007/06/09(土) 20:48:42
実行ファイルのアイコンについてですが、WindowsXPのアイコンの表示方法には色々あると思います。
縮小版、並べて表示、一覧・・・
これらに対応して、違ったサイズのアイコンを表示したいのですが、どのようにすればいいのでしょうか?
895デフォルトの名無しさん:2007/06/09(土) 20:52:26
アイコンは各種サイズを格納してる?
896デフォルトの名無しさん:2007/06/09(土) 21:00:03
一応48*48と32*32のアイコンをリソースに取り込んでます。
一番数字が若いやつが実行ファイルのアイコンになるっぽいので、48*48が標準で表示されています。
まぁ、どういう表示にしても48*48が表示されるのですが、これをなんとか・・・
897デフォルトの名無しさん:2007/06/09(土) 21:01:20
指定しろよ
898デフォルトの名無しさん:2007/06/09(土) 21:03:52
>>896
その2つが別のアイコンとして扱われているのでは?
Windowsでは1つのアイコンファイルやリソースが複数の大きさ・色数のアイコンを保持できる
899デフォルトの名無しさん:2007/06/09(土) 21:07:23
どうやって指定するのでしょうか・・・(汗
VS2005を使用しているのですが、リソースビューでは特にいじる場所も見当たらなさそうな・・・
900デフォルトの名無しさん:2007/06/09(土) 21:09:38
>>898
そうなんですか。ということは、今は2つのicoファイルが独立したリソースになってるって事ですね。
ちょっと色々試してみます。
901デフォルトの名無しさん:2007/06/09(土) 21:11:04
>>899
なんだ、VSかい。EEじゃないよね?
アイコンエディットしてるときに、いろいろメニューさがしてみそ
902デフォルトの名無しさん:2007/06/09(土) 21:16:08
アイコンは、専用のソフトで一つの.icoにまとめてから、それを
リソースとしてそのまま取り込むのが楽。

アイコンをまとめるソフトはフリーのやつでもわんさかあるから適当に選んで使うがよろし
ちなみに俺は@iconってのを使ってる
903デフォルトの名無しさん:2007/06/09(土) 21:17:14
@icon変換 とかで(ものはなんでもいいけど)ひとつのicoファイルが複数の
サイズの違う画像を持つようするといいんじゃないかな
904デフォルトの名無しさん:2007/06/09(土) 21:19:13
>>901
Visual Studio 2005です。リソースの追加>インポートを2回繰り返して2つのicoファイルを読み込んだのですが、
それではいけないんですよね・・・。色々メニュー見てみたり、右クリックしてみたりしたのですが
いまいちどこでそういう変更が出来るのかまだわからないです・・・orz
905デフォルトの名無しさん:2007/06/09(土) 21:19:56
>>902-903
ちょっと@iconを落としてきます!
906デフォルトの名無しさん:2007/06/09(土) 21:25:27
@iconでマルチ画像保存したら出来ましたああああ;;
ありがとうございます!

というか、icoファイルって意外と高機能なんですね・・・
jpgとかgifの感覚で一つのファイルは一つの画像だと思ってました
907デフォルトの名無しさん:2007/06/09(土) 21:34:07
なんでgifが一つなんだ?
908デフォルトの名無しさん:2007/06/09(土) 21:37:19
脳内
909デフォルトの名無しさん:2007/06/09(土) 21:46:46
あ、gifは全然一つじゃないですね。アニメーションgifとか昔自分作ってたのに・・・orz
910デフォルトの名無しさん:2007/06/09(土) 22:55:37
>>904
アイコンのエディット画面のイメージメニューだよ
911878:2007/06/09(土) 22:58:18
>>887
BZはどうやら1行目だけは非表示にならずキャレットが点滅表示されるようです。

>>890
つまり、クライアント領域は別の子ウィンドウを張り付けるべきですかね?
今まで親ウィンドウに直書き描画しておりましたが・・・。
912デフォルトの名無しさん:2007/06/10(日) 00:02:25
ここで聞くのが正しいか分からないけど、
VC++2005を使って「猫でも分かるプログラミング」を見て
Win32APIの勉強をしているところなのですが、
プログラムに組み込みたいビットマップ画像や音楽ファイルって
生のまま(?)配布するソフトに一緒に入れておくしかないですか?

913デフォルトの名無しさん:2007/06/10(日) 00:12:13
自分の好きなようにしろよ。
914デフォルトの名無しさん:2007/06/10(日) 00:15:20
>>913
自分の好きなようというか、
そのやり方しか知らなくて他に選択肢が無いから、
それ以外にやり方があるなら教えて下さい、という旨です。
915デフォルトの名無しさん:2007/06/10(日) 00:16:09
暗号化するなり、
1つのファイルにまとめるなり、
圧縮するなり、
リソースとして実行ファイルに埋め込むなり

好きにするなりよ
916デフォルトの名無しさん:2007/06/10(日) 00:28:03
>>914
やり方なんていくらでもある
その辺のPCゲームとか見れば、いくつか参考例もあるだろ?
あと…あんまりWin32APIには関係ないかもな

俺はzlib使って固めて、独自ファイルヘッダくっつけて、
ついでに軽い暗号化かけて、チェック用のハッシュも持たせてやってる
ファイル対象の圧縮・展開は専用ツール作って、
exeから使うときは展開ツールで利用してるクラスを使って簡単展開
917デフォルトの名無しさん:2007/06/10(日) 00:33:52
この手の質問をする奴って、やり方は分かっているのに、
思いつく方法が面倒くさくて逃げ出したいから、
他人に何とかしてもらおうとしているだけなんだよね。
918デフォルトの名無しさん:2007/06/10(日) 00:55:22
>>915
色々方法を教えて頂きありがとうございます、とても参考になりました。
まだレベルが低くて暗号化云々がアレなのでリソースとして
埋め込むという方法のやり方を調べてみます。

>>916
PC買って間もなくてプログラミング以外でほとんど使ったことが無かったので
一般的にどうするものなのか分からなかったです。
スレ違い&常識的なことを聞いていたらすいませんでした。
教えて頂いた方法はまだ技術的に追いつかないのでメモしておいて後で参考にさせて頂きます。
詳しく教えて頂きありがとうございました。

>>917
いえ、「猫でも〜」を挙げているように、まだ習い初めなのでガチでやり方が分かりませんでした。
ただ月曜が友人の誕生日で作ったプログラムを送りたくて
日程的に詰まっていたため自分で色々調べる時間が足りず、
ここで他人に何とかしてもらおうと思ったのは事実なので、
教えて君と不快に思われたらすいませんでした。
919デフォルトの名無しさん:2007/06/10(日) 01:05:25
誕生日プレゼントなら、happy99だよな

ttp://www.geocities.jp/hiko_bae/happy99.html
920デフォルトの名無しさん:2007/06/10(日) 15:29:27
すみません。質問です。
GetOpenFileNameで既存ファイルのフルパス文字列を受け取った場合、
ユーザーがキータイプしている可能性があるのでこれを統一化したいのですが良い方法はないでしょうか?
フルパス文字列をキーとして内部保存し新たにOpenされた場合は相応の処理をしたいのです。
(ちなみに実際にファイル操作をするのはLinkした外部ライブラリです。)

MBCS向けコーディングしていますが単純に_mbsnicmpをかませば大丈夫でしょうか?
パスの命名規則があいまいで確信が持てません。。。
921デフォルトの名無しさん:2007/06/10(日) 15:37:11
日本語でおk
922920:2007/06/10(日) 16:04:07
ああ、説明端折りすぎで意味不明でしたか。すみません
例えば、Abc.bmp、ABC.BMP、aBc.bmpなどは同じファイル(もっと長いファイル名でも)なので
GetOpenFileNameで受け取ったパスをそのまま使ってキー探索するのは危険かと思いました
で、Windowsシステムが認識しているパス名に統一する方法があればとお訊きした訳です

受け取ったパスでそのままSearchPathしてみたところ、どういう訳か入力した値そのものだったり
エクスプローラ上のファイル名に置き換えられたり動作不定です(win2000)
923デフォルトの名無しさん:2007/06/10(日) 16:07:30
> Abc.bmp、ABC.BMP、aBc.bmpなどは同じファイル
ファイルシステムによっては違うファイルなのでは?
924デフォルトの名無しさん:2007/06/10(日) 16:09:23
あなたは きょうしには むいていません。
925920:2007/06/10(日) 16:23:49
>>923
え゜、、そうなんですか?
少なくともNTFS上では同じファイルとして扱われてますがFATやFAT32だと違うんでしょうか
926デフォルトの名無しさん:2007/06/10(日) 16:38:46
なにを悩んでるのかがはっきりしないな。
特に
>GetOpenFileNameで受け取ったパスをそのまま使ってキー探索するのは危険かと思いました
の意味が分からない。
OPENFILENAME構造体のフラグで無効な文字や、無効なパスははじけるはず。

「危険」って何が「危険」なの?
927デフォルトの名無しさん:2007/06/10(日) 16:40:14
NTFSもVATもFAT32も大文字と小文字を区別する。
大文字小文字区別しないのは昔のファイル名が8.3のFATじゃなかったっけ?
928デフォルトの名無しさん:2007/06/10(日) 16:49:39
ファイルシステムとAPIとシェルの各層を区別しろや
929926:2007/06/10(日) 16:52:53
>>920
すみません。よく読んだらちゃんとわかりました。
自分の読解力不足を嘆くばかりです。

http://www.ipa.go.jp/security/awareness/vendor/programming/b08_01_main.html
ここを読んでおくとさらに悩めると思います。
930920:2007/06/10(日) 17:08:36
説明下手ですいません。かなりアホなこと訊いている気がしてきました

>>926
既にOpen済みかそうでないかを判定する手段として
Open済みのファイルのフルパスを保存し、一致検索しようと考ました
新たにOpenされたファイルなら前処理を行った後にライブラリにOpen要求を出します
GetOpenFileNameでは存在するValidなパスしか受け付けないように設定しています

>>927
不安になったので今デスクトップ上で上記3ファイルを新規作成してみましたが
最初の1個以外は同じファイル名だと怒られます(XP、NTFS)
931デフォルトの名無しさん:2007/06/10(日) 17:17:52
>>930
> 不安になったので今デスクトップ上で上記3ファイルを新規作成してみましたが
> 最初の1個以外は同じファイル名だと怒られます(XP、NTFS)
それはWindowsのファイルシステムドライバが過去の互換性に縛られるせい。
932デフォルトの名無しさん: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
ファイルシステムは、ファイル名の大文字と小文字の区別をサポートしています。
933920:2007/06/10(日) 17:32:51
皆様、ありがとうございます
なるほど。基本的な理解が足りていなかったようです。
具体的な解決法が未だ見えませんが教えてもらった情報を元に
これから色々テストしてきます
934デフォルトの名無しさん:2007/06/10(日) 17:36:45
がんばれ
935デフォルトの名無しさん:2007/06/10(日) 17:48:12
>>920
与えられたパスをFindFirstFileに渡す。
これで大文字/小文字も含めて正確なパスが得られるよ。

俺はGetModuleFileNameで得られたパス名を修正するのに使っている。
936デフォルトの名無しさん:2007/06/10(日) 18:15:31
がんばるな
937デフォルトの名無しさん:2007/06/10(日) 18:25:55
CorrectFileNameEx
938デフォルトの名無しさん:2007/06/10(日) 19:11:23
>>937
くわしく。
939デフォルトの名無しさん:2007/06/10(日) 19:15:53
CorrectFileNameEx に一致するページは見つかりませんでした。
940デフォルトの名無しさん:2007/06/10(日) 19:35:05
次スレたてられなかった
941デフォルトの名無しさん:2007/06/10(日) 20:09:01
>>940
>980 くらいでちょうどよい。まだ、早すぎ。
942デフォルトの名無しさん:2007/06/10(日) 20:17:01
>>980に期待
943デフォルトの名無しさん:2007/06/10(日) 20:27:30
GetCanonicalFileName
944デフォルトの名無しさん:2007/06/10(日) 21:32:03
>>943
詳しく
945デフォルトの名無しさん:2007/06/10(日) 21:38:41
>>944
詳しく
946デフォルトの名無しさん:2007/06/10(日) 21:43:09
>>945
悔しく
947デフォルトの名無しさん:2007/06/10(日) 21:54:28
>>943
つまんね
948デフォルトの名無しさん:2007/06/10(日) 22:22:49
>>947
ねんまつ
949デフォルトの名無しさん:2007/06/10(日) 23:08:34
ファイルハンドルを開きっぱなしでそのファイルを削除しようとすると、
「ファイルまたはフォルダの削除エラー」がでます。
ファイルが削除されるタイミングを知ることができれば、
ファイルハンドルを解放しようと思います。
タイミングを知る方法を教えてください。
950デフォルトの名無しさん:2007/06/10(日) 23:12:43
初めから削除権与えたら駄目なん?
951949:2007/06/10(日) 23:27:14
>> 950
ありがとうございます。
それで行けそうです。
めちゃ助かりました!
952デフォルトの名無しさん:2007/06/10(日) 23:28:25
>>949
試したことはないけど便宜的ロックで何とかならない?
SMBとかで使ってる奴。
953デフォルトの名無しさん:2007/06/11(月) 06:14:19
スーパーマリオブラザーズで使われているのはロックではありません。
954デフォルトの名無しさん:2007/06/11(月) 08:40:08
DPMSで画面の電源を切るにはどうするですか?
955デフォルトの名無しさん:2007/06/11(月) 23:05:52
>>954
KernelIoControlでIOCTL_HAL_DDIとかじゃね?
956デフォルトの名無しさん:2007/06/12(火) 00:02:21
ochinchin.h を omanko.cpp に include したのに
957デフォルトの名無しさん:2007/06/12(火) 00:15:29
includeはinsertじゃないよバーカ
958デフォルトの名無しさん:2007/06/12(火) 00:26:02
僕バ(略
959デフォルトの名無しさん:2007/06/12(火) 09:33:04
スレ違いかと思いますが、他に適当なスレが見当たらなかったので
ここでお伺いさせてください。

Windows2000で
Shell_NotifyIcon()でシステムトレイに表示できるアイコンは
16色らしいのですが、この16色は16種類の色なのでしょうか?
それとも決められた16色なのでしょうか?
960デフォルトの名無しさん:2007/06/12(火) 14:04:17
2kまでシステムカラー16色限定。
XP以後フルカラー+アルファが使えるようになった。

でもMEで256色アイコンが色化け無しでトレイにあるのを見たことあるんだよな・・・
961デフォルトの名無しさん:2007/06/12(火) 14:06:32
IEというか Comctrl32 のバージョン依存じゃね?
962デフォルトの名無しさん: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デフォルトの名無しさん:2007/06/12(火) 14:57:49
そのアイコンの話じゃねーんだよバーヤ
964デフォルトの名無しさん:2007/06/12(火) 15:02:19
そのアイコンの話なーんだよバーカ
965デフォルトの名無しさん:2007/06/12(火) 15:40:27
扱うのはそのアイコンだが、今回の話はそれとは違う部分の制限だろ
966デフォルトの名無しさん:2007/06/12(火) 16:05:06
いや、>>962の説明で正しい。
967デフォルトの名無しさん:2007/06/12(火) 16:21:31
元の質問者は16色と言ってるんだけど、
つまりこれは16色の環境で実行したってことなの?
968デフォルトの名無しさん: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デフォルトの名無しさん:2007/06/12(火) 17:03:03
普通にShell_NotifyIconだけだと16色にしかならないから
XP未満で256色なのはタスクトレイのウィンドウをフックしてイメージリストを書き換えてるんだよ。
exploer.exeにパッチとか常駐ソフトで変更てのもあるが汎用性がない。
971デフォルトの名無しさん:2007/06/12(火) 17:06:47
グレースケールだとシステム標準じゃないような、、、って
白、明灰、暗灰、黒の4段階ならシステム16色だな。
972デフォルトの名無しさん:2007/06/12(火) 17:13:22
元の質問者です。

すると
Shell_NotifyIcon()だけを素直に使った場合、
>>960のシステムカラー16色という制限を受けるって
ことですね。
973デフォルトの名無しさん:2007/06/12(火) 17:33:38
16x16ドット16色で見やすいアイコンを作るのもプログラマの腕の見せ所です
974デフォルトの名無しさん:2007/06/12(火) 17:42:31
なるほどシステムカラーを組み合わせて
遠目からオレンジっぽく見えるようにします。

それにしても>>962さんの紹介してくれたMSの説明は
フックしてイメージリストを書き換えるのが前提の
説明なのでしょうか。
英語が苦手なので全部を解読するのは厳しいですが、
それもプログラマの腕の見せ所ですものね。
975デフォルトの名無しさん:2007/06/12(火) 17:48:12
流れとは関係ないかも知れないが、
うちの win98 では、トレイ上ではないが、8ビットカラーの 32x32, 16x16 の
アイコンが表示されている。写真から xpadie かなんかで減色して作ったもの。
976デフォルトの名無しさん:2007/06/12(火) 17:51:12
休止状態、スタンバイ、スリープから復帰したことを知ることって出来ないですか?
977デフォルトの名無しさん:2007/06/12(火) 17:54:48
はい。
978デフォルトの名無しさん:2007/06/12(火) 18:03:40
979デフォルトの名無しさん:2007/06/12(火) 18:06:19
>>976
出来ない が true か → いいえ
出来ない が false か → はい
980デフォルトの名無しさん:2007/06/12(火) 18:07:43
>>976
質問の仕方が悪い。

休止状態、スタンバイ、スリープから復帰したことを知る方法がありますか。
あれば、その方法を教えてください。

とか言えばいいのよ。

本当に知りたいことが、方法の有無だけで、
あるなら自分で調べるよ、という人もいるからね。
981デフォルトの名無しさん:2007/06/12(火) 18:14:25
>>978
thx
>>980
行間が読めない馬鹿は死ねばいいと思います
982デフォルトの名無しさん:2007/06/12(火) 18:24:12
>>978は余計なことをしたな
983デフォルトの名無しさん:2007/06/12(火) 18:26:53
一行だから行間はない
984デフォルトの名無しさん:2007/06/12(火) 18:27:46
>>980の脳が腐ってるだけ。
985デフォルトの名無しさん:2007/06/12(火) 18:45:00
>976が赤の他人に甘えてるだけ。
行間読むなんて、どこまでできても結局読んだ奴の推測にすぎない。
986デフォルトの名無しさん:2007/06/12(火) 18:46:52
もう>>983の勝ちでいいよ
987デフォルトの名無しさん:2007/06/12(火) 18:46:56
お前らそんなんじゃコンビニにすら行けないな。
988デフォルトの名無しさん:2007/06/12(火) 18:49:13
>>985がアホ過ぎるwよくそんなんで生活出来てるなwwwwwww
989デフォルトの名無しさん:2007/06/12(火) 18:51:59
質問の回答を聞きに来たのか
煽りに来たのか
どっちだ
990デフォルトの名無しさん:2007/06/12(火) 18:53:37
あんな質問してる方がアホ過ぎだ
991デフォルトの名無しさん:2007/06/12(火) 18:54:40
一連のレスで何が一番ひどいかって言ったら、>>981だろう。
こういうやつにまともなレスをしてはいけない。
しかも自演までしてるし。
992デフォルトの名無しさん:2007/06/12(火) 18:56:29
「ぼくのしつもんに すなおに こたえないやつは わるいやつ」
993デフォルトの名無しさん:2007/06/12(火) 18:56:49
じゃあ一番のボケは>>985ってことで
994デフォルトの名無しさん:2007/06/12(火) 19:12:25
>>988
対面リアルタイムでのやりとりは、この文字だけのやりとりとは情報量が格段に違うんだよ。
995デフォルトの名無しさん:2007/06/12(火) 19:15:25
>>980くらいでカチンとくるやつは
この板でちゃんとした回答はもらえないだろうなぁ
996デフォルトの名無しさん:2007/06/12(火) 19:19:16
社会でも駄目だろ
文章力も無いのに行間読めとか言う奴は
997デフォルトの名無しさん:2007/06/12(火) 19:22:12
課長、行間読んでます?
998デフォルトの名無しさん:2007/06/12(火) 19:28:04
>>981
お前が死ねば?
999デフォルトの名無しさん:2007/06/12(火) 19:35:08
ぬるぽ
1000デフォルトの名無しさん:2007/06/12(火) 19:37:04
行間はここに↓
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。