08/05/14 23:33:42
スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんやお姉さんたちが答えてくれるかも。
過去スレ、関連リンクは>>2-10くらい。
■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。英語版(URLリンク(msdn2.microsoft.com))の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで
- Win32API質問箱 wiki
URLリンク(wiki.livedoor.jp)
Win32API質問箱 Build65
スレリンク(tech板)
2:デフォルトの名無しさん
08/05/14 23:33:57
- MSDN ホームページ
URLリンク(www.microsoft.com)
- MSDN ライブラリ
URLリンク(msdn.microsoft.com)
URLリンク(msdn.microsoft.com)
- MSDN2 ライブラリ
URLリンク(msdn2.microsoft.com)
URLリンク(msdn2.microsoft.com)
- MSDN ライブラリ (ローカル版)
URLリンク(www.microsoft.com)
URLリンク(www.microsoft.com)
- Windows SDK & Platform SDK
URLリンク(www.microsoft.com)
URLリンク(www.microsoft.com)
URLリンク(www.microsoft.com)
URLリンク(www.microsoft.com)
URLリンク(www.microsoft.com)
URLリンク(www.microsoft.com)
URLリンク(www.microsoft.com)
3:デフォルトの名無しさん
08/05/14 23:34:12
URLリンク(www.google.com)
- 猫でもわかるプログラミング
URLリンク(www.kumei.ne.jp)
- Win32 API入門
URLリンク(wisdom.sakura.ne.jp)
- Win32 プログラミング入門
URLリンク(www7.plala.or.jp)
- Advanced Windows (書籍)
URLリンク(www.amazon.co.jp)
-おまけ
Build19が見たい人で余裕のある人は●でも買ってくれ。
4:デフォルトの名無しさん
08/05/14 23:34:48
64 スレリンク(tech板)
63 スレリンク(tech板)
62 スレリンク(tech板)
61 スレリンク(tech板)
60 スレリンク(tech板)
59 スレリンク(tech板)
58 スレリンク(tech板)
57 スレリンク(tech板)
56 スレリンク(tech板)
55 スレリンク(tech板)
54 スレリンク(tech板)
53 スレリンク(tech板)
52 スレリンク(tech板)
51 スレリンク(tech板)
50 スレリンク(tech板)
49 スレリンク(tech板)
48 スレリンク(tech板)
47 スレリンク(tech板)
46 スレリンク(tech板)
45 スレリンク(tech板)
44 スレリンク(tech板)
43 スレリンク(tech板)
42 スレリンク(tech板)
5:デフォルトの名無しさん
08/05/14 23:35:01
41 スレリンク(tech板)
40 スレリンク(tech板)
39 スレリンク(tech板)
38 スレリンク(tech板)
37 スレリンク(tech板)
36 スレリンク(tech板)
35 スレリンク(tech板)
34 スレリンク(tech板)
33 スレリンク(tech板)
32 スレリンク(tech板)
31 スレリンク(tech板)
30 スレリンク(tech板)
29 スレリンク(tech板)
28 スレリンク(tech板)
27 スレリンク(tech板)
26 スレリンク(tech板)
25 スレリンク(tech板)
24 スレリンク(tech板)
23 スレリンク(tech板)
22 スレリンク(tech板)
6:デフォルトの名無しさん
08/05/14 23:35:12
21 スレリンク(tech板)
20 スレリンク(tech板)
19 スレリンク(tech板)
18 スレリンク(tech板)
17 スレリンク(tech板)
16 スレリンク(tech板)★
15 スレリンク(tech板)★
14 URLリンク(pc5.2ch.net)
13 URLリンク(pc5.2ch.net)
12 URLリンク(pc5.2ch.net)
11 URLリンク(pc5.2ch.net)
10 URLリンク(pc5.2ch.net)
9 URLリンク(pc5.2ch.net)
8 URLリンク(pc5.2ch.net)
7 URLリンク(pc3.2ch.net)
6 URLリンク(pc3.2ch.net)
5 URLリンク(pc3.2ch.net)
4 URLリンク(pc3.2ch.net)
3 URLリンク(pc.2ch.net)
2 URLリンク(pc.2ch.net)
1 URLリンク(pc.2ch.net)
7:デフォルトの名無しさん
08/05/14 23:43:30
>>1-6乙
8:デフォルトの名無しさん
08/05/15 00:13:19
大雑把に言って、WM_PAINTでべたべた描画するときはCreateWindow(Ex)。
コントロールをペタペタ乗せるときはダイアログ。
どっちも使うぜってときは、俺の場合CreateWindow(Ex)で作ったウィンドウに
子ウィンドウとしてダイアログを貼り付けることが多いかな。
ただし、うまくやらないとコントロールとの通信がやや煩雑になるかもしれない諸刃の剣。
9:デフォルトの名無しさん
08/05/15 00:17:29
ボタンを貼り付けようと思ったら
独立したボタン扱いになって画面外に置き去りになったことは良い思い出
10:デフォルトの名無しさん
08/05/15 01:35:28
>>9
?
11:デフォルトの名無しさん
08/05/15 02:04:27
ボタン
↓
口
┏━━━┓
┃
┃ window
┗━━━┛
12:デフォルトの名無しさん
08/05/15 02:06:07
ぼタン「一人でできるもん」
13:デフォルトの名無しさん
08/05/15 03:43:32
>>8
おいらどんなときでもダイアログで作ってた…
14:デフォルトの名無しさん
08/05/15 07:30:05
>>11
ダイアログエディタでボタンを配置していてそんな事になるか?
15:デフォルトの名無しさん
08/05/15 07:59:59
エディタなんて使わないモン
16:デフォルトの名無しさん
08/05/15 16:40:56
BlockInput(TRUE);
これで制御停止させても Ctrl+Alt+Delete で解除されてしまう
BlockInput(TRUE);の間Ctrl+Alt+Deleteを無効にするにはどうすればいい?
RegisterHotKeyではダメだった
17:デフォルトの名無しさん
08/05/15 16:49:10
>>15
ExpressEditionを使ってる貧乏人ですか?
18:デフォルトの名無しさん
08/05/15 16:53:08
Ctrl+Alt+Deleteで解除されたら何か困るのか
19:デフォルトの名無しさん
08/05/15 16:56:28
内部でkeyevent発生させてるから処理終わるまで解除されないようにしたいんだよ
20:デフォルトの名無しさん
08/05/15 17:11:06
BlockInput(TRUE);の間お前のアプリがバグって再起動するまでCtrl+Alt+Deleteできなくなったらどうするんだよ
21:デフォルトの名無しさん
08/05/15 17:45:28
そう簡単に誤操作するような組み合わせでもないんだから
そこまで無効にする必要ないだろ
22:デフォルトの名無しさん
08/05/15 17:58:26
キーボードを引っこ抜けばいい
23:デフォルトの名無しさん
08/05/15 17:59:42
Ctrl+Alt+Deleteを無効にして
別のキーストロークでBlockInputを解除する設定にしたいんだ
自分しか解除できないように
デフォでCtrl+Alt+Delete=解除・再起動
とか設定されてるから他の誰かがCtrl+Alt+Delete押すかもしれないし
24:デフォルトの名無しさん
08/05/15 18:17:33
いますぐカーネルコードにパッチでも当てるんだな。
そんなあほな事がしたければ。
25:デフォルトの名無しさん
08/05/15 18:18:19
それいじるとセキュリティに問題出るからなあ
26:デフォルトの名無しさん
08/05/15 19:52:27
方法言ったらいいだけなのに何わけわからん質問してんだ?
ここの住人はアホか?
27:デフォルトの名無しさん
08/05/15 19:55:32
質問に答える方も機械じゃないんだから
不可解だと思う場合は理由を聞きたくもなる
そんなところでしょ
28:デフォルトの名無しさん
08/05/15 19:58:38
ウィルス製作の手助けなんてしたくないしな
29:デフォルトの名無しさん
08/05/15 20:01:35
グループポリシーで無効にしたらどうなるんだろ。
30:デフォルトの名無しさん
08/05/15 20:19:31
GINA差し替えればいいよ。
31:デフォルトの名無しさん
08/05/15 20:36:38
ctrl+alt+delをフックするにはGINAを差し替える。Vistaは知らん。
再起動とかのボタンを無効にするだけならグループポリシー。
32:デフォルトの名無しさん
08/05/15 20:37:03
if(WaitForSingleObject(handle, 0) == WAIT_OBJECT_0){
/* 処理 */
}
こんな感じにスレッドの終了を感知したいんですがうまくいきません。
WaitForSingleObjectの返り値を見てみたら258などとなってしまいます。
待ち時間をINFINITEにすれば感知できるのですが、
0にして毎フレーム調べる、などはどうすればいいんでしょうか?
33:デフォルトの名無しさん
08/05/15 20:40:08
>>32
GetExitCodeThread
34:デフォルトの名無しさん
08/05/15 20:49:20
1. 他人のPCでウイルスまがいの自作アプリをこっそり走らせる
2. Ctrl+Alt+Deleteを押しても解除できない
3. 「PCがおかしいんだ!助けてくれ」と言われる
4. 自分だけが知ってる方法で解除
5. 「やっぱ○○さん凄いね」と周囲から尊敬の眼差し
35:デフォルトの名無しさん
08/05/15 20:58:32
ただ単にBlockInputを解除するボタンを変更したかっただけ
GINAかグループポリシー調べてみる、ありがとう
36:デフォルトの名無しさん
08/05/15 21:15:33
WinAPIにある関数を使ってCTRL+ALT+DELETE無効は無理なんだな
37:デフォルトの名無しさん
08/05/15 21:18:45
>>27
なるほどなぁと思ったよ
>>26みたいに「ただただ回答してれば良いのに」
っておもってたけど、そういう考え方もあるよな
Win32APIとなんも関係ないけど感動した
38:デフォルトの名無しさん
08/05/15 21:23:04
WinAPIでは無理って言うだけで済んだのにな
>不可解だと思う場合は理由を聞きたくもなる
わかるけど、己の欲望でレスするなよと
39:デフォルトの名無しさん
08/05/15 21:44:57
それは欲望とは言わん
40:デフォルトの名無しさん
08/05/15 21:46:49
なら知りたい欲望もここに書かなければ君のライフは万全だ
41:デフォルトの名無しさん
08/05/15 21:49:56
>>38
欲望というか「質問には全く関係ない事」な
42:デフォルトの名無しさん
08/05/15 22:07:26
>>32
258はWAIT_TIMEOUTだよ。スレッドがまだ終了してないってだけ。
43:デフォルトの名無しさん
08/05/15 22:10:48
怪しい質問か対エスパー質問が大半だからツッコミを入れたくなる
44:デフォルトの名無しさん
08/05/15 23:43:52
>>42
試しに
while(1){
if(WaitForSingleObject(handle, 0) == WAIT_OBJECT_0){
break;
}
}
としてもずっと検出できず、どうも上手くいきませんでした。
スレッド自体は1秒Sleepするだけなので終わらないはずはないのですが。
>>33
別に状態を見る関数があったんですね。
試してみます。
45:デフォルトの名無しさん
08/05/16 00:00:23
URLリンク(imepita.jp)
CreateWindowEx関数で作ったリストコントロールとタブコントロールの拡張ウィンドウスタイルに
WS_EX_CLIENTEDGEを指定しているのですが、タブコントロールがリストコントロールのようになりません。
原因が分からず苦労しておりまして、
どのようにすればリストコントロールのような縁になるのかご教授お願いします。
46:デフォルトの名無しさん
08/05/16 00:03:49
知らないならレスしないでください
47:デフォルトの名無しさん
08/05/16 00:12:01
知らないのでレスしません
48:デフォルトの名無しさん
08/05/16 01:35:11
>>44
それで検出できないはずはないんだが。
もしかして_beginthreadでスレッド作ってないか?
それだとスレッドが終了すると自動でハンドルが閉じられて使えなくなるぞ。
49:デフォルトの名無しさん
08/05/16 08:00:41
>>48
ああ、なるほど。
確かに_beginthreadでした。
exのほうで試してみます。
50:デフォルトの名無しさん
08/05/16 11:20:39
すいません、VBスレよりこっちのほうがいいかと思って来ました。
VB6でメニューコマンドを太字にしようと思って、
ポップアップだったら組み込みで入ってたんですが通常メニューはできないので
hMenu = GetMenu(Me.hWnd)
hFileMenu = GetSubMenu(hMenu, 0)
Dim MII As MENUITEMINFO
MII.cbSize = Len(MII) ' Len = sizeof
MII.fMask = MIIM_STATE
GetMenuItemInfo hFileMenu, 0, MF_BYPOSITION, MII ' 場所は仮
MII.fState = MII.fState Or MFS_DEFAULT ' Or = |
SetMenuItemInfo hFileMenu, 0, MF_BYPOSITION, MII
て書いて実現させました。
ところが、太字を解除しようと思って、上記の下から2行目を
MII.fState = MII.fState And Not MFS_DEFAULT
にしてみたのですが解除されません。
どうしたら解除できますか?
51:デフォルトの名無しさん
08/05/16 11:53:45
>>50
DrawMenuBarしてみた?
52:デフォルトの名無しさん
08/05/16 19:34:14
ホットキーとkeybd_event使ってJoyToKeyみたいなん作ってみたんだが
オンラインゲームではJoyToKeyみたいに発動しないんだ
なんで?
53:デフォルトの名無しさん
08/05/16 19:46:21
keybd_eventは古臭いから使うなアホ。
SendInputでKEYEVENTF_SCANCODE使って送れ。
DirectInputでも使える。
//実は昔JoyToKeyを調べたことがあって、JoyToKeyはkeybd_eventを使っている。
//ドキュメント化されていないが、第二引数にスキャンコードを渡すと、
//SendInputでスキャンコードを渡したのと同じ動作をする。
//ただし、ドキュメントにない仕様だから絶対使うな。SendInputを使え。
酷いゲームは、チート防止機能と称して、ルートキットまがいのことをやっているがな。
まあそんなWindowsがバージョンアップしたら自爆するようなゲームは無視していいだろ。
54:デフォルトの名無しさん
08/05/16 20:05:11
ありがとう
別プログラムで、IEプロパティ内の「**削除」をキー操作でやらせてるんだけど
削除中もキー送信してしまう
削除処理が終わるまで待つのって可能?
55:デフォルトの名無しさん
08/05/16 20:46:29
ネイティブなSendMessageの方がよくね?
56:デフォルトの名無しさん
08/05/16 21:33:00
こんばんは。
テキストかバイナリのベクタデータを、
一エレメントを長方形にしてベクタを連続して表示させ、
かつエレメントの値を色で表現・表示したい(短期ゴール)のですが、
どのようにコーディングすれば、またどのような関数を使えばいいのでしょうか。
例:
8ビット幅のエレメントについて、これを8ビットグレースケールに対応させて、
0h0000
0h0001
0h0002
......
0hFFFF
で256個のエレメントを256個のモノトーン長方形
□
.
.
.
■
で表示させたいのです。参考になるサイトや本をご存知でしたら教えていただけないでしょうか。
よろしくお願いいたします。
57:デフォルトの名無しさん
08/05/16 21:47:18
ベクタデータって具体的に何?truetype?
エレメントって何?ベクタデータを構成する部分曲線ってこと?
58:デフォルトの名無しさん
08/05/16 21:53:12
>ベクタデータって具体的に何
単なる値をエレメント、同じビット幅(レンジ)でその連続したデータをベクタといっています。
ベクトル演算とかのベクタです。
曲線データではなく、単なる値です。
59:デフォルトの名無しさん
08/05/16 22:08:49
わかった。間違い探しだな。
60:デフォルトの名無しさん
08/05/16 22:22:18
APIの質問なのか・・・
宿題スレに行った方がよくね?
61:デフォルトの名無しさん
08/05/16 22:24:36
SendInputの使い方msdn見てもわからんorz
サンプルplz
62:デフォルトの名無しさん
08/05/16 22:28:20
>>60
はじめそう思いましたが、上記は第一歩目ということで。。。
はじめは単なるプロットするだけですが、
それを最終的に各エレメント(要素)毎に操作できるようにしたいので、
よろしくお願いいたします。
63:デフォルトの名無しさん
08/05/16 22:34:47
貴方の考えを反映できるのは貴方だけ
64:デフォルトの名無しさん
08/05/16 22:36:52
っていうか配列って言えばいいじゃん紛らわしい
SetPixelでも使えばいいよ
65:デフォルトの名無しさん
08/05/16 22:41:35
SetPixelは遅い
66:デフォルトの名無しさん
08/05/16 22:43:55
第一歩目なら遅くても問題ないだろ
67:デフォルトの名無しさん
08/05/16 22:49:37
>>61
MSDNを読め。構造体と共用体を深く学べ。
ここでサンプルを与えてしまうのはためにならん。
実際、それほど難しくない。
戸惑うとしたら、Cの知識が十分ではない場合だけだ。
スキャンコードはMapVirtualKeyで取得できる。
68:デフォルトの名無しさん
08/05/16 22:57:00
>>67
SendInputが宣言されてるヘッダ見た
→構造体とさらにunionが使われてるのを知る
→それらの値を設定
→キーストローク設定
→SendInput呼び出しでストローク実行
INPUT name[N];
SendInput(N, name, sizeof(name));
ありがと、なんとかなりそう
69:デフォルトの名無しさん
08/05/16 23:11:32
すみません、ハード屋なのでベクタといってしまいます。
SetPixelですか。調べてみます。最低数千の長方形(内側色付き)をプロットすることになるのですが、
その遅さはネックにならないでしょうか。
正直遅いと聞いたら使う気にはなれませんが・・・。
70:デフォルトの名無しさん
08/05/16 23:25:30
名無しには要件の詳細なんぞわからんのですよ
71:デフォルトの名無しさん
08/05/16 23:28:51
だったら、メモリ上にDIB(聞いたことない言葉ならBMPのことだと思え)を
作ってそれを描画するって形にすればいい。
72:デフォルトの名無しさん
08/05/16 23:45:48
仕事ならこんな所で聞くなよ
73:デフォルトの名無しさん
08/05/16 23:57:47
こんなんやってみたけど無理だったorz 1/2
#include<stdio.h>
#include<windows.h>
#define NUMBER 2
int main(void)
{
int i;
MSG msg;
INPUT SendKey[NUMBER];
for(i=0;i<NUMBER;i++) {
SendKey[i].type = INPUT_KEYBOARD;
SendKey[i].ki.wVk = 'A';
SendKey[i].ki.wScan = MapVirtualKey('A', 0);
if(i == 0) {
SendKey[i].ki.dwFlags = 0;
}
else {
SendKey[i].ki.dwFlags = KEYEVENTF_KEYUP;
}
SendKey[i].ki.time = 0;
SendKey[i].ki.dwExtraInfo = 0;
}
RegisterHotKey(NULL,0,NULL,'B');
RegisterHotKey(NULL,1,NULL,'A');
while(0<GetMessage(&msg,NULL,0,0)) {
74:デフォルトの名無しさん
08/05/16 23:58:36
2/2
switch(msg.message) {
case WM_HOTKEY:
switch(msg.wParam) {
case 0:
i=SendInput(NUMBER, SendKey,sizeof(SendKey));
printf("B %d\n",i);
break;
case 1:
puts("A");
i=1;
break;
}
break;
}
if(i==1) break;
}
UnregisterHotKey(NULL,0);
UnregisterHotKey(NULL,1);
return 0;
}
SendInputが0を返してしまう、なんで?
75:デフォルトの名無しさん
08/05/17 00:07:13
ソース貼るな馬鹿
どこかにうpしろ
76:デフォルトの名無しさん
08/05/17 00:13:05
じゃあテンプレにソース貼るなって入れろよ
なんであかんのかkwsk
77:デフォルトの名無しさん
08/05/17 00:17:40
知らないならレスしないでください
78:デフォルトの名無しさん
08/05/17 00:21:21
とりあえず変数の使い回しは止めようよ
バグが怖いから
79:デフォルトの名無しさん
08/05/17 00:23:31
世の中にはソースコードを貼り付けられる、無料のWebアプリがたくさんあってだな。
dwFlagsにKEYEVENTF_SCANCODEを忘れている。
80:デフォルトの名無しさん
08/05/17 00:27:10
貼るにしても最小コードにして貰いたいものだ
81:デフォルトの名無しさん
08/05/17 00:30:43
そうすると、そこだけ張られても分からねえってなる予感。
話逸らしてすまんが。
82:デフォルトの名無しさん
08/05/17 00:38:37
回答以外のレスは不要です
83:デフォルトの名無しさん
08/05/17 00:57:35
>>74
puts("A");
↑
なにこの顔、ふざけてるの!?
84:デフォルトの名無しさん
08/05/17 01:03:12
>>83
ちょwww
85:デフォルトの名無しさん
08/05/17 01:18:35
>>83
不覚にもワロスwwwwwwwwwwwwwwwww
86:デフォルトの名無しさん
08/05/17 02:44:45
while('A') { }
87:74
08/05/17 02:55:03
>>75
ごめん次から気をつける
>>78
わかった、この場合は大丈夫と思って
>>79
ありがとう
>>80,81
悩んだ
88:デフォルトの名無しさん
08/05/17 03:16:08
'A'
'c'
'o'
'-'
こういうのが顔文字に見えないようなフォント誰か教えてくれ
89:デフォルトの名無しさん
08/05/17 04:05:01
いっそのこと歌舞伎にしか見えないフォントとか
90:デフォルトの名無しさん
08/05/17 04:06:34
馬鹿にしか見えない文字?
91:デフォルトの名無しさん
08/05/17 07:20:14
ボタンとかリストビューとかのコントロールで、
Set/GetWindowLongPtr を使って GWLP_USERDATA をいじってよいのでしょうか?
MSDNには一応
「This data is intended for use by the application that created the window.」
と書いてあるのですが、WM_USERと同じで使っちゃいかんと言う人もいるみたいで……
92:デフォルトの名無しさん
08/05/17 07:36:55
気になるならSetProp/GetPropを使えばいい
サブクラスならSetWindowSubclassが安全
93:91
08/05/17 11:43:21
>>92
ありがとうございます
SetPropを使ってみます
94:デフォルトの名無しさん
08/05/17 16:56:51
SendInput使ってコマンド登録してもオンラインゲームでは発動しなかったorz
95:デフォルトの名無しさん
08/05/17 17:02:25
だまれ
96:デフォルトの名無しさん
08/05/17 17:15:26
だからSendInputなんて使わないでSendMessage使えよって話
97:デフォルトの名無しさん
08/05/17 17:23:47
>>96
ありがと 次それやってみる
98:デフォルトの名無しさん
08/05/17 17:36:28
結局BOTかよ芯でこい
99:94
08/05/17 18:11:43
別にいいんじゃね?「使う事」より「作る過程」の方が
楽しいと思えるならBOTでもなんでもいいと思うんだがな。(勉強という意味で)
実際俺がそうだったわけだしフック、APIフック、逆汗は
そういった「目的」があったからこそ覚えたわけで。
まあ、全てが俺みたいな考え方してるわけじゃないし、
やる上でどう感じるかは人それぞれか。
100:デフォルトの名無しさん
08/05/17 18:14:49
明確にBOTだと言い切ってしまうとローカルルールに触れるかもしれない。
ま、俺はどうでもいいがね。
101:デフォルトの名無しさん
08/05/17 18:16:15
>>99
アンカミス?
102:96
08/05/17 18:24:05
>>101
ミスってた
94×
96○
103:デフォルトの名無しさん
08/05/17 19:43:46
オンラインゲームではなぜ反応しないのか
どうやれあ反応するのか
これに興味持ったからやってるだけだよ
JoyToKey+PPJoyじゃないとうまく動作しないのも関係あるんかな
104:デフォルトの名無しさん
08/05/17 19:44:59
>どうやれあ ×
>どうやれば ○
ホットキーしてたかB認識しなかった
105:デフォルトの名無しさん
08/05/17 19:48:02
俺なら例え知ってても教えないわ
106:デフォルトの名無しさん
08/05/17 19:54:20
たまに独り言言うウザイ奴沸くけどスレに貼りついてるんか?
当事者以外にも不快感与えるから独り言は書き込むなよ
精神年齢幼いの曝け出してるようなもんだぞ
107:デフォルトの名無しさん
08/05/17 19:58:01
うわ、あのキ●ガイが質問してたのか
108:デフォルトの名無しさん
08/05/17 20:09:05
>>86
それ今度から使うわw
109:デフォルトの名無しさん
08/05/17 21:30:23
>>106
それが独り言
110:デフォルトの名無しさん
08/05/17 22:34:32
>>106は独り言ではない
>>109が独り言
111:デフォルトの名無しさん
08/05/17 22:36:21
>>110
という独り言ですね。 わかります。
112:デフォルトの名無しさん
08/05/17 22:37:12
ここまで俺の独り言
113:デフォルトの名無しさん
08/05/17 22:45:46
指定したウィンドウを不可視状態にする(最小化ではなく、タスクバーからも消える)関数って作れますか?
114:デフォルトの名無しさん
08/05/17 22:47:17
>>113
簡単に出来るよ。
115:デフォルトの名無しさん
08/05/17 22:48:16
とりあえずこれでも実行してストレス溜めろ
while('A'){
BlocInput(TRUE);
Sleep(500);
BlocInput(FALSE);
Sleep(500);
}
116:デフォルトの名無しさん
08/05/17 22:59:33
>>113
MSがだいぶ前にそれ作ってるよ
117:デフォルトの名無しさん
08/05/17 23:08:07
>>113
ShowWindow(hwnd, SW_HIDE);
>>115
BlocInput(笑)
118:デフォルトの名無しさん
08/05/17 23:59:20
BlocInputは引数に笑も取れるのか
119:デフォルトの名無しさん
08/05/18 00:04:33
>>109-111
ワロスwwwwwwwwwwwwwwwwwwwwwwwww
120:デフォルトの名無しさん
08/05/18 00:10:44
お前らそんなしょうもない事してる暇あるなら
社会に貢献するようなソース書けよ
121:デフォルトの名無しさん
08/05/18 00:30:18
>>120
ExitWindowsEx(EWX_SHUTDOWN, 0);
実行すると自動でPCをシャットダウンしCO2削減に貢献
(SeShutdownPrivilegeの取得等は省略)
122:デフォルトの名無しさん
08/05/18 01:01:58
指定されたフォルダ内のファイルが作成、削除、更新されたら
そのファイルの名称等を知りたい。
検索してみたところ、ReadDirectoryChangesW() や
SHChangeNotifyRegisterあたりを使えば良さそうな感じ。
winXP+vb6.0でもいけるだろうか?
123:デフォルトの名無しさん
08/05/18 01:38:25
ためしてみればわかるだろうか?
124:デフォルトの名無しさん
08/05/18 01:58:06
ためしていただけないだろうか?
125:デフォルトの名無しさん
08/05/18 02:41:22
( ゚ω゚ ) お断りします
126:デフォルトの名無しさん
08/05/18 04:24:08
>>120
TerminateThread( スレリンク(tech板) );
127:デフォルトの名無しさん
08/05/18 04:40:24
>>126
コンパイルエラー: 引数が足りません
128:デフォルトの名無しさん
08/05/18 11:34:43
おまいら好きだwwwwwwwwwwwwwwwww
129:デフォルトの名無しさん
08/05/18 13:50:13
VIP臭いんだけど
130:デフォルトの名無しさん
08/05/18 13:53:22
お前がな
131:デフォルトの名無しさん
08/05/18 14:50:29
ふうん
132:デフォルトの名無しさん
08/05/18 17:24:37
AbornThread( "pc11.2ch.net", "tech", "1210775622.dat" );
133:デフォルトの名無しさん
08/05/18 18:57:10
タスクバーとスタートメニューのプロパティってどうやれば開ける?
コンパネからショートカット引っ張り出して.lnkアクセスするしかない?
134:デフォルトの名無しさん
08/05/18 19:05:51
すみませんDCOMについて質問させてください。
リモートPCのCOMを呼び出す簡単なコードを作成したんですが、
思ったように動いてくれませんでした。
CoCreateInstanceEx()にリモートPCのIPを渡してやるんですが
この関数から戻ってくるのに時間がかかって失敗します。
ためしにローカルのIPを渡してやると成功するんですが。
以下にソースを記載します。
どこかおかしなところがないか教えていただけないでしょうか。
::CoInitialize(NULL);
COSERVERINFO serverInfo = { 0, "192.168.1.2", NULL, 0 };
MULTI_QI qi = { &__uuidof(ITest), NULL, S_OK };
HRESULT hr = CoCreateInstanceEx(
__uuidof(Test),
NULL,
CLSCTX_REMOTE_SERVER,
&serverInfo,
1,
&qi);
ITestPtr p;
p.Attach(reinterpret_cast<ITest*>(qi.pItf));
p->func();
p = NULL;
::CoUninitialize();
135:デフォルトの名無しさん
08/05/18 19:13:00
>>133
Shell32.Shell.TrayProperties
136:デフォルトの名無しさん
08/05/18 19:34:42
>>134
サーバ側の用意ができていないんじゃね?
時間がかかって失敗といえば、たいてい接続のタイムアウトだし。
サーバ側のDCOM関連の設定を見直しだな。
137:デフォルトの名無しさん
08/05/18 19:38:46
それじゃ使い方わからんと思うけど
138:デフォルトの名無しさん
08/05/18 19:49:24
DCOM関連の設定というのがあるんですか。
そのあたりの詳しいやり方が説明されてるサイトとか知りませんか?
139:デフォルトの名無しさん
08/05/18 20:12:11
dcomcnfg
140:デフォルトの名無しさん
08/05/18 20:59:40
Vistaで追加されたBeginBufferedPaint等のAPIって何のために使うんでしょうか?
MSDNで探してもリファレンスは見つかるけど
これを使う目的やメリットがわからなくて・・・・
141:デフォルトの名無しさん
08/05/18 21:03:32
>>133
START shell:::{0DF44EAA-FF21-4412-828E-260A8728E7F1}
142:デフォルトの名無しさん
08/05/18 22:32:40
>>140
多分GDIがソフトウェアレンダラになったから、これまでみたいにGDIだけで同じ事をすると
XPより重くなるので専用のAPIを用意して誤魔化したのだと予想
143:デフォルトの名無しさん
08/05/18 22:50:05
>>140
自動ダブルバッファリングみたいな感じ?
Vistaだとパフォーマンス上げるのに必須だから、楽に使えるAPIを用意した、ってところかな。
一通り目を通してみたが、Animation系は結構使えそうだ。
144:140
08/05/18 23:56:23
>>142,143
一応使ってみた感じだと画像がちらつかないのでダブルバッファリング用のAPIだと思うのだけど、
今までのようなメモリDCを使わずに、専用のAPIを用意した、という認識でいいのかどうかちょっと不安。
メモリDC使うのと大して手間はかからないような気がしないでもない。
Alpha値セット用のBufferedPaintSetAlphaとかも用意されてるみたいだけど。
こういう時に使うと便利!っていう説明が欲しいなぁ。
145:デフォルトの名無しさん
08/05/19 00:01:15
>>143>>144
従来の方法(CreateCompatibleBitmapで作ったDDBに描画してからBitBltする)だと
XP以前のDDBは大抵VRAM上に確保されてVGAの恩恵を得られたが、Vistaではそうは行かなくなったので
その辺を解決する専用APIを用意したのじゃないかと
146:デフォルトの名無しさん
08/05/19 13:35:23
>>145
なるほどね。
Animation系のも使ってみた。
アニメーションの前後のDCを一度のAPI呼び出しで取得できるんだ。
実際に描画してみたら軽いフェードアウト効果?みたいなぼわっとした残像も描画された。
VistaっぽいちゃぁVistaっぽいな。
147:デフォルトの名無しさん
08/05/19 23:22:49
SetWindowsHookEx して注入したDLL内でCOMコンポーネントを使いたいのですが、
CoInitialize / CoUninitialize しても大丈夫なのでしょうか?
注入先のプロセス内ですでに呼ばれていたらまずそうな気がします。
148:デフォルトの名無しさん
08/05/19 23:31:09
それらの関数は、上手くネストするように同じ回数だけ呼べば問題ない。
全く問題ないわけではないけど。
149:デフォルトの名無しさん
08/05/19 23:36:03
ListViewで選択したリストが青くなってわかりやすくなるけどそのウィンドウがフォーカスを失うとき(Tab押下、windowsボタン押下など)灰色になるのですが、
これがフォーカスを失っても青のままにしたいのですがどのようにすればよいのでしょうか?
普通のWM_NOTIFYではフォーカスを失ったときブレークポイントにかからなくて、
WM_ACTIVATEではNMHDR構造体がなくてカスタムドローできません。
いい方法があったらご教授願います。
150:デフォルトの名無しさん
08/05/19 23:58:14
別スレッドのキャレットを変更したいと思い
GetGUIThreadInfo(GetWindowThreadProcessId(NULL, &fwid), >info);
HideCaret(gtinfo.hwndCaret);
CreateCaret(gtinfo.hwndCaret, NULL, widht, height);
ShowCaret(gtinfo.hwndCaret);
とやってみましたが上手くいきません、
hwndCaretまでは取れいるようだし、
自プロセスであれば変更されます。
何が間違えているのか教えてください。
やはり、いくつかあるキャレット変更ソフトのように
DLLをフックさせなければ無利なのでしょうか?
151:デフォルトの名無しさん
08/05/20 00:28:13
全然知らんから適当だが、
別スレッドのUIを操作するのは無理だと思う
152:デフォルトの名無しさん
08/05/20 00:32:57
>>149
LVS_SHOWSELALWAYSスタイル付ければいいような気がする
153:デフォルトの名無しさん
08/05/20 01:22:59
>>148
試したところ上手くいきました。ありがとうございます。
検証コード
#include <windows.h>
#include <msxml2.h>
#include <stdio.h>
#pragma comment(lib, "ole32")
#pragma comment(lib, "msxml2")
void examine() {
static int counter = 0;
IXMLDOMDocument* pv = NULL;
HRESULT hr = CoCreateInstance(CLSID_DOMDocument2, NULL, CLSCTX_INPROC_SERVER, IID_IXMLDOMDocument, (void**)&pv);
printf("%d : hr=%08lx\r\n", ++counter, hr);
if (SUCCEEDED(hr) && pv) { pv->Release(); }
}
void main () {
examine(); CoInitialize(NULL);
examine(); CoInitialize(NULL);
examine(); CoInitialize(NULL);
examine(); CoUninitialize();
examine(); CoUninitialize();
examine(); CoUninitialize();
examine();
}
154:デフォルトの名無しさん
08/05/20 04:48:05
>>153
DllMainでCoInitializeを呼ばないように注意して書いた方がいいぞ
155:デフォルトの名無しさん
08/05/20 20:02:02
>>152
それはすでにやっていて、フォーカスが外れても灰色にはなるのですが
その灰色になる時に青いままにしたいのですが無理でしょうか?
156:デフォルトの名無しさん
08/05/20 20:08:52
できないことも無いけど、フォーカスが無いことをユーザーはどうやって知るの?
157:デフォルトの名無しさん
08/05/20 20:17:54
教えてから訊いてやれよw
158:デフォルトの名無しさん
08/05/20 21:32:45
>>151
そうなんですかね、
あきらめてフックしなきゃダメか。
159:デフォルトの名無しさん
08/05/20 22:40:29
>153
それはアパートメントはどーなるんだ?
MTAとか混じってたら死亡でないのか?
160:デフォルトの名無しさん
08/05/20 22:48:05
海外ドメイン規制で書き込めねー
>>51
やってみたんですがダメでした。成功したらまた来ます。
161:デフォルトの名無しさん
08/05/20 23:02:34
>>159
エラーになってRPC_E_CHANGED_MODEが返ってくる。
URLリンク(msdn.microsoft.com)(VS.85).aspx
162:デフォルトの名無しさん
08/05/21 09:34:44
BMPの描画でダブルバッファリングを行いたいのですが、
〔背景BMP+新BMP〕HDC hdcBmp = 背景BMP
HDC hdcBmp3 = CreateCompatibleDC(hdcBmp);
HBITMAP hBMP3 = CreateCompatibleBitmap(hdcBmp,300,300);
SelectObject(hdcBmp3,hBMP3);
BitBlt(hdcBmp3背景BMPの上に新BMPを描画);
case WM_PAINT:
BitBlt(GetDC(hWnd),hdcBmp3を描画);
背景BMPに新BMPをくっつけたものを描画したいのですが
背景BMPが黒で塗り潰されてしまいます。
┏━━━━━┓
┃背景BMP ┃
┃┏━━━━┓┃
┃┃新BMP ┃
163:デフォルトの名無しさん
08/05/21 09:46:00
それでどうしたいんだ?
164:デフォルトの名無しさん
08/05/21 09:48:55
背景BMPが黒になるのを防ぎたいです。
165:デフォルトの名無しさん
08/05/21 09:53:39
>>162,164
その疑似コードだけ見ると、hdcBmp3に背景BMPを描画していないように
思えるが。
166:デフォルトの名無しさん
08/05/21 09:58:47
>>165
BltBlt(hdcBMP3,背景BMP);
BltBlt(hdcBMP3,新BMP);
これで大丈夫でしょうか?
167:デフォルトの名無しさん
08/05/21 10:50:26
>>162
CreateCompatibleBitmapにメモリDCを指定しては駄目。
あと
>case WM_PAINT:
>BitBlt(GetDC(hWnd),hdcBmp3を描画);
これは駄目だろ
168:デフォルトの名無しさん
08/05/21 10:57:03
>>167
CreateCompatibleBitmapには何を指定すればよいのでしょうか?
169:デフォルトの名無しさん
08/05/21 12:25:51
GetDC()あるいはCreateDC("DISPLAY")の結果あたりを渡すのが吉
170:デフォルトの名無しさん
08/05/21 12:30:01
描画用バッファは面倒だから全部DIBSectionでいいよもう
171:デフォルトの名無しさん
08/05/21 12:39:18
>>162
突込みどころ満載のソースだな
まぁ頑張れw
172:デフォルトの名無しさん
08/05/21 12:43:18
>>162
背景と前景を自前で合成して描画すればおk
173:デフォルトの名無しさん
08/05/21 12:50:05
GDIはあと何年くらい使われるんだろう
174:デフォルトの名無しさん
08/05/21 13:05:19
俺はwin32APIで作れなくなったら、ウィンドウズソフト開発から身を引く。引退。
MFCとかプログラミングじゃねーよ。あれ
175:デフォルトの名無しさん
08/05/21 13:44:17
>>171
突っ込んで下さい。
176:デフォルトの名無しさん
08/05/21 14:33:55
なんでやねん
177:デフォルトの名無しさん
08/05/21 15:00:09
>>174
MFCなんて一皮剥けばバリバリWin32APIじゃないか
178:デフォルトの名無しさん
08/05/21 17:22:34
>>177
プログラミングスタイルが受け付けない
TODO:ここにプログラム書いてね。みたいなのばかり。
しかも、いちいち用意されてる関数調べて、くっつけるだけ。
それで動かしてみて、動いてよかった。で終わり。
こんな状況でバグが出たら、生き地獄だ。
179:デフォルトの名無しさん
08/05/21 17:27:43
はあ?
180:デフォルトの名無しさん
08/05/21 17:33:16
用意されてる関数しらべてくっつけるだけってそれ以外のぷりぐらみんぐおれしらねー
181:デフォルトの名無しさん
08/05/21 17:39:51
>>178
Win32APIの勉強始めた頃は俺もそう思ってた。
今じゃGUIライブラリ無しで作る気起きませんサーセン
182:デフォルトの名無しさん
08/05/21 18:01:25
>>172
HDC hdc, hdcBmp[1], hBack[1];
HBITMAP hBmp[1];
BITMAP bm;
hdc = GetDC(hWnd);
hdcBmp[0] = CreateCompatibleDC(hdc); //背景BMP
hdcBmp[1] = CreateCompatibleDC(hdc); //新BMP
hBack[0] = CreateCompatibleDC(hdc); //合成BMP
hBmp[0] = (HBITMAP)LoadImage(hInst,MAKEINTRESOURCE(IDB_BITMAP1),IMAGE_BITMAP,0,0,LR_DEFAULTCOLOR);
hBmp[1] = (HBITMAP)LoadImage(hInst,MAKEINTRESOURCE(IDB_BITMAP2),IMAGE_BITMAP,0,0,LR_DEFAULTCOLOR);
SelectObject(hdcBmp[0],hBmp[0]);
SelectObject(hdcBmp[1],hBmp[1]);
// バックBMP
hBack[0] = hdcBmp[0];
BitBlt(hBack[0],0,20,bm.bmWidth,40,hdcBmp[1],0,20,SRCCOPY);
ReleaseDC(hWnd,hdc);
case WM_=PAINT:
BitBlt(hdc,0,100,bm.bmWidth,bm.bmHeight,hBack[0],0,0,SRCCOPY);
hdcBmp[0]とhdcBmp[1]に背景と新BMPを読み込み、背景と新BMPを合成したものをhBack[0]に読み込む。
そしてWM_PAINT時に合成した画像を描画する。という事ですか?
183:デフォルトの名無しさん
08/05/21 18:15:46
標準関数も用意されてる関数だよなって突っ込みはなし
184:デフォルトの名無しさん
08/05/21 19:16:48
5月14日に民主党の円より子参議院議員から、ある嘆願が提出されました。内容は、「美少女
アダルトアニメやゲームを規制すべき」というものです。もしもこれらが規制されてしまうことに
なれば、全国のモテない童貞男子諸君にとって大打撃です。
この嘆願が提出された理由ですが、ちょっとひどい。
街中に氾濫(はんらん)している美少女アダルトアニメ雑誌やゲームは、小学生の少女を
イメージしているものが多く、このようなゲームに誘われた青少年の多くは知らず知らず
のうちに心を破壊され、人間性を失っており、既に幼い少女が連れ去られ殺害される事件
が起きている。これらにより、幼い少女たちを危険に晒(さら)す社会をつくり出していること
は明らかで、表現の自由以前の問題である。社会倫理を持ち合わせていない企業利潤追
求のみのために、幼い少女を危険に晒している商品を規制するため、罰則を伴った法律
の制定を急ぐ必要がある。
ついては、美少女アダルトアニメ雑誌及び、美少女アダルトアニメシミュレーションゲーム
製造及び販売規制の罰則を伴った法律を制定されたい。
物凄く分かり易く要約すると、「エロゲーをする奴は心が壊れていて人間じゃないから幼女を
強姦する。だからエロゲーを規制しろ」ということになります。ええと、円議員あなたの血は何色
ですか?
だいいち嘆願理由にしても私から言わせて貰えば、「ゲームをしているうちに心が破壊される」
のではなく、「現実世界で心が破壊されたからゲームに逃げた」のです。よくよく考えれば普通の
人は分かるはずです。あれはタダの絵だ、と。
この「美少女アダルトアニメ雑誌及び美少女アダルトアニメシミュレーションゲームの製造・販
売を規制する法律の制定に関する請願」に賛同している議員は、円より子参議院議員のほかに
は、同じく民主党の下田敦子参議院議員がいます(5月21日現在)。増えないことを祈るばかりです。
URLリンク(digimaga.net)
185:デフォルトの名無しさん
08/05/21 20:09:47
>>182
まずは分かりやすい変数名を付ける事から学べ
186:デフォルトの名無しさん
08/05/21 20:19:12
>>185
すみませんでした。
背景用変数 = 背景BMP;
貼付けるBMP用変数 = 新BMP;
上部二つの合成用変数 = 合成したBMP(背景BMP+新BMP);
BitBlt(上部二つの合成用変数);
187:デフォルトの名無しさん
08/05/21 20:46:35
>>186
まずは分かりやすい変数名を付ける事から学べ
188:デフォルトの名無しさん
08/05/21 20:50:50
>>187
>>186では不満ですか?
189:デフォルトの名無しさん
08/05/21 20:55:16
>>188
お前はプログラマに向いていない
転職をおすすめする
190:デフォルトの名無しさん
08/05/21 21:03:26
仕事でやってんならもう少しまともなコメントぐらいつけろよ
そのゴミソース引き継いだ奴はめちゃくちゃ苦労するんだよボケがw
191:デフォルトの名無しさん
08/05/21 21:05:56
>>182
WM_PAINTがきたときに背景BMPと重ねるBMPを
自前で合成して一度のBiBlt呼び出しで描画するという意味。
それぞれのBMPはメモリ上にあるんでしょ?
とりあえずこれで動くものを作ってから原因とか考えながらゆっくりAPIの使いかた覚えればいいと思うよ。
192:デフォルトの名無しさん
08/05/21 21:36:47
つい最近VC++2008ExpressEditionをいじり始めたものです。
テキストエディタまがいのものでもつくってみようと始めたはいいのですが、
GETOPENFILENAME 関数を使ってファイルを開くダイアログを作ろうとしたところ、
"OPENFILENAME構造体が定義されていない"
とエラーが出ます。
てっきり windows.h で定義されていると思っていたのですが、
これでないならなんのヘッダをインクルードすればいいのでしょうか?
193:デフォルトの名無しさん
08/05/21 21:48:53
>>192
Declared in Commdlg.h, include Windows.h
てっか、WindowsSDK入れてる?
194:デフォルトの名無しさん
08/05/21 22:00:45
>>192
WIN32_LEAN_AND_MEAN
195:デフォルトの名無しさん
08/05/21 22:02:04
>>191
WM_CREATE等最初に合成したものを
WM_PAINT時に使うということですか?
196:デフォルトの名無しさん
08/05/21 22:14:25
>>182
ソースが突込み所満載なんだがまさか釣りじゃないよな?
本気で書いたソースならC言語についてもやばいぞ
197:デフォルトの名無しさん
08/05/21 22:20:08
>>196
早く突っ込んでくれ
198:192
08/05/21 22:22:28
>>194
自動で定義されていたそれをコメントアウトしたら解決しました。
ありがとうございます。
>>193さんもありがとうございました。
199:デフォルトの名無しさん
08/05/21 22:27:37
>>197
なんでやねん
200:デフォルトの名無しさん
08/05/21 22:39:34
>>197
じゃあケツ出せよ
201:デフォルトの名無しさん
08/05/21 22:41:15
>>156
WM_ACTIVATEでフォーカスを失った時にブレークにはかかったのですが、
カスタムドローするのに必要なパラメータがなかったのでできませんでした。
オーナードローで頑張ればできるのでしょうか?
202:デフォルトの名無しさん
08/05/21 22:52:33
聞きたいのですが、
BITMAPの合成はどうやればよいのですか?
203:デフォルトの名無しさん
08/05/21 23:33:54
>>195
別にWM_CREATE時じゃなくていいよ。
ちらつきを抑えたいからダブルバッファしたいんだろうからBMPは常にメモリ上にあるという仮定で、
WM_CREATEがきたときに別途mallocでもnewでもいいからバッファを確保して
そのバッファに背景BMPと表示したいBMPを合成したものを作成。
それをBitBltやStretchDIBitsのような描画関数で表示。
204:デフォルトの名無しさん
08/05/22 00:00:22
WindowsX.h にある
HANDLE_MSG() マクロを WM_COMMAND に対して使うとき、なんで return 0; になるんだ?
HANDLE_MSG() に渡すfn は void func(HWND...) でvoid型だし、HANDLE_MSG() 自体も
#define HANDLE_MSG(hwnd, message, fn) ¥
case message):return ((fn)(hwnd,...),0L)
でマクロ展開で「return 0;」が出てくる理由がよく解らん。
case message: return func(hwnd,...); //func() はvoid型
になるんじゃないの?
205:デフォルトの名無しさん
08/05/22 00:10:42
カンマ演算子
return a, b;
returnされるのはbの値。
206:デフォルトの名無しさん
08/05/22 06:15:18
メッセージクラッカって定義おかしくね?
WM_DRAWITEMとか、
> If an application processes this message, it should return TRUE.
って書かれてるのにvoidでreturn 0;されてるし
207:デフォルトの名無しさん
08/05/22 06:17:56
さんくす>>205
カンマ演算子、か。K&Rの演算子の表の一番下に確かにそんなのあるな。いままで意識した事無かった
ありがと
208:デフォルトの名無しさん
08/05/22 08:01:40
>>205
間違っています。
以上。
↓次の方どうぞ
209:デフォルトの名無しさん
08/05/22 08:58:29
キモ
210:デフォルトの名無しさん
08/05/22 09:05:15
キモ
211:デフォルトの名無しさん
08/05/22 10:19:57
ゲーム作ってるんだけど、メモリ内のデータ書き換え防止する方法とかある?
外部アプリからメモリ内サーチして書き換えるやつ防止したい。助言よろ。
212:デフォルトの名無しさん
08/05/22 10:34:36
PCの電源切れ
213:デフォルトの名無しさん
08/05/22 11:03:18
>>211
オンラインゲームじゃないなら、改造対策は不要では?
俺もゲーム作ってるんだが、ブログで改造対策のこと書いたら、
「改造対策する時間があるなら、ゲームのボリュームを増やすこととか、
もっとまともなことに使って欲しい」ってコメントが多かったよ。
改造するかはユーザーの自由なんだし、ユーザーとしては当然のコメントだが。
あと、いまどきの改造は、プロセスメモリエディタ+ルートキットで
やるから、改造を防止するなら、ユーザーから非難されることを覚悟のうえで
ルートキットじみたことをするしかないでしょうね。
214:デフォルトの名無しさん
08/05/22 12:37:49
VC++のリソースエディタでダイアログボックスが作れますが、
そのような外観の(ダイアログでない)ウィンドウを、
ウィンドウクラスで作ったウィンドウに、コントロールぺたぺた貼って作ろうと思ったら、
(CWndではなく、RegisterClassEx、CreateWindow使って)
・ウィンドウの背景色は何故かCOLOR_BTNSHADOWが(ダイアログと)等しい
・エディットボックスはCreateWindowExの第1引数にWS_EX_CLIENTEDGEにしないと立体の縁にならない
・フォントはWM_SETFONT使ってサイズを変更しないと文字がでかい
・そもそもデフォルトのフォントが当然MS shell dlgではないようで、よくわからない
(ただ、画面のプロパティから、故意にダイアログとウィンドウのフォントを違うものにした覚えはない…)
実際CreateDialogマクロでダイアログが作られるとき、ここら辺の設定ってどうなっているのですか?
このマクロもCreateWindowExを使ってウィンドウを作ると書いてあるので、
同じようなことが再現できるのではと思ったのですが…
(CreateDialogがウィンドウの大きさを決めるとき、フォントを元に作ってあるのはわかったのですが…)
215:デフォルトの名無しさん
08/05/22 13:05:33
Process Explorerで表示できるWindow Titleと同じものを取得したいと思っています。
どうもGetWindowTextで取得できるものとは別物らしく、
Process ExplorerでJuneブラウザのWindow Titleを見ると、
GetWindow~で取得した名前とは違うものを表示しているのがわかります。
一体Process Explorerで表示できるWindow Titleとは何者か、
どうすれば取得できるのでしょうか?
216:デフォルトの名無しさん
08/05/22 13:19:39
>>215
URLリンク(msdn.microsoft.com)
> GetWindowText cannot retrieve the text of a control in another application.
217:デフォルトの名無しさん
08/05/22 13:34:18
使えないAPIなんですか。エディットコントロールじゃなければいいはず…ですよね。
そうするとWindow Titleってなんだろうという話になりまして、
たとえばJaneブラウザを表示したとき、以下のようになります。
・キャプションバー、およびProcessExplorer上WindowTile列の表示
→”Jane Doe Style 【プログラム】 - Win32API質問箱 Build66”
・GetWindowText、およびタスクマネージャ上の表示
→”Jane”
”Jane Doe Style 【プログラム】 - Win32API質問箱 Build66”の文字列を取得したいわけですが、
その方法はご存知でしょうか?
218:デフォルトの名無しさん
08/05/22 13:44:31
Delphiアプリケーションには実は見えないアプリケーションウィンドウがあって・・・
219:デフォルトの名無しさん
08/05/22 14:00:33
>>218
VBアプリもそんな感じだったな
だからタスクバーに表示しないプロパティなんてのがあるんだけど
220:デフォルトの名無しさん
08/05/22 14:07:52
spy++ とか眺めてみるといいと思う
221:デフォルトの名無しさん
08/05/22 14:14:12
あー…なんとなくイメージ掴めてきました
メインウィンドウに見えたのは子ウィンドウで、だから取得できなかったと。
子ウィンドウのウィンドウタイトルの取得とか、そのあたりを調べてみます。
ありがとうございます
222:デフォルトの名無しさん
08/05/22 14:14:17
>>217
こんなんでいいのかな?
#include<windows.h>
#include<stdio.h>
int main(void){
char title_buf[256], *class_name="TMainWnd";
int title_len;
HWND hwnd;
hwnd=FindWindow(class_name, NULL);
if(hwnd==NULL){
printf("Window not found. class name [%s]\n", class_name);
return 1;
}
title_len=GetWindowText(hwnd, title_buf, sizeof(title_buf)-1);
if(title_len>=0) printf("%s\n", title_buf);
return 0;
}
223:デフォルトの名無しさん
08/05/22 14:59:33
>>222
どうもです
実行結果とSpy++を併せて見て、おおよそ理解できました。
デルファイでもVBでもデフォルトのクラス名でウィンドウを検索したのち、
目的の名前を取得する事ができました
ありがとうございます
224:デフォルトの名無しさん
08/05/22 15:05:00
WM_GETTEXTでいいのでは
225:デフォルトの名無しさん
08/05/22 16:22:09
> title_len=GetWindowText(hwnd, title_buf, sizeof(title_buf)-1);
今時こんなソース書く奴はJavaか.NETで開発してろよと思う
226:デフォルトの名無しさん
08/05/22 16:25:53
>>225
この場合同書くのがいいのかも示して欲しいです
227:デフォルトの名無しさん
08/05/22 16:28:58
>>225
>>226に同意
どう書けばよいのでしょう?
TCHARの話でしょうか?
228:デフォルトの名無しさん
08/05/22 16:29:51
TCHARじゃないとかARRAYSIZE, _countofを使えとかnullは考慮されてるから-1はいらないとか
あたりじゃない?
229:デフォルトの名無しさん
08/05/22 16:54:54
grep で include 内を探したけど ARRAYSIZE と _countof とは無かった
(使用しているのは MinGW)
230:デフォルトの名無しさん
08/05/22 16:59:28
>>229
ARRAY_SIZE と countof はあったの?
231:デフォルトの名無しさん
08/05/22 17:01:22
>>230
無いです
232:デフォルトの名無しさん
08/05/22 17:12:16
_countofはMFCで定義されていてVC2005ぐらいからCRTでも定義されてた気がする
SDKにはwinnt.hにRTL_NUMBER_OFがある
いずれにしろ>>222は人に教えられる立場で無いのは確か
233:デフォルトの名無しさん
08/05/22 17:20:27
結局は、どう書くのが模範解答になるんでしょう?
234:デフォルトの名無しさん
08/05/22 17:24:19
WinAPIはよく知らんのだが、GetWindowText()の戻り値ってエラーチェックくらいしか使い途ないのかな。
>222もエラーチェックにしか使ってないようだし、>228によればナルターミネートはしてくれているようだし。
つーか、溢れたかどうかは単純には判らないのね。
235:デフォルトの名無しさん
08/05/22 17:27:19
>>222 は
if(title_len>=0) printf("%s\n", title_buf);
を
if(title_len>0) printf("%s\n", title_buf);
にしないとエラーチェックになってない
236:デフォルトの名無しさん
08/05/22 18:18:19
>>234
GetWindowTextLengthで事前にバッファ長を調べておけば済むだろ
237:デフォルトの名無しさん
08/05/22 18:27:58
GetGlyphIndices()という、文字列からグリフインデックスに変換するAPIがありますが、
この逆のことをするAPI、つまりグリフインデックスから文字列に変換する方法って解りますか?
238:デフォルトの名無しさん
08/05/22 18:28:29
バッファ足りなくてもバッファサイズまでコピーする仕様なの?
そうだとしても戻り値にNULL文字は数えないって書いてあるから
指定サイズ==戻り値ならあふれてるのでは。
239:デフォルトの名無しさん
08/05/22 18:31:24
>>238
馬鹿丸出し
240:デフォルトの名無しさん
08/05/22 18:37:47
>>236
しかし長さを調べた直後には別のウィンドウタイトルに変わっているかもしれない
そのアプリケーションがどう振舞うか想定できない
241:デフォルトの名無しさん
08/05/22 18:50:52
そんな事を気にするなら他プロセスのテキスト取得なんて考えないことだ
(そろそろフックネタ出す奴が現れる頃か)
242:デフォルトの名無しさん
08/05/22 18:50:58
仮にバッファ長が100だったとして、GetWindowTextLength()が99を返した後GetWindowText()が99を返しても、
その間にタイトルが書き換わっていたら溢れたかどうかは判らないのね。
243:デフォルトの名無しさん
08/05/22 19:10:58
>>240>>242
必要十分なサイズのバッファを渡せば溢れる可能性は無くなる。
LPTSTR buffer = (LPTSTR)malloc(sizeof(TCHAR) * 0x7fffffff);
if (buffer == NULL) {
MessageBox(NULL, _T("この環境では使用できません"), _T("メモリ買いましょう"), 0);
exit(-1);
}
GetWindowText(hwnd, buffer, 0x7fffffff);
244:デフォルトの名無しさん
08/05/22 20:36:32
32bit環境だと/3GBスイッチ使っても厳しそうだ。
VirtualAllocのMEM_RESERVEでアドレスだけ確保して、
SEHで動的にメモリを割り当てるのが現実解だな。
245:デフォルトの名無しさん
08/05/22 20:59:09
ヒント:APIフック
246:デフォルトの名無しさん
08/05/22 21:19:35
>>245
ヒント:お前は馬鹿
247:デフォルトの名無しさん
08/05/22 21:23:10
たまにはブローとかアッパーとかさぁ
248:デフォルトの名無しさん
08/05/22 21:34:08
まずはジャブから
249:デフォルトの名無しさん
08/05/22 21:51:37
このスレの質が低下したのは、優秀な人は.NETに移ったからかもな。
250:デフォルトの名無しさん
08/05/22 21:58:09
正解
251:デフォルトの名無しさん
08/05/22 22:06:48
今頃気付いたのか
252:デフォルトの名無しさん
08/05/22 22:25:19
Advanced Windowsの著者だって.NETの本を書くこんな世の中じゃ
253:デフォルトの名無しさん
08/05/22 23:38:50
poizun
254:デフォルトの名無しさん
08/05/22 23:47:16
poison
255:デフォルトの名無しさん
08/05/22 23:49:58
prison
256:デフォルトの名無しさん
08/05/22 23:57:59
ぬるぽ
257:デフォルトの名無しさん
08/05/23 00:07:37
ga
258:デフォルトの名無しさん
08/05/23 00:35:25
てか、sizeof(title_buf)-1を最後の引数に指定してるから、
溢れる可能性など皆無だが?
溢れるとかなに言ってるんだ?
259:デフォルトの名無しさん
08/05/23 00:47:09
↑理解していない何か
260:デフォルトの名無しさん
08/05/23 06:45:56
↑話を理解している天才
261:デフォルトの名無しさん
08/05/23 10:20:45
↑流れを読む天才
262:デフォルトの名無しさん
08/05/23 10:22:11
↓通常の流れに戻すという偉業を成し遂げた天才
263:デフォルトの名無しさん
08/05/23 10:30:46
#include<stdio.h>
#include<windows.h>
int main(void)
{
/**/MSG msg;
/**/while(0 < GetMessage(&msg,NULL,0,0)){
/******/switch(msg.message){
/**********/case WM_KEYDOWN:
/**************/puts("keydown");
/**************/break;
/******/}
/**/}
/**/return 0;
}
これで何かkey押してもダメなんだけどどうすればいい?
264:デフォルトの名無しさん
08/05/23 11:01:41
ウィンドウが無いじゃんか
265:デフォルトの名無しさん
08/05/23 11:06:59
コンソールに表示させたいん
266:デフォルトの名無しさん
08/05/23 11:52:02
な ん で ( ´∀` ) や ね ん !
267:デフォルトの名無しさん
08/05/23 12:31:48
プロシージャならメッセきたら処理するけど
コンソールの場合はどうやるのか気になって
268:デフォルトの名無しさん
08/05/23 13:12:02
CreateWindowでスタティックテキストを作りました。
テキストの背景色を透過したいんだけど、いい方法ありませんか?
hStatic = CreateWindowEx(0, "STATIC", cString, WS_VISIBLE | WS_CHILD | SS_SIMPLE,
X, Y, Width, Height, hWnd, (HMENU)Static, (HINSTANCE)hInst, NULL);
269:デフォルトの名無しさん
08/05/23 13:20:55
WS_EX_TRANSPARENTじゃダメ?
270:268
08/05/23 13:31:00
>>269
ダメでした。。
レバーコントロールに入れたツールバーにスタティックテキスト置いてます。
hStatic = CreateWindowEx(WS_EX_TRANSPARENT, "STATIC", cString, WS_VISIBLE | WS_CHILD | SS_SIMPLE,
X, Y, Width, Height, hWnd, (HMENU)Static, (HINSTANCE)hInst, NULL);
271:デフォルトの名無しさん
08/05/23 13:39:40
ツールバー、もしくはメニューの背景にブラシを使う事は出来ますか?
272:デフォルトの名無しさん
08/05/23 13:40:07
WM_CTLCOLORSTATICでNULL_BRUSHを返す
273:デフォルトの名無しさん
08/05/23 14:12:15
あるプロセスが、自分を起動したプロセス(親プロセス)を知る方法はありますか。
274:デフォルトの名無しさん
08/05/23 14:20:00
ある
275:デフォルトの名無しさん
08/05/23 14:21:19
レバーじゃなくてリバーだと思う
276:デフォルトの名無しさん
08/05/23 14:23:18
"レバーコントロール" の検索結果 約 1,270 件中 1 - 10 件目 (0.13 秒)
"リバーコントロール" の検索結果 約 185 件中 1 - 10 件目 (0.13 秒)
277:デフォルトの名無しさん
08/05/23 14:27:41
>>276
それ「レバー」「コントロール」別単語として検索した結果だから
278:デフォルトの名無しさん
08/05/23 14:27:45
どっちもすくな!
279:デフォルトの名無しさん
08/05/23 14:28:42
リバーコントロールでググると
もしかして: レバーコントロール
と出るなw
280:268
08/05/23 14:28:43
>>272
どうも。WM_CTLCOLORSTATICメッセージ勉強してみます。
281:デフォルトの名無しさん
08/05/23 14:41:49
>>277
馬鹿
282:デフォルトの名無しさん
08/05/23 15:02:53
レバー ReBar に一致する日本語のページ 約 268 件中 1 - 30 件目 (0.03 秒)
リバー ReBar に一致する日本語のページ 約 277 件中 1 - 30 件目 (0.24 秒)
283:デフォルトの名無しさん
08/05/23 15:28:05
rebarの発音はrí:bà:rだからリバーと読む方が実際の発音に近い
つまりレバーと読みたいならパーチーとかボデーとか言ってろってこった
284:デフォルトの名無しさん
08/05/23 15:33:15
↑アホ
285:デフォルトの名無しさん
08/05/23 15:35:16
↑話を理解してない馬鹿
286:デフォルトの名無しさん
08/05/23 15:36:33
ReBarをレバーっていうのは斬新だなw
287:デフォルトの名無しさん
08/05/23 15:39:09
↑馬鹿
288:デフォルトの名無しさん
08/05/23 15:40:32
>>281=>>284=>>287=大馬鹿
289:デフォルトの名無しさん
08/05/23 15:41:46
↑はずれ
290:デフォルトの名無しさん
08/05/23 15:43:10
>>281,>>284,>>287∈大馬鹿
という意味だろ
さすが大馬鹿
291:デフォルトの名無しさん
08/05/23 15:45:37
レバーという表現は日本語としても定着してるんだからいんじゃね?
292:デフォルトの名無しさん
08/05/23 15:49:00
>>290
はずれ
293:デフォルトの名無しさん
08/05/23 15:51:19
意味が通じるなら、それでおk。
294:デフォルトの名無しさん
08/05/23 15:59:11
>>291
定着していません。
ほとんどの日本人はレバーと聞くと肝臓の事だと認識します。
295:デフォルトの名無しさん
08/05/23 16:05:50
取っ手(lever)と認識する人も居るよ
296:デフォルトの名無しさん
08/05/23 16:09:36
ReをReTryとかのReって解釈する人もいる
297:デフォルトの名無しさん
08/05/23 16:11:51
Win API ReBar レバー 11件
Win API ReBar リバー 100件
Yahoo
298:デフォルトの名無しさん
08/05/23 16:13:41
↑全角数字馬鹿
299:デフォルトの名無しさん
08/05/23 16:17:03
>>296
語源的には同じ
300:デフォルトの名無しさん
08/05/23 16:17:51
うーん、、、全角数字の時点で言い訳できないな
301:デフォルトの名無しさん
08/05/23 16:19:22
ほとんどの日本人はリバーと聞くと川の事だと認識します。
302:デフォルトの名無しさん
08/05/23 16:23:40
ReBarって書けばいいんだよ
カタカナ読みに拘ると面倒事になるだけだ
303:デフォルトの名無しさん
08/05/23 16:27:03
このスレで「リバー」だとriverよりはrebarだろう。
このスレで「レバー」だとliverやleverよりは「rebarのことなんだろうなぁ」だろう。
304:デフォルトの名無しさん
08/05/23 16:27:55
↑話を理解してない馬鹿
305:デフォルトの名無しさん
08/05/23 16:35:18
え?あれ取っ手付いてるからレバーなんだと思ってたよ
別モノだったのかw
306:デフォルトの名無しさん
08/05/23 16:44:39
URLリンク(msdn.microsoft.com)
では一応「リバー コントロール」でも他のページに見当たらない
307:デフォルトの名無しさん
08/05/23 16:44:40
BitBltやStretchBltで表示した画像が解像度を変更すると消えてしまい困っています。
WM_DISPLAYCHANGEでWM_PAINTを投げたりInvalidateRectを投げたりしましたが再描画されません。
SW_MINIMIZEとSW_NORMALを立て続けに投げる方法は表示される時とされない時があり駄目なようです。
どうすれば解像度変更直後にきちんと再描画出来るようになるのでしょうか。
308:デフォルトの名無しさん
08/05/23 16:52:59
おっ!質問きたぞ
雑談はこれまでだ
309:デフォルトの名無しさん
08/05/23 16:55:21
>>307
WM_PAINTで描画してるんだよな?
再描画されないことは無いと思うが、いったいどうやってんの?
再描画されないとは具体的にどうなんのの?
>WM_PAINTを投げたり
まあこれ見て怪しいのはわかるが。
310:デフォルトの名無しさん
08/05/23 17:01:56
InvalidateRectの後にUpdateWindow呼んでる?
311:309
08/05/23 17:02:18
一応書いておくけど
WM_PAINTを投げたくなったら、
InvalidateRect → UpdateWindow のコンボで。
InvalidateRect自体は投げてるみたいだから、この場合は解決策じゃないけど。
312:デフォルトの名無しさん
08/05/23 17:10:39
>>311
RedrawWindowにRDW_UPDATENOWを指定すればいい
313:デフォルトの名無しさん
08/05/23 17:17:34
なんちゃってAI作った人いる?
314:デフォルトの名無しさん
08/05/23 17:21:43
>>313
const char* msg[] = {
"↑話を理解してない馬鹿",
"知らないならレスしないでください",
"それぐらい察してほしかったってのが本音"
};
for(;;) post2ch(msg[rand()%3]);
315:デフォルトの名無しさん
08/05/23 17:32:59
>>313
スレタイ
316:307
08/05/23 18:17:10
InvalidateRect(hWnd, NULL, FALSE);
UpdateWindow(hWnd);
RedrawWindow(hWnd, NULL, NULL, RDW_UPDATENOW);
これらを投げても駄目でした。
画像のみを表示するソースはウィンドウを透過すれば(SetLayeredWindowAttributes)特に何もしなくても表示されました。
透過しないとやはり何も表示されません。
CreateWindowExでボタン、ステータスバー、ツールチップを追加している問題のソースではこれらコントロールは再描画されるのに画像が表示される場所はまるで非表示にしたかのように背景色のみになっています。
もう訳が分からないですo...rz。
もしかしたらウィンドウプロシージャの書き方に問題があるのかも知れませんが、以下の各caseのbreak;をreturn 0;に書き換えると何故かウィンドウの挙動も表示もおかしくなり、CPU使用率も100%になってしまいます。
因みに今回の場合はreturn 0;に書き換えても症状は改善しません。
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
{
switch (msg)
{
(中略)
case WM_PAINT:
SetStretchBltMode(hDC, STRETCH_DELETESCANS);
StretchBlt(hDC, 10, 10, 256, 192, hCompatDC, 0, 0, bmp.bmWidth, bmp.bmHeight, SRCCOPY);
break;
(中略)
}
return DefWindowProc(hWnd, msg, wp, lp);
}
317:デフォルトの名無しさん
08/05/23 18:25:29
>>316
・・・BeginPaintとEndPaintは・・?
hDCはどこからきたの?
318:デフォルトの名無しさん
08/05/23 18:28:02
やはり怪しかったのね
319:デフォルトの名無しさん
08/05/23 18:34:01
>>317が正解だな
的を射ている
320:デフォルトの名無しさん
08/05/23 18:44:10
WM_PAINTでBegin/EndPaint忘れって上にもあるし前スレにもあったな
いったい何を見て勉強してるんだ?
321:デフォルトの名無しさん
08/05/23 18:45:07
猫だろ。どうせ。
322:デフォルトの名無しさん
08/05/23 19:04:37
犬希望
323:デフォルトの名無しさん
08/05/23 19:18:07
WM_PAINTワンBeginPaintワンワン
324:デフォルトの名無しさん
08/05/23 19:19:40
MFC使えとまでは言わないけど、コンストラクタ・デストラクタでBegin/EndPaintをラップした
クラス程度は作っておくと便利よ。
325:デフォルトの名無しさん
08/05/23 19:27:38
それならOnPaintをオーバーライドするだけで描画できるクラスを作った方が遥かに便利
326:デフォルトの名無しさん
08/05/23 19:30:54
CpaintDC と OnDraw ですね
327:デフォルトの名無しさん
08/05/23 19:33:07
つうか今時MFCやWTLを使わずに素のWin32SDKでアプリ作る奴なんているの?
死ぬほど面倒じゃん
328:316
08/05/23 19:39:21
static PAINTSTRUCT ps;
(中略)
BeginPaint(hWnd, &ps);
SetStretchBltMode(hDC, STRETCH_DELETESCANS);
StretchBlt(hDC, 10, 10, 256, 192, hCompatDC, 0, 0, bmp.bmWidth, bmp.bmHeight, SRCCOPY);
EndPaint(hWnd, &ps);
return 0;
にしたら正常に表示されました。本当にありがとうございました。
一見正常に動いていたのはDefWindowProcに処理を回していたからなんですね。
因みに参考にしたサイトはこちらです。
Programing Place
URLリンク(www.geocities.jp)
>>324-327
VC++2008EEでC及びC++の勉強中です。
まだC++はまともに使えないのでクラスの使い方も(VB.NETやC#はともかく)分かりません。
今後の課題としてクラスの勉強を始めようと思います。
329:デフォルトの名無しさん
08/05/23 19:43:13
そのサイトにも、
>描画の処理を行うとき、必ずBeginPaint()とEndPaint()を使って、描画処理を挟み込む形を取っていましたが、これは必ずそうしなければなりません。
って書いてるじゃん
330:デフォルトの名無しさん
08/05/23 19:44:22
>>328
そこ、前スレにもトンデモサイトとして出てたよ
特にこれ
URLリンク(www.geocities.jp)
以下を次スレからテンプレ化キボン
●参考すべきでない所
Programing Place
URLリンク(www.geocities.jp)
331:デフォルトの名無しさん
08/05/23 19:44:23
>>328
志村!足りない!足りない!
332:デフォルトの名無しさん
08/05/23 19:45:32
と思ったら、BitBltのあたりでいきなりはしょってるなw
333:デフォルトの名無しさん
08/05/23 19:46:42
"Programing"の時点で糞確定だけどな
334:デフォルトの名無しさん
08/05/23 19:47:04
>>328
hDCはBeginpaintの戻り値かps.hdc 使う
335:デフォルトの名無しさん
08/05/24 06:15:24
本当の所、BeginPaintを必ず使わなければいけないという決まりはない。
ただ、これ一回の呼び出しで行われる処理内容を考慮すると、使わない理由が無いな。
336:デフォルトの名無しさん
08/05/24 07:17:06
>>330
それよりお勧めサイト書いてくれたほうがうれしい
337:デフォルトの名無しさん
08/05/24 07:52:52
>>336
英語版MSDN
338:デフォルトの名無しさん
08/05/24 10:56:51
調べても分からなかったので質問させてください
CreateMenuでよくアプリケーション上部にあるFile(F)とか表示(V)のようなメニュー作成しています。
メインウィンドウのサイズを変更したとき、Menuのサイズを変更しないようにしたいです。
メニューの横幅固定で。この場合、メニューサイズを固定するAPIか、メニューの構造体に横幅指定することができるとか
方法がありましたら、ご教示ください。よろしくおねがいします。
環境はVC + SDKです。
339:デフォルトの名無しさん
08/05/24 10:58:48
無理
340:デフォルトの名無しさん
08/05/24 11:35:06
ツールバーで代用するとか
苦労の割に見返りがサイズ固定だけって泣けるけど
341:デフォルトの名無しさん
08/05/24 11:44:03
標準と違う動きをするアプリって違和感があるよね。
342:338
08/05/24 11:48:09
単刀直入に言うと、ウィンドウサイズ変更時にメニューのちらつきをなくしたいです。
勉強中なので間違ってるかもしれないですが、CreateMenuで作成してもWNDCLASSEXで
wc.lpszMenuName=MAKEINTRESOURCE( IDR_MENU);登録にしても、
結局はメインウィンドウの再描画に巻き込まれる形になるので、ちらつきます。
Janeとかのメニューはどうやって実現してるのかなぁ。。
343:338
08/05/24 12:54:04
もうちょっと考えて見ます
お騒がせしました。
344:デフォルトの名無しさん
08/05/24 12:57:53
>>341
IEのメニューはツールバーで出来てるが
コマンドバーって呼ばれてる
WTLにCCommandBarCtrlってクラスがあるけどこれはバグが多すぎてあまり使えない
345:デフォルトの名無しさん
08/05/24 14:20:04
>>344
CCommandBarCtrlのバグって例えばどんな?
346:デフォルトの名無しさん
08/05/24 15:09:32
>>345
とりあえず致命的なのを2点ほど
メニューをクリックするとCommandBarにフォーカスを持って行かれる
→フォーカスを元に状態設定を行っていると正常に機能しなくなる
IEのようなReBar上で右クリックメニューを出すようなのを作っていると
メニューが出ているときにメニュー項目上で右クリックすると落ちることがある
→DoTrackPopupMenuに再入してしまうのが原因なので適当にフラグ立てて回避するしかない
Donut系ブラウザはこの辺のバグを回避するためにCCommandBarCtrlを使っていない
俺もこの辺のバグを回避するためにDonutのソースを参考にして自作した
347:デフォルトの名無しさん
08/05/24 15:10:10
>>338
>メインウィンドウのサイズを変更したとき、Menuのサイズを変更しない
??
ウインドウを小さくした時メニューがはみ出してもいいの?
変なアプリーw
348:デフォルトの名無しさん
08/05/24 15:15:16
サイズ固定でシェブロン出すのよくあるけど。
349:デフォルトの名無しさん
08/05/24 15:15:46
右端に >> を付けたいって事だろ
そういうのはコマンドバーって言うんだよっていうのが以後の流れ
350:デフォルトの名無しさん
08/05/24 15:40:07
APIの話では無いのでスレ違いだと思いますが
Windows XPで外部信号に対して±10mS程度以内で
応答を返すことは可能なのでしょうか?
351:デフォルトの名無しさん
08/05/24 15:51:28
エスパーじゃないしマイナスは厳しいんじゃないか。
352:デフォルトの名無しさん
08/05/24 16:26:25
え、-10ms以内で応答を返せないの?
近頃のWindowsは糞だなぁ
353:デフォルトの名無しさん
08/05/24 16:31:12
さすがのWINDOWSでも、時をかけるのは難しいんじゃないか?
354:デフォルトの名無しさん
08/05/24 16:53:26
待ってられない信号がある。
それはさておき、「何らかのインターネット接続が存在するかどうか」を知る方法はありますか?
今は自分のグローバルIPアドレスに対してpingを打っているのですが、激しく間違っている気がします。
355:デフォルトの名無しさん
08/05/24 16:58:33
それはすれ違いじゃないか?
ネットワーク相談室の方がいい気がする。。
356:デフォルトの名無しさん
08/05/24 17:05:24
Network Managementで接続を列挙するとか
wininetでonline/offlineをとるとか
357:デフォルトの名無しさん
08/05/24 17:31:55
wininet.dll が使えるなら(というか使えない環境のほうがレアだろうが)、
InternetGetConnectedStateEx だろう。
358:デフォルトの名無しさん
08/05/24 17:50:12
>>357
インターネット環境が無いと使えない某ソフトが確かそのAPIでチェックしてたような
勿論nopで埋めうわ何をするやmくぁwせdrftgyふじこlp
359:デフォルトの名無しさん
08/05/24 18:02:39
>>358
日本語でそっち関連の情報を提供してるとこある?
中国語とかならわんさかあるんだけど...
360:デフォルトの名無しさん
08/05/24 18:06:37
そんな物自分で勉強しろよ
スレ違いな上にグレーゾーンな事をここで聞くな馬鹿
361:デフォルトの名無しさん
08/05/24 18:09:26
>>359
英語を苦にしないならMSDN。
ていうか、なんで日本語版にはwininet関数が載ってないんだ。
362:デフォルトの名無しさん
08/05/24 18:22:47
昔はWinAPIの日本語ヘルプが付いてたのに、今やWin95時代から更新止まってる古い情報しか無いのはどうよ
そもそもMSKBですら最近は機械翻訳だらけだし、中国語とかの方が翻訳されてるなんておかしい
もう日本のIT技術者は世界から見捨てられてるという事?
363:デフォルトの名無しさん
08/05/24 18:23:14
>>350
デバイスドライバならともかく、
一介のアプリケーションで100%確実の保証は絶対無理だな。
364:デフォルトの名無しさん
08/05/24 18:24:59
>>362
おかげで、英語を読むことの抵抗感がなくなったから感謝しているw
日本のIT技術者はもっと世界に羽ばたけということだよ。
365:デフォルトの名無しさん
08/05/24 18:26:49
>>362
正解
366:デフォルトの名無しさん
08/05/24 18:32:43
まぁIMEが中国で開発されてるぐらいだから仕方ないか
日本のプログラマはもう用済みなんだろうな
367:デフォルトの名無しさん
08/05/24 18:39:15
英語も中国語もできる俺は勝ち組。
368:デフォルトの名無しさん
08/05/24 18:41:12
>>367
すぐにプログラマから足を洗って商売でも始めるんだ。
369:350
08/05/24 18:41:48
>>351-353
ですな~
信号を受けて50mS±10mSとかです。
皆さん親切だ。w
370:デフォルトの名無しさん
08/05/24 18:47:08
Windows上であるいじょう、確実な保障はできないが、
そのくらいの精度なら、大抵の環境で余裕だろ。
371:デフォルトの名無しさん
08/05/24 18:47:36
>>369
50±10ms ぐらいなら可能なはず。
Windows のタイマの精度が 16ms ぐらいだから結構ギリだがな。
リアルタイム性を Windows に求めるのは少しつらいかも知れん。
372:デフォルトの名無しさん
08/05/24 18:48:52
そこでRTLinuxですよ、俺は使ったこと無いけど
373:デフォルトの名無しさん
08/05/24 19:16:19
Windowsで精度を求めるなら。
URLリンク(msdn.microsoft.com)(VS.85).aspx
374:デフォルトの名無しさん
08/05/24 19:34:05
ダイアログに関する質問です。
SS_BITMAPを指定してスタティックコントロールを作って画像を表示した場合、画像がウィンドウより大きいとはみ出しますが、StretchBlt()のように固定サイズ内での縮小表示は出来ますか。
事前に何処かで縮小処理を行ったビットマップを読むしかないのでしょうか。
375:デフォルトの名無しさん
08/05/24 19:38:28
>>374
つ SS_REALSIZECONTROL
XP以降でダイアログのビットマップやアイコンが潰れてる元凶
376:350
08/05/24 19:50:25
やはり10mSの精度は無理っぽいですね。
出来たとしても15mSくらいが限界なんでしょうな。
全然分ってないけど、デバイスドライバーにすればタイムスライスの
壁は越えられるのでしょうか。。
377:デフォルトの名無しさん
08/05/24 19:51:39
>>375
手書きでリソースファイルを修正したら出来ました、ありがとうございます。
ResEdit1.4.3のバグでSS_REALSIZECONTROLをtrueにしてもリソースファイルに反映されないのが原因だったようです。
378:デフォルトの名無しさん
08/05/24 20:04:34
CreateWindow関数って使われなくなったのですか?
何故か、自動的にCreateWindowExAと解釈されてしまうのですが……。
ちなみに環境はVC++2008ExpOSはXP使ってます。
379:デフォルトの名無しさん
08/05/24 20:08:38
すみません自己解決しましたorz
マクロのコンパイルエラーだった。
380:デフォルトの名無しさん
08/05/24 20:21:55
>>376
タイムスライスの壁は越えられないこともないが下手な実装だと Windows 全体が不安定になるわな。
デバイス側から割り込みをかけられる機構があるなら手っ取り早い。(割り込みはほぼ最大優先度で処理されるため。)
381:デフォルトの名無しさん
08/05/24 20:51:01
Webダウンローダー等でダウンロードしたファイル名に
?等が入っている場合があるのですが、これは問題ないのですか?
382:デフォルトの名無しさん
08/05/24 20:58:11
>>381
問題あり
ウイルスに感染していると自動的に?等が入る仕組みなので中身を見る前に捨てましょう
383:デフォルトの名無しさん
08/05/24 21:02:10
>>382
例えば
.cgi?name=abcd等では?
384:デフォルトの名無しさん
08/05/24 21:07:51
せめてAPIの質問してくれよ
385:デフォルトの名無しさん
08/05/24 21:12:11
>>384
ファイルの新規作成では?使えないのに
CreateFileが?使えるのは何故ですか?
386:デフォルトの名無しさん
08/05/24 21:14:13
>>376
> Windows XPで外部信号に対して
今実装してる方法では、どうやって信号取得してるの?
もうちょっと話が具体的にならないと、これ以上アドバイスできない。
387:デフォルトの名無しさん
08/05/24 21:14:41
>>385
Explorerのバグだろ
".htaccess"とかも作成できない
388:デフォルトの名無しさん
08/05/24 21:17:57
>>387
バグですか、
?をファイル名に含むファイルをプログラムが生成する事に何か問題はありますか?
389:デフォルトの名無しさん
08/05/24 21:19:35
そんな事知るか
MSに聞け
390:デフォルトの名無しさん
08/05/24 21:20:20
>>389
あなたの予想で構いません
391:デフォルトの名無しさん
08/05/24 21:21:51
>>387
それについてはこういう理由
URLリンク(blogs.msdn.com)
392:デフォルトの名無しさん
08/05/24 21:25:46
>>391
ありがとうございます。
393:デフォルトの名無しさん
08/05/24 21:34:14
>>391
以前その記事を見てバグだと確信した
・拡張子を表示しない設定にしていても".txt"のようなファイル名は拡張子含めて表示すればいい
・拡張子を表示する設定にしていれば".txt"のようなファイルを作成できるようにすればいい
・そもそも拡張子を表示しない設定なんて不要 (セキュリティ的に)
選択肢は色々あるし、.htaccessなんて比較的PCに詳しくない人間でも作る時代なのに
Win95以来から今に至るまで放置状態なんて開発者の傲慢だろ
自分でシェル拡張作れとか、もうアホかと
394:デフォルトの名無しさん
08/05/24 21:39:21
・そもそも拡張子でのファイル識別がアホ
395:350
08/05/24 21:39:23
>>386
未だ具体的な実装レベルの話にはなっていません。
Windowsで10mS応答は無理(?)なのでリアルタイム処理が必要な
部分は機器側で実装しないと無理~・・・のような話をしている段階です。
396:デフォルトの名無しさん
08/05/24 21:41:23
>>394
Macみたいにファイルの先頭にゴミ付けて識別するのもどうかと思う
397:デフォルトの名無しさん
08/05/24 21:41:52
この流れの中で質問するのは恐縮なのですが、「Wininet」を使用したFTP通信で困った状態になっています。
APサーバからファイルサーバ上の複数のFTPサイトに対して、ファイルをFTP PUTするサービスがあるのですが、
特定のFTPサイトだけ「550 access denied」になってしまいます。
ファイルサーバ上のFTPサイトは「書き込み:可」になっていますし、フォルダの権限も同様です。
新規ファイルのPUTなので上書きに失敗している訳でもありません。
使用しているユーザーは共通のものを使っているので、他のFTPサイトにPUTできることから、
権限は足りていると判断しています。でも、アクセス拒否エラーが発生してしまいます。
ファイルサーバを再起動しても改善しません。
このような場合、他にどの点を疑って調査すれば良いでしょうか?
398:デフォルトの名無しさん
08/05/24 21:41:52
いい加減ファイルシステムにファイルタイプ情報持たせろよ
399:デフォルトの名無しさん
08/05/24 21:42:41
>>396
いつの話?
400:デフォルトの名無しさん
08/05/24 21:44:26
いまどき拡張子でタイプ判別なんてうんこプログラム書いてる奴はいないだろ…
401:デフォルトの名無しさん
08/05/24 21:45:27
>>400
つExplorer
402:デフォルトの名無しさん
08/05/24 21:47:09
>>398
Vistaで間に合わなかったアレか
403:デフォルトの名無しさん
08/05/24 21:49:16
>>393
いやちょっとまて、一体どこを読んだらそういう解釈になるんだよ。
そりゃまあ、世の中には.htaccessぐらい余裕で書ける婆ちゃんがいるかもしれんさ。
でもな、世の中はそーじゃねーんだよ。
だから一番バカに合わせておくんだ。
404:デフォルトの名無しさん
08/05/24 21:49:44
間に合わなかったっつーか、Windowsの機能として入れる計画は無くなった。
405:デフォルトの名無しさん
08/05/24 21:54:14
>>401
いやMS以外で
406:デフォルトの名無しさん
08/05/24 21:54:27
>>403
バカはPCを使わなくていい
バカに合わせると使いづらくなるだけ
バカは紙と鉛筆で十分
407:デフォルトの名無しさん
08/05/24 21:55:39
バカにはTablet PCでも与えてとけばおk
408:デフォルトの名無しさん
08/05/24 21:56:41
カプセルPCでおk
409:デフォルトの名無しさん
08/05/24 22:03:45
>>405
Windowsのファイルシステム系APIを使うほぼ全てのアプリがそうじゃない?
バイナリフォーマットを扱うアプリであれば、最初に拡張子で選別して、次に中身を見るだろうけど。
(適切かつ安全に見ることができないアプリも多いが)
410:デフォルトの名無しさん
08/05/24 22:09:35
あ~もういいや
411:デフォルトの名無しさん
08/05/24 22:16:11
やいいうも~あ
412:デフォルトの名無しさん
08/05/24 22:18:00
あぃいおまぁ
413:デフォルトの名無しさん
08/05/24 22:21:45
>>398
NTFSなら副次ストリームとか使えるけど、
古いファイルシステムも捨てられない。
Windowsは互換性をけっこう気にするからな。
414:デフォルトの名無しさん
08/05/24 22:27:31
古いファイルシステムってFATの事を言いたいのか?
USBメモリやSD/CFカードではまだまだ現役バリバリだろ
415:デフォルトの名無しさん
08/05/24 22:30:02
>>378
CreateWindowとCreateWindowExだったら、
どっちでもいいときは好きなほうを使えばいい。
仮に、CreateWindowが実在したとしても、どうせ中でCreateWindowExを呼ぶだけ。
それだったらCreateWindowはヘッダでCreateWindowExに展開する今の方式なら、
システムDLLがCreateWindowの実装を省ける分サイズ削減できる。
416:デフォルトの名無しさん
08/05/24 23:24:53
>>415
大抵内部で~Exを呼んでる (LoadLibraryとか)
むしろマクロで済ませてるCreateWindowが特殊
417:デフォルトの名無しさん
08/05/24 23:50:21
>>395
10mS精度ぐらいならおおむねできるけど、ほかの処理で数百ミリ遅れることは多々ある。だからリアルタイムを現実的に無理。デバイスドライバでも同じ。
でもHALでリアルタイム実行させたり、windowsを仮想化させてリアルタイム実行させるるソフトがあるから、リアルタイムHALやRTXでググってみれれ
418:デフォルトの名無しさん
08/05/25 09:35:17
>>397
ほかのFTPソフトを使うとそのサイトにはうpできるんんか?
419:デフォルトの名無しさん
08/05/25 09:53:00
んんか?
420:デフォルトの名無しさん
08/05/25 10:01:00
できるんんか の検索結果 約 1,850,000 件
w
421:デフォルトの名無しさん
08/05/25 10:02:13
よく見たら一つ上のレスを真似しただけかな
実行させるるソフト
ググってみれれ
今時カナ打ちかよw
422:デフォルトの名無しさん
08/05/25 10:41:50
かな入力の方が日本語のタイピングは速い。
423:デフォルトの名無しさん
08/05/25 10:45:00
というのは間違い。
424:デフォルトの名無しさん
08/05/25 10:47:13
キーをタイプする回数が減るから事実。
425:デフォルトの名無しさん
08/05/25 10:51:25
かな入力じゃ10分間で5000タッチできる気がしない
426:デフォルトの名無しさん
08/05/25 10:56:24
それは慣れていないだけ。
427:デフォルトの名無しさん
08/05/25 11:07:29
まあどうせ俺なんか入力速度に脳が追いつかないからどうでもいいんだけどね
428:デフォルトの名無しさん
08/05/25 11:09:03
しかし日本語は読みから漢字に変換しなければならないので、
いくら読みがなを早く入力できたからといって、それほど早くはならない気がする。
完璧に変換してくれるIMEは存在しないし。
429:デフォルトの名無しさん
08/05/25 11:28:27
そこでT-Code
430:デフォルトの名無しさん
08/05/25 12:54:12
ライターじゃあるまいし日本語のタイピング速度なんてどうでもいいだろ
それともひまわりでプログラミングしてるのか?
431:デフォルトの名無しさん
08/05/25 12:57:08
日本語のレスに対する突っ込みだったから。
432:デフォルトの名無しさん
08/05/25 13:04:24
>>417=>>422=>>431って事でいいの?
とりあえず君がカナ入力マンセーなのは分かったからもういいよ
433:431 = 424 = 422;
08/05/25 13:07:11
>>432
違う。俺はローマ字入力。事実を伝えただけ。スレ違いなので終わる。
434:デフォルトの名無しさん
08/05/25 13:08:42
なんで怪しい日本語になるダヨ
435:デフォルトの名無しさん
08/05/25 13:14:17
/* ここまで雑談 */
436:デフォルトの名無しさん
08/05/25 13:15:51
>>433
431 = 424 = 422;
↑
こうやって反射的にセミコロンを付けてしまう事ってよくあるよねw
437:433
08/05/25 13:19:53
>>436
板を考慮して付けた。
438:デフォルトの名無しさん
08/05/25 13:23:08
もういいから
439:デフォルトの名無しさん
08/05/25 13:31:24
こういう空気読めない奴ってホントどこにでもいるな
リアルでも空気読めなくて周囲からウザく思われてるんだろうな
440:デフォルトの名無しさん
08/05/25 13:34:53
>>439
いい加減ウザイよ君
441:デフォルトの名無しさん
08/05/25 15:33:05
質問がないと暇を持て余すんだろう
質問来ても、その調子なら邪魔以外の何者でもないが・・・
442:デフォルトの名無しさん
08/05/25 16:37:35
int 21Hとか割り込み命令って今でも使える?
Win32API使わないとだめ?
443:デフォルトの名無しさん
08/05/25 17:05:30
試せば分かるだろ
444:デフォルトの名無しさん
08/05/25 18:55:52
>>442
DOSアプリからなら使えるよ。32ビットアプリだとクラッシュ。
9x系だと確か一部のものはクラッシュしなかったような?
動かないだろうけど
445:デフォルトの名無しさん
08/05/25 19:09:09
>>444
後半二行の不確かな情報は要りません
446:デフォルトの名無しさん
08/05/25 20:43:34
>>444
DOSアプリのみということは、
Win32 コンソールアプリではだめなのか
なるほど
447:デフォルトの名無しさん
08/05/25 20:46:32
Invalid icon format ってエラーが出るんですけど、アイコンの絵そのものが
問題あるってことですよね?XPのペイントで書いてみたのが問題ですか?
448:デフォルトの名無しさん
08/05/25 20:48:03
アイコンって、大きさ正方形だったかサイズ固定だったか
決まりがあったような気がする。
449:デフォルトの名無しさん
08/05/25 20:50:56
>>447
icon≠windows bitmap
そもそもフォーマットが違います
アイコンエディタを使いましょう
450:デフォルトの名無しさん
08/05/25 20:57:13
>>448
それはgoogle検索で出てきたので、32×32にしてます。
>>449
そうなんですか、分かりました。
皆さんありがとうございました。
451:デフォルトの名無しさん
08/05/25 21:23:51
そういえばVistaのPNG形式アイコンがあるとRC.EXEがエラー吐いたりしたけど
最近のバージョンのRC.EXEでは直ってるの?
452:デフォルトの名無しさん
08/05/25 21:48:19
>>444
9xで、32ビットアプリケーションからファンクションコールをするとしたら、
DeviceIoControlを呼ぶのが正式な手段。全部使えるわけではないけど、
ディスクを直接読み書きするときとかに使った。
453:デフォルトの名無しさん
08/05/25 22:00:33
9xの話を今頃されてもオッサン乙で終わるのだが
454:デフォルトの名無しさん
08/05/26 00:19:42
ウィンドウプロシージャを差し替えたいんだけど、
なんかできないんだよね。
SetClassLong(hWnd, GCL_WNDPROC, (LONG)AnotherMyWindowProc);
この関数を用いる上でなんか注意点ある?
マウスやアプリのアイコン変更も反映されないんだけど。