Win32API質問箱 Build ..
[2ch|▼Menu]
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
- Google
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), &gtinfo);
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のような描画関数で表示。


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4984日前に更新/190 KB
担当:undef