Win32API質問箱 Build120at TECH
Win32API質問箱 Build120 - 暇つぶし2ch1:デフォルトの名無しさん
15/04/09 18:16:02.24 Rhj0QTuK.net
Win32APIについての質問はこちらへどうぞ。
■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。
 英語版( URLリンク(msdn.microsoft.com) )の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで
■過去スレ
Win32API質問箱 Build118
スレリンク(tech板)
Win32API質問箱 Build11 (119らしい)
スレリンク(tech板)

2:デフォルトの名無しさん
15/04/09 18:16:46.84 Rhj0QTuK.net
スレの立て方すっかり忘れてたわ

3:デフォルトの名無しさん
15/04/09 18:30:18.88 V62mLZFy.net
MessageBox(NULL, ">>1 乙", "Win32API質問箱", MB_OK);

4:デフォルトの名無しさん
15/04/09 22:23:50.28 rJtjnWq0.net
SetRect(NULL,1,2,3,4);

5:デフォルトの名無しさん
15/04/10 00:25:10.63 hFniQxda.net
OSシャットダウンを中断させる方法を教えて下さい。
WindowsXP

6:デフォルトの名無しさん
15/04/10 00:31:07.08 JpfDZLA2.net
スタート->終了オプション->キャンセル

7:デフォルトの名無しさん
15/04/10 01:48:29.89 jthFc112.net
WM_QUERYENDSESSIONでぐぐる

8:デフォルトの名無しさん
15/04/10 09:16:30.09 V6osEzlj.net
あらかじめ起動してるアプリから待ったをかけるのか
それともタスクバーなりデスクトップなりからツールを立ち上げるつもりなのか

9:デフォルトの名無しさん
15/04/10 17:49:05.02 TAiFPTdh.net
前スレでヒントくれた二人ありがとうございました。おかげて自分で直せました
でも・・コンパイルできませんよ??
わたしが直したところが悪かったのかなって思って、
前すれ>>969でコテの人が書いてくれたコードをそのまま直さないでコンパイルしてもfatal errorって。
どういうことですか><

10:デフォルトの名無しさん
15/04/10 17:51:02.10 sPfz1KCP.net
>>9
死ね

11:デフォルトの名無しさん
15/04/10 20:10:23.65 AgT+3q87.net
>>9
条件1 アドレス1 xx & アドレス2 yyならLeftDownでyyをzzに
条件2 アドレス1 xx以外 or アドレス2 zz以外になったらLeftUp
なのか
条件1から条件2になるまでLeftDownのままなのか
その他なのか整理してレスしてみ

12:デフォルトの名無しさん
15/04/10 23:10:56.92 tcwpax/F.net
explorerでフォルダを開く(変更する)イベントをキャッチして、
場合によっては正規処理をキャンセルして独自処理を実行させたいです。
ひと通りフック系は調べてみたのですが、該当するものが見つけられず。。。
(shellexecutehooksだとexplorerからフォルダを開く際に拾えなかったです)
何か方法ありましたら教えていただきたく。

13:デフォルトの名無しさん
15/04/10 23:26:32.09 TAiFPTdh.net
>>11
ありがとうございます。でも、どうにか自分で出来ました。
コンパイルが通らなかったのはコードの最後の中括弧を見落としてコピーし忘れていたからでした。
>>10
ごめんなさい。これで最後にするので許してください><
答えてくれた人達ありがとうございました。特にコテの人。
もし、また来る事があったらよろしくです。

14:デフォルトの名無しさん
15/04/10 23:31:40.76 UXaEjvcw.net
超初心者質問で申し訳ありません
MSDNで.NET Framework クラス ライブラリは日本語でも資料が充実していて
サンプルソース(といっても全体ではないですが)も載っていますが、
WinSDKに関しては例えば調べたい関数の詳細については載っていても
探し方が悪いのかサンプルソースが見当たらず...
やはり書籍などを購入するのが良いのでしょうか?

15:デフォルトの名無しさん
15/04/10 23:33:54.86 WBKzV1HP.net
>>12
俺も知りたいです。
URLリンク(support.microsoft.com)
>再解析ポイント: プログラムは、ファイル システム内のオブジェクトに対するオープン操作をトラップし、
>ファイル データを返す前に独自のコードを実行します。データの読み取りし、を別のボリュームまたは
>物理フォルダーからの書き込みをリダイレクトすることができます、マウント ポイントなどのファイル システムの
>機能を拡張するこの機能を使用することができますディスクです。

16:デフォルトの名無しさん
15/04/10 23:36:11.49 WBKzV1HP.net
>>14
猫のサイトとかWisdomSoftとかあるだろ。
グーグルで検索すればすぐ見つかるのに、何故それをしない。

17:デフォルトの名無しさん
15/04/10 23:41:12.31 UXaEjvcw.net
>>16
一応既に猫のサイトは一通り勉強させてもらいました
(ちなみに猫でもわかるwindowsプログラミングは全部写経したんですが笑)が
肝心のMSDNでサンプルソースを探そうとしても
.NETのほうは実際に動くソースが載っているのにWinSDKのほうは
探し方が悪いのかサンプルがなかなか見つからないんですが...(何故

18:デフォルトの名無しさん
15/04/11 00:10:08.75 j7Y/pu4p.net
>>12
それはAPIからの方向じゃなくて
エクスプローラの機能拡張でどこまでやれるかという話じゃないの
それともイベントを受ける側は別のアプリなのかしら

19:デフォルトの名無しさん
15/04/11 00:12:40.07 j7Y/pu4p.net
>>14
MSDN の外の野良解説を探せばたくさん出てくる
ちなみにMSDNの方の日本語訳はかなりひどいので英語版で確認すべき

20:デフォルトの名無しさん
15/04/11 00:22:34.50 dDVvge2W.net
>>19
ということはMSDNにWinSDKの方のサンプルがあまり載ってないのは
仕様ということなのでしょうか
確かにMSDN外の野良解説はたくさんありますし詳しいですよね
やはり調べたい情報が欲しい場合はWinAPI関連の書籍を購入するのが
一番良い方法でしょうかね。

21:12
15/04/11 00:24:33.46 rd1rB1JO.net
>>18
元々は別アプリでイベントを監視できるかと考えていたのですが、
方法がなくエクスプローラーの機能拡張の方向でも調査しておりました。
結果的に挙動を実現できればどちらでも問題はなかったのですが、
何分手詰まり感があり参っております。
(所謂ファイラーなどはフォルダに関連付けて自アプリを開いたりしているので、
実現は可能だと思ってはいるのですが。。)

22:デフォルトの名無しさん
15/04/11 00:28:13.50 LbK5Z9ys.net
WinSDKのサンプルってこれと違うの?
C:\Program Files\Microsoft SDKs\Windows\v7.1\Samples

23:デフォルトの名無しさん
15/04/11 01:16:34.56 yiXu9fzw.net
>>20
>>1 > APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう
とあるが実際には読まなくてもそこらへんのHP色々見て断片的な情報を自分なりに繋げれば本無くても実現は出来る

24:デフォルトの名無しさん
15/04/11 02:51:15.30 j7Y/pu4p.net
なんでやねん
通して体系的に理解するなら書籍がいいけど
やりたいことが具体的にわかってるならネットで検索するのが早い
ただし blog の落書きに近い奴は前提が噛み合わなかったりするからそこはきちんと確認

25:デフォルトの名無しさん
15/04/11 07:13:27.27 6QBeTfwQ.net
>>21
自分で言ってる通り
フォルダーウィンドウ内でフォルダアイコンをダブルクリックorEnterキー押下した場合は
関連付けが発動するだけだわ
独自関連づけをデフォルトにしておいて
自分で処理しないときはIShellBrowserなりIExplorerBrowserなりICommDlgBrowserなりに開かせる
もしくは泥臭い方法だけどキーとマウスにフックしかけちゃう方向もある
QTTabBarとかがそんな処理してそう

26:デフォルトの名無しさん
15/04/11 10:04:13.49 ijD8XqjA.net
>>12
IExecuteCommandを実装したCOMを作ってシステムに登録して
HKEY_CURRENT_USER\Software\Classes\Folder\shell\open\command
のDelegateExecuteにさっき作ったCOMのGUIDを登録する
フォルダを開こうとするとIExecuteCommand::Executeが呼ばれるので


27:好きにする



28:デフォルトの名無しさん
15/04/11 10:19:13.12 dDVvge2W.net
ありがとうございます
ぼちぼち頑張ってみます

29:デフォルトの名無しさん
15/04/12 02:47:00.25 sQ6L0dTF.net
失礼。STATICコントロールをCreateWindowでつくる際なんだが、
SS_BLACKRECTって効いてなくないか?
vs2010expressのwin32プロジェクトで出て来るWinProc関数んとこに
case WM_CREATE:
hStatic = CreateWindow(
TEXT("STATIC"), NULL ,
WS_CHILD | WS_VISIBLE | SS_BLACKFRAME |SS_BLACKRECT ,
0,200, 200, 200,
hWnd, (HMENU)3,
((LPCREATESTRUCT)(lParam))->hInstance , NULL
);
とやっても黒枠は出るが塗りつぶしがされないのだ。
教えてくん。

30:デフォルトの名無しさん
15/04/12 12:20:53.11 SDNlNHK7.net
教えて君はNG

31:Office & Gamers ◆G144Hzgh2.0e
15/04/12 12:23:36.12 kx9iDNgY.net
汚いプログラム(笑)

32:デフォルトの名無しさん
15/04/12 12:49:27.67 y8PA+brm.net
URLリンク(www7b.biglobe.ne.jp)
このページではちゃんと表示されているみたいだけど。
SS_BLACKFRAMEとは一緒に指定できないんじゃね?
それぐらい試したよね?

33:28
15/04/12 17:33:06.50 sQ6L0dTF.net
むー、てことはみなの環境ではちゃんと黒くなるのか。
もっといろいろ試してみまふ。
>>30
プログラム板なんて五年ぶりくらいなんでインデントが消えることも忘れてたすまん。
コード自体はどっかの入門サイトのコピペなんであたしゃしらん。
>>31
SS_BLACKFRAMEをつけてるのはSS_BLACKRECTもちゃんと黒のはずってことを示すためでした。
教えてくんでゴメンネ

34:デフォルトの名無しさん
15/04/12 20:49:44.98 2B83nDoZ.net
#define SS_BLACKRECT 0x00000004L
#define SS_BLACKFRAME 0x00000007L

35:デフォルトの名無しさん
15/04/12 22:13:22.82 8ClUnIS/.net
>>32
後々他の色もできるように
WM_CREATE: hbrush = CreateSolidBrush(color);
WM_CTLCOLORSTATIC:
if((HWND)lParam == hwnd) {
return hbrush;
}
WM_DESTROY: DeleteObject(hbrush);
の方がいい気がする

36:デフォルトの名無しさん
15/04/12 23:52:09.97 y8PA+brm.net
いやなんか、SS_BLACKRECTでいろんな色に出来る風なこと書いてあったような。

37:教えて君
15/04/14 08:02:18.57 XDZ3Jlf4.net
borland C++ 5.5.1を使って小さなwinアプリを作っている者ですが、
タスクバーアイコン(16x16)の表示がオカシくて困っています。
・使用OSはwindows8
・コンパイル直後1回だけは正しくタスクバーアイコンは表示される。
・その後exeを立ち上げるとアイコンが全然別のものが表示される。
・WNDCLASSEXのhIconSmやLoadImageを試してみたが改善されず。
・brc32をやめbrcc32にしresファイルをilink32してみたが改善されず。
・windows8の.dbキャッシュを削除したりブートで起動したりしたが改善されず。
・.dbキャッシュは空で作成したり読み取り専用や隠しファイルにしたが改善されず。
・MAKEINTRESOURCEやLR_DEFAULTCOLORやIMAGE_ICONを設定してみたが改善されず。
困っています。windows8の問題なのかbcc5.5.1の問題なのか解る方。
或はこのような


38:質問と解答のあるスレ、サイトを知っている方教えて下さい。



39:アイコンキャッシュ 化ける win32api(教えて君)
15/04/14 08:28:46.97 XDZ3Jlf4.net
自己解決しました。
MAKEINTRESOURCEをやめ、w.hIcon=LoadIcon(i,"ICO");でちゃんと表示されるようになりました。

40::アイコンキャッシュ 化ける win32api(教えて君)
15/04/14 08:40:36.11 XDZ3Jlf4.net
やっぱりだめですね…上の表記だとウィンドウのアイコンが表示されなくなります。

41:デフォルトの名無しさん
15/04/14 09:41:47.32 85cAVwi8.net
>・WNDCLASSEXのhIconSmやLoadImageを試してみたが改善されず。
hIconにLoadIconすればいいんじゃないの

42:デフォルトの名無しさん
15/04/14 09:45:05.20 85cAVwi8.net
ああ、それがダメで試行錯誤してるのか?
SetClassLong(hWnd, GCL_HICON, (LONG)LoadIcon(hInst, MAKEINTRESOURCE(IDI_Ico)));
これでもダメなら、リソースに入ってないかリソースIDが何かと重複してると思う。

43:教えて君
15/04/14 10:19:18.90 XDZ3Jlf4.net
早速の解答ありがとうございます。SetClassLongだめですねぇ変化ありません。
windows8のアイコンキャッシュがおかしいんだと思います

44:教えて君
15/04/14 10:21:20.90 XDZ3Jlf4.net
リソースIDも"ICO"から"ICO0"にしてみましたがだめでした

45:デフォルトの名無しさん
15/04/14 10:26:59.03 58Lr8u5B.net
なんで自分のクソプログラムを棚に上げてOSを疑うのか?
他の何百何千というプログラムは正常に表示できている状況で
そう考える事ができるというのは驚きである。

46:教えて君
15/04/14 10:27:17.93 XDZ3Jlf4.net
ちなみに同じリソースファイルから全く別の.bmp画像は読み込めてます。

47:デフォルトの名無しさん
15/04/14 10:27:19.64 FfurPzHR.net
      ,一-、
     / ̄ l |   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    ■■-っ < んなーこたーない
    ´∀`/    \__________
   __/|Y/\.
 Ё|__ | /  |
     | У..  |

48:教えて君
15/04/14 10:29:22.03 XDZ3Jlf4.net
>>43全くその通りです。ググってみましたが中々解決に至っていません。
ちなみに他のアプリは正常に表示されています。

49:教えて君
15/04/14 10:31:05.87 XDZ3Jlf4.net
>>43見当付きますでしょうか?

50:デフォルトの名無しさん
15/04/14 10:33:30.22 jz1OLtV7.net
>>36
vs2013使ったら?条件付で無料じゃなかったかな?

51:デフォルトの名無しさん
15/04/14 10:49:59.76 85cAVwi8.net
>>42
なんかちゃう。定義の方を見て。
#define ICO_xxx 100
とかなってるはずだが、数字部分が他の定義と被ってるかもって書いた。
でもまあ、単にリソースがリンクされてないだけだと思うけど。

52:教えて君
15/04/14 11:11:54.58 XDZ3Jlf4.net
>>48良いですよねvs2013小さいexeが作りたいんですよ。2013はoption98とか設定できなくて
サイズ最適化がわかんないんですよね。MinGWもgcc入れて専用のコマンドプロンプトみたいなのでパス設定とか
わけがわからくて使ってないんですよね。(連続投稿に引っ掛かってしまいました)
>>49 数字も1008にしてみましたがだめでした。
ちなみにLoadImageのLR_DEFAULTSIZE| LR_SHAREDもだめでした。

53:デフォルトの名無しさん
15/04/14 11:17:53.68 85cAVwi8.net
そのexeをResEditなりで開いて、ちゃんとリソースが存在するか見てみたら。
あとはそのアイコンがそもそも、アイコンなのかどうか。アイコンとしての条件を満たしてるかどうか。

54:教えて君
15/04/14 11:22:11.60 XDZ3Jlf4.net
>>51ResEditでexeを開いてみました…アイコンありますねぇ「Icon>18[日本語(日本)]」32x32と
16x16がちゃんと入ってます。

55:アイコンキャッシュ 化ける win32api(教えて君)解決!
15/04/14 11:27:05.03 XDZ3Jlf4.net
>>51 解決しました!お騒がせしました!的確なアドバイスありがとございます。
モノクロbmpでアイコンを作っていましたが、24bit bmpでアイコンを作り直すと
各箇所に正しく表示されました。

56:デフォルトの名無しさん
15/04/14 20:57:08.74 y/I7sbAh.net
余談だけど、ResEditは入れるとき気をつけた方が良いようですね。
ResEdit危険インストーラから同意ボタンで広告表示アドウェア感染被害?
URLリンク(blogs.yahoo.co.jp)

57:デフォルトの名無しさん
15/04/14 21:43:13.39 IRWLYaw5.net
>>54
ResEditはもう完全に悪意のあるソフトウェアだよ
VSが無料になった今RedEditの必要性は皆無

58:デフォルトの名無しさん
15/04/14 21:58:42.50 8TR3GPc6.net
Windowsエラー「問題が発生したため、(アプリ名)を終了します。」が発生したことを、他のアプリよりリアルタイムに検出する手段はありますか?
また、そのエラーメッセージを、他のアプリより閉じる手段は、どのようなものがありますか?winndowを列挙してSendKeyするしかないのでしょうか?

59:デフォルトの名無しさん
15/04/14 22:04:06.57 4FPwD7PA.net
>>54
スレリンク(tech板:261番)
> ResEditインストール注意点
> ・最初にいくつか広告が入りDeclineが小さく表示されている
> ・インストール先を指定できずルートにインストールされる
> 1ページ目 URLリンク(i.imgur.com)
> 2ページ目 URLリンク(i.imgur.com)
> 3ページ目 URLリンク(i.imgur.com)
> 4ページ目 URLリンク(i.imgur.com)
> 5ページ目 URLリンク(i.imgur.com)
> Declineを押していれば広告のインストールはされないので
> 検索で出てくるAdwareという指摘は勘違いや思い込みに過ぎない

60:デフォルトの名無しさん
15/04/14 22:26:05.39 IRWLYaw5.net
> ・インストール先を指定できずルートにインストールされる
もうこの時点でインストーラとしての体をなしていない。マルウェア

61:デフォルトの名無しさん
15/04/15 19:38:08.96 jr652CyU.net
VCで指定されたキー(左クリック)の離された瞬間を検出して、
printf("左クリックを離さないでください\n")と表示させたいんですが
どうすればできますか><?

62:デフォルトの名無しさん
15/04/15 20:00:09.63 rSJ1Mqrv.net
そもそもクリックとは「押して離す」動作
つまり離さないのはクリックとは呼ばない

63:デフォルトの名無しさん
15/04/15 20:08:55.02 OBp2TzOF.net
GetAsyncKeyState(); かな

64:デフォルトの名無しさん
15/04/15 20:33:46.75 YYpYNbny.net
WM_LBUTTONUP?

65:デフォルトの名無しさん
15/04/15 21:02:00.70 e7criVwj.net
>>59
クライアント領域限定か
+ ウィンドウ領域含むか
+ 領域外も含むか
どれだ?

66:デフォルトの名無しさん
15/04/15 21:04:56.43 jr652CyU.net
>>60
じゃあ訂正して、マウスの左ボタンを押下 って言うことにします!
>>61
GetAsyncKeyStateでどうやるんですか??
キーが押されてるか、押されてないかを検出できても
離された瞬間って検出できないですよね?

67:デフォルトの名無しさん
15/04/15 21:13:51.39 jr652CyU.net
>>63
対象とするプログラム上で、マウスの左ボタンが離された瞬間を検出したいので、
たぶん、クライアント領域です。?

68:デフォルトの名無しさん
15/04/15 21:19:37.85 e7criVwj.net
>>65
>>62

69:デフォルトの名無しさん
15/04/15 22:08:38.93 pxhrK6tL.net
>>64
WM_LBUTTONUP:は簡単に実装するなら正解
GetAsyncKeyStateでもできるが?GetForegroundWindowとか組み合わせがいるかもな。
押したときにフラグ立てて、離されたときにフラグが立ってるか見て判断すればよかろうint bLeft=0;
void OnTimer(){
if(GetForegroundWindow() == hMyWnd) // 自分のウインドと判別
if(GetAsyncKeyState(VK_LBUTTON)) bLeft=1; else if(bLeft){
bLeft=0;
// 離された直後の処理(クリックと一緒)
}}

70:デフォルトの名無しさん
15/04/15 22:11:36.84 jr652CyU.net
>>66
WM_LBUTTONUP ってだけ言われても意味がわかんないです。
if (GetAsyncKeyState (WM_LBUTTONUP)){
printf("左クリックを離さないでください\n");
動かないじゃないですか><

71:デフォルトの名無しさん
15/04/15 22:36:15.69 jr652CyU.net
>>67のサンプルで試しにコンパイルしたら、
error C2601: 'OnTimer' : ローカル関数の定義が正しくありません。
error C2065: 'hMyWnd' : 定義されていない識別子です。
error C2065: 'bLeft' : 定義されていない識別子です。
error C2065: 'bLeft' : 定義されていない識別子です。
C2065: 'bLeft' : 定義されていない識別子です。
何をすればいいですか?

72:片山博文MZ ◆T6xkBnTXz7B0
15/04/15 22:57:12.19 Be/6smJn.net
>>69
C言語とWin32APIの基礎がなっていない。「イベント駆動」と「ウィンドウプロシージャーの書き方」を勉強する必要がある。
WM_で始まる定数はウィンドウメッセージであり、ウィンドウプロシージャーで処理する。

73:デフォルトの名無しさん
15/04/15 22:57:29.11 MncDCMB0.net


74:デフォルトの名無しさん
15/04/15 23:02:46.06 Q1p7nIrk.net
ユーザーの動きを監視したいわけだからまずはWebカメラとかから映像が取得できないと無理だな

75:デフォルトの名無しさん
15/04/15 23:23:12.58 e7criVwj.net
>>68
メイン関数はmainかWinMainかどっち?

76:デフォルトの名無しさん
15/04/15 23:40:48.45 YYpYNbny.net
>>69
こんな感じ。
URLリンク(codepad.org)

77:デフォルトの名無しさん
15/04/16 00:01:32.25 niirhvYM.net
>>94
Upがどこにも表示されません><
ってくるぞw

78:Office & Gamers ◆G144Hzgh2.0e
15/04/16 01:15:58.27 sQiZAhF+.net
>>70
んじゃついでにマルチスレッドの書き方についても論じてくれw

79:デフォルトの名無しさん
15/04/16 01:46:02.12 r89rtGYR.net
>>70
前スレで書いてくれたコードあるじゃないですか?
それに>>67のLEFTUP検出を追加しようとしてるんですが>>69が出てできないんです。
プロシー?を覚えれば解決するんでしょうか? がんばります。
だけど、まだC入門書のIF文やってるところですけど・・
>>73
int mainです。
>>74
複雑すぎて何してるのかよく分かりません><
>>67みたいな感じでGetAsyncKeyState使ってシンプルにしたいです

80:デフォルトの名無しさん
15/04/16 02:06:00.46 1cAUYc2L.net
Win32API以外の話は他でしろ

81:67
15/04/16 04:55:33.87 xHp1mspF.net
C言語とWindowsの基本の勉強不足ですねぇ。猫でもわかる系のサイトでもいって基本を学習したほうがいいかも
#include <windows.h>
int main(int argc, char * argv[]){
bool bLeft=0;HWND hMyWnd =GetForegroundWindow();
while(1){if( hMyWnd == GetForegroundWindow()){
if(GetAsyncKeyState(VK_RBUTTON)) break; // マウス右ボタンを押したら停止
if(GetAsyncKeyState(VK_LBUTTON)) bLeft=1;else if(bLeft){bLeft=0;
printf("左クリックを離さないでください\n");
}}Sleep(30);}return 0;}

82:Office & Gamers ◆G144Hzgh2.0e
15/04/16 06:30:00.49 sQiZAhF+.net
>>79
while( hMyWnd == GetForegroundWindow())でいいんじゃないの?w
while(1)がムダw

83:デフォルトの名無しさん
15/04/16 06:43:05.17 niirhvYM.net
>>80
そんなネタ投下して楽しい?

84:Office & Gamers ◆G144Hzgh2.0e
15/04/16 06:53:11.05 sQiZAhF+.net
こういう感じか…w”
#include "stdafx.h"
#include <windows.h>
int main(int argc, char * argv[])
{
    bool bLeft=0;
    HWND hMyWnd =GetForegroundWindow();
    while( (hMyWnd == GetForegroundWindow()) && !GetAsyncKeyState(VK_RBUTTON))
    {
        if(GetAsyncKeyState(VK_LBUTTON))
            bLeft=1;
        else
            if(bLeft)
            {
                bLeft=0;
                printf("左クリックを離さないでください\n");
            }
        Sleep(30);
    }
    return 0;
}

85:Office & Gamers ◆G144Hzgh2.0e
15/04/16 06:59:10.65 sQiZAhF+.net
while() {} sleep();でもいいかw
プログラムが汚いとダメw
プログラムが汚いとダメw
プログラムが汚いとダメw
プログラムが汚いとダメw
プログラムが汚いとダメw

86:デフォルトの名無しさん
15/04/16 07:00:02.73 niirhvYM.net
なんだネタか

87:Office & Gamers ◆G144Hzgh2.0e
15/04/16 07:01:19.02 sQiZAhF+.net
while(1)がムダw

88:デフォルトの名無しさん
15/04/16 07:35:59.21 GQj/zmtf.net
五度刺しても誰も介錯してくれないとか哀れすぎる

89:67
15/04/16 07:41:32.80 xHp1mspF.net
>>85
初心者が読みやすいように、あえてwhile(�


90:P)のループにして、必要な処理は、if文で分岐するんだぜ! と理解しやすく例題つくってみたんだが、式で省略して複雑にしてどーするww 69の質問する人の理解力で、while内で&&や、!とか書かれても混乱するだけじゃね? switch(msg){case WM_LBUTTONUP:}が分かりませんだぞ?



91:Office & Gamers ◆G144Hzgh2.0e
15/04/16 08:23:26.48 sQiZAhF+.net
>>87
それなら
loop:
goto loop;
の方が見やすいだろw

92:デフォルトの名無しさん
15/04/16 08:24:58.79 kE101whD.net
>>88
(笑)

93:Office & Gamers ◆G144Hzgh2.0e
15/04/16 08:43:08.53 sQiZAhF+.net
while(1)なんてのはプログラミング作法として逝ってる証拠w

94:デフォルトの名無しさん
15/04/16 12:32:20.77 6zGepQEU.net
while(1) だと警告されるので for( ; ; ) ってやる

95:デフォルトの名無しさん
15/04/16 16:47:32.48 tXtzH4xO.net
while(1) を憎んでいるようだが何かあったのか
while(1) と書いているプログラマにいじめられたのか
Cのプログラマってなんか文系タイプが多いよな
なんかのアンチにすぐになるという
だれそれのやっている何かが憎いから新しく何かをやるという感じの奴
プログラミングをやっても結局頭が良くならないんだろうな
普通プログラミングを継続するとだんだん理系思考になってそういうのが冷めてくるはずだが

96:デフォルトの名無しさん
15/04/16 16:54:10.38 r89rtGYR.net
>>79
勉強不足なのは分かってます。。追々学んでいきますが、
今作ってるのだけはすぐ完成させないと不味いんです。
元ソースの原型は前すれ>>969のやつです。
このソースの文末に>>79さんに教えてもらったGetAsyncKeyStateのサンプルを
くっつけたんですがコンパイルエラーいっぱい出ます><
Sleep(30);}return 0;} を消したらエラー無くなったですけど
プログラムがヘンになりました・・。
これが終わったら本格的に勉強して、
初歩的な事聞かなくても大丈夫にするので、
今回だけお願いします。助けてください><

97:Office & Gamers ◆G144Hzgh2.0e
15/04/16 17:04:28.31 djFvfTCc.net
つ イベント処理w

98:Office & Gamers ◆G144Hzgh2.0e
15/04/16 17:05:48.79 djFvfTCc.net
C/++使う前にJavaScriptとかBASICとかやり直した方がよくね?w

99:Office & Gamers ◆G144Hzgh2.0e
15/04/16 17:11:09.35 djFvfTCc.net
なんかこう、8bit系のオヤジがムリしちゃってよォ~w、みたいな感じするよなw

100:デフォルトの名無しさん
15/04/16 17:11:52.61 ktYqo1R5.net
前スレでチートツール作ってたクズか

101:Office & Gamers ◆G144Hzgh2.0e
15/04/16 17:12:29.59 djFvfTCc.net
>>92
フツーにgoto文付ければいいんだよ♪(アハ♪”

102:デフォルトの名無しさん
15/04/16 17:34:45.27 DUQ4ImO1.net
ウィンドウハンドルからそのウィンドウが落ちてるかどうか判断できる?
応答無しのソフトのウィンドウハンドルからGetWindowRectとかしても普通にOKが返るので
何かそういうの判別するAPIないですかね

103:デフォルトの名無しさん
15/04/16 17:41:28.20 YCHaL8K8.net
>>99
まず「落ちてる」って何?
どういう状況を指しているの?
>応答無しのソフトのウィンドウハンドルからGetWindowRectとかしても普通にOKが返るので
そりゃ応答無しってのはメッセージキューの処理がなんらかの理由で止まってしまっているから起こる。
だからメッセージキューとは無関係に処理されるものは当然応答がある。

104:デフォルトの名無しさん
15/04/16 17:55:22.50 GQj/zmtf.net
適当なメッセージをpostしてメッセージキューを除けばいい

105:デフォルトの名無しさん
15/04/16 17:55:31.72 DUQ4ImO1.net
>>100
知らないならレスしないで下さい。ウザいだけです。

106:デフォルトの名無しさん
15/04/16 18:14:53.68 VRneRw3s.net
MSさまがご自身のヘッダファイルに #define TRUE 1 と定義なされたのだから while(TRUE) だろこのスレ的に

107:片山博文MZ ◆T6xkBnTXz7B0
15/04/16 18:16:42.45 euCOAHsL.net
>>99
IsWindow

108:デフォルトの名無しさん
15/04/16 18:58:43.65 Wbz2Z132.net
フォントを作るのに、アンチエイリアスが効いたほうが良いので、
Meiryoを使っていますが、英語圏のWindowsでは、どうなりますか?
Meiryoが入っているんですか?それとも他のフォントに置き換えられるんですか?
もし、置き換わるのでしたら、何に置き換わりますか?
その置き換わったフォントは、アンチエイリアスが効いていますか?
そもそも、置き換わるのでしたら、その置き換わり先のフォント名を元から指定しておけば、
日本語の場合はMeiryoに置き換わって日本語も綺麗に表示されたりしますかね。
どうなんですか?

109:デフォルトの名無しさん
15/04/16 21:22:35.75 niirhvYM.net
>>93
いま自分が書いてるソースをここにでも上げてみて
URLリンク(ideone.com)

110:67
15/04/16 23:21:43.69 xHp1mspF.net
前スレの969のコードをざっくり読んできました。
969のは、すでに完成しているので、仕様変更は知識があれば簡単ですね。
>>93
チート系ツールを他人に作らせようとするのはどうかと思うのだけれど?
この板はチート系ツール作成板ではありません。
時間がないとかそういうのは、あなたの勝手な都合を板の住人に押し付けないでもらえる?
あなたは、まずは、基本を学びなさい。
今の段階で、コピペでプログラム組むとか、なにかと間違っていると思うのだけれど?
WINDOWSのシステムや、ロジック、Win32APIの意味を理解して、ちゃんと設計してからプログラム組なさい。

111:Office & Gamers ◆G144Hzgh2.0e
15/04/16 23:26:14.26 djFvfTCc.net
難しいコトは後回しwできりゃ何だっていいんだよw
簡単なものを難しく見せようとするのが間違いw

112:デフォルトの名無しさん
15/04/16 23:53:11.47 r89rtGYR.net
違います><チートじゃないです。なんで変なこというんですか

113:デフォルトの名無しさん
15/04/17 00:04:49.02 u6kt2Ekt.net
>>109
やましい事がないのなら言えると思うから教えて
LEFTUP検出時に何をするのか

114:Office & Gamers ◆G144Hzgh2.0e
15/04/17 00:10:29.37 dW7xxEmp.net
チャララ~ん♪”

115:デフォルトの名無しさん
15/04/17 00:17:56.88 8xw27FV+.net
>>110
printfでメッセージ出した後に、
PrintScreenキーを押して画面の保存です・・
>>107
ごめんなさい。
あなたの言うとおりです。
でもちート云々はわたしが言い出したことじゃなくて
他の人が勝手に言ってることです。
今の自分じゃ調べても分からないから詳しい人に聞きたかったんです。

116:デフォルトの名無しさん
15/04/17 00:46:11.75 u6kt2Ekt.net
>>112
>>11
> 条件1 アドレス1 xx & アドレス2 yyならLeftDownでyyをzzに
> 条件2 アドレス1 xx以外 or アドレス2 zz以外になったらLeftUp
> なのか
> 条件1から条件2になるまでLeftDownのままなのか
このどれか + LeftUpでスクリーンショットか
頻度によっては「覗き見」になるから自分で全てできないとな

117:デフォルトの名無しさん
15/04/17 00:46:43.27 8xw27FV+.net
詳しくかきます。
ソースの最後のトコ、
/* マウス操作をエミュレートする */ の部分だけ違ってて、
if (abBuffer1[0] == xx && abBuffer2[0] == yy) {
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
}
if (abBuffer1[0] == aa && abBuffer2[0] == bb) {
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
}
になってます。
アドレスxx,yyの値は一定時間経過後、aa、bbになるんです。
値が aa、bbになったらLEFTUPさせるんですが、
LEFTUPした瞬間を検出して、printfでメッセージを出して、PrintScreenキーを押す
って仕組みです。
知識があって簡単に仕様変更できる人に聞きたいって思うのはダメなんですか?
いちお、猫でも分かるっていうサイトの第4章やったけど
勉強すること多すぎて何からやったらいいのかわかんないです。

118:デフォルトの名無しさん
15/04/17 00:49:09.70 w/dpiMO4.net
>>93
コンパイルエラーは、ソースコードの上の行から順に、
一つずつ解決していくこと
必ず上から直すこと! なぜなら、上のエラーを直すと、
下のエラーは自然に直ることも多いから
よく知らんが、VC++を使っているのなら、
IDEが左側に、電球の形をした、
解決するヒ


119:ントを示してくれるのでは? 君は59の質問者かね? 誰が書いているのかわかりにくいので、 名前欄に、59と最初のレス番号を入れろ そもそも素人が、Win32APIを直接使うのは無理。 WM_LBUTTONUP などのGUIのメッセージも知らないんだろ? 画面のイベントを知らないなら、画面を作れない



120:デフォルトの名無しさん
15/04/17 00:54:50.78 u6kt2Ekt.net
>>114
if (abBuffer1[0] == aa && abBuffer2[0] == bb) {
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
// ここでメッセージを出して同様にPrintScreenを押す
}
じゃダメなん?

121:デフォルトの名無しさん
15/04/17 01:16:12.40 w/dpiMO4.net
>>69
error C2601: 'OnTimer' : ローカル関数の定義が正しくありません。
error C2065: 'hMyWnd' : 定義されていない識別子です
.h の拡張子はヘッダファイルで、このファイルに型宣言を書く。
.c, .cpp の拡張子は実装ファイルで、このファイルに定義を書く。
実装ファイルで、関数名や変数名などの識別子を使う前に、
まずそれらの型を宣言しないと、コンパイラが型チェックできない
識別子の宣言は、以下のように実装ファイルで行うか、
型名 識別子; int a;
皆が使うような関数などは、
ヘッダファイルに型宣言してあるので、
実装ファイルの冒頭で、以下のどちらかで、
ヘッダファイルをインクルードする
標準ライブラリのヘッダファイルなら、#include <ファイル名.h>
自分で作ったヘッダファイルなら、#include "ファイル名.h"

まあ、こんな初歩的なことも知らないのに、
プログラミングは無理。まず本を読め

122:67
15/04/17 01:28:19.13 GgWweP1w.net
>>112
プリントスクリーンねぇ。。それだけで済みそうにないと思うんだが。
PS後の画像をファイルに保存とか、PSの画像と、保有する画像が一致したら、
マウスクリックとかそういう処理増えていったりするんじゃね?
知らんけど。
C言語の入門や、WindowsのAP関連の入門サイトを初めから読み飛ばさず基礎から勉強するか、
仕様をちゃんと固めて、2000円払って、MZの人に続きを作ってもらえば、あっさりできちゃうかもよ?
ここの板は、こういうことできるAPI知りませんかー?っていう質問する板だと思うのだけれど?

123:デフォルトの名無しさん
15/04/17 01:54:23.92 6/UQT6bn.net
そろそろスルー検定

124:デフォルトの名無しさん
15/04/17 01:55:56.45 w/dpiMO4.net
素人に教えることは出来ない。
1つ教えると、バグが3つ出て、
そのバグ1つについて教えると、またバグが3つ出る
何かを教えても、それを知らないから、
またそれについて教えなければならないので無理
まず本などで、基本的なことは習得してからやらないと、
結局、他人に聞いても理解しないまま、進めていくので、
また繰り返し聞いてくる。時間の無駄
答えを聞いても無理なんだよ。
その通りにしても、新たなバグが出るから、
そのバグをまた修正しても、また新たなバグが出る
答えではなく、なぜなのか理由を聞け!
そしてその理由がわからなければ、
わかるレベルまで、さかのぼって勉強せよ。
何が・どこがわからないか、言えるようにせよ。
急がば回れ!
じっと本を読んで、力を貯めよ!
結局、その方が速くて、高品質

125:デフォルトの名無しさん
15/04/17 02:23:16.87 w/dpiMO4.net
>>114
if (abBuffer1[0] == aa && abBuffer2[0] == bb) {
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
3秒間、スリープする
printfで、メッセージを出力する
PrintScreen キーを押す(キーイベント)
}

126:デフォルトの名無しさん
15/04/17 04:10:17.30 NAku5IxH.net
質問です。
RichEditコントロールのFINDTEXTメッセージに渡すものとして、ググるとFR_DOWNや
FR_MATCHCASEなどなどが出て来るのですが、おいらの環境VS2010 Expressについてきた
SDKのヘッダファイル....Microsoft SDKS/Winodws/v7.0A/Include/Richedit.h
には定義されてません。当然コンパイルエラーが出ますしVSにも赤線引かれて怒られます。
なにか別な方法でも出来ているのでしょうか。

127:デフォルトの名無しさん
15/04/17 04:12:32.55 NAku5IxH.net
ちなみにおらっとこのRichedit.hでFR_*な定義はこれだけでした。
// Additional EM_FINDTEXT[EX] flags
FR_MATCHDIAC
FR_MATCHKASHIDA
FR_MATCHALEFHAMZA

128:デフォルトの名無しさん
15/04/17 04:19:31.06 6/UQT6bn.net
grep使ってもないんかね?
CommDlg.h
なお、単にインクルードするだけでいいのかは知らない。

129:デフォルトの名無しさん
15/04/17 05:41:11.87 GgWweP1w.net
>>122
vs2015だけど、grepしたらこんなとこにあったよ。
Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include\CommDlg.h(585): #define FR_MATCHCASE 0x00000004
たぶん、この2つ追加でいいんじゃないかな?
#include <commdlg.h>
#pragma comment(lib,"comdlg32.lib")

130:デフォルトの名無しさん
15/04/17 07:09:06.75 u6kt2Ekt.net
>>122
同じの使ってるけど
c:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\CommDlg.h
ここにあったよ
フラグだけなら#pragmaは無くていいみたい

131:デフォルトの名無しさん
15/04/17 10:03:57.26 8xw27FV+.net
>>118
済みます! 絶対にこれ以上処理は増えないです。
スレには"Win32APIについての質問はこちらへどうぞ"って書いてあります。
使い方について聞いてもいいじゃないいですか・・。
>仕様変更は知識があれば簡単
ってことは
67の人はマウス離した瞬間を検出して、PrintScreenキーを押す、ってわたしには難しいことが、簡単にできるんですよね?
知識が十分なのにこのスレに居るって事は誰かを助けるために来てくれてるんですよね?
演習用のじゃなくて、ちゃんとしたプログラム作るのはこれが初めてなんです。
元はほとんどコテの人のコードだけど、それでも、最初って肝心じゃないですか?
最初に上手くいかないとやる気なくなります。
逆に最初のプログラムが出来ればめっちゃやる気出てたぶん勉強も捗ります。
ソース上げてみてって言ってくれて、コードまで読んできてくれたんですよね?
それなのに・・見捨てないでください><
>>121
mouse_eventの後に処理をさせるだけなら聞かなくても出来ますしapiスレに来ません。
わたしが出来ないのは"Win32API"のGetAsyncKeyStateを使って、
マウスの左クリックを離した瞬間を検出して、その処理を実行させることです。
無意味に見えるかもしれませんがとても重要なことです。
調べててもわかんなくて、風邪引いて、ガッコやすんだんですよ。
可哀想だと思いませんか? 思いますよね?
助け合いの精神が大切だと思います。

132:デフォルトの名無しさん
15/04/17 10:22:05.00 jWFJYotG.net
ってか、教えてもらったことGoogleで検索してみたことある?
MSDNのmouse_eventのページ見てればPrintScreenの押し方とかふつー聞かなくね?

133:デフォルトの名無しさん
15/04/17 10:55:29.98 PQTjmfWn.net
学校休んで2chとかばっかじゃねーのwwww

134:デフォルトの名無しさん
15/04/17 10:55:57.65 95OY7iuD.net
煽れば答えてくれると思ってる40代無職のオサーンが書いてると思うと香ばしいな

135:デフォルトの名無しさん
15/04/17 11:48:50.51 PQTjmfWn.net
名探偵コナン 701-725 + ルパン三世VS名探偵コナン THE MOVIE

136:デフォルトの名無しさん
15/04/17 12:17:45.40 AqenIXcN.net
>>127
> >>118
> 済みます! 絶対にこれ以上処理は増えないです。
> スレには"Win32APIについての質問はこちらへどうぞ"って書いてあります。
> 使い方について聞いてもいいじゃないいですか・・。
使い方は聞いてください。
しかし、
> わたしが出来ないのは"Win32API"のGetAsyncKeyStateを使って、
ここまではいいです。
> マウスの左クリックを離した瞬間を検出して、その処理を実行させることです。
ロジックの話であり、Win32APIの話ではありません。
他のスレでお願いします。
ここは貴方のスレではないのです。

137:デフォルトの名無しさん
15/04/17 12:37:09.89 e01JbLz6.net
WebMoneyは未成年でもコンビニで買えるから素直に片山に2000円払え

138:デフォルトの名無しさん
15/04/17 12:41:38.03 8xw27FV+.net
>>128
検索してますけど?
別にPrintScreenの押し方を聞きたいんじゃないんです。
それは>>110が検出時の処理を教えてって言うから書いただけです。
わたしが知りたいのは
GetAsyncKeyStateでどうやって、マウスの左クリックを離した瞬間を検出するのかってことです。
そしてそれをどうやって、↓の元ソースに組み込めばいいのか。
URLリンク(codepad.org)
ってことです。

139:デフォルトの名無しさん
15/04/17 12:55:58.67 6/UQT6bn.net
スルー検定実施中

140:67
15/04/17 13:25:01.19 GgWweP1w.net
>>134
ここの板は、「魚を与えるのではなく、魚の釣り方を教える」住人がいる場所だと思ったほうがいい。
魚の釣り方といっても、あくまでもアドバイス、それ以上でもそれ以下でもない。
住人はアドバイスしたくないと思えば教えないし、教える義務もない。
既に、あなたの知りたいコードのサンプルは板に上げられているんだから、それをコンパイルして動かす。
コピペ結合とかだめ。
上げられている数行のサンプルは、どのように動くのか考えなさい。
また、使われているAPIを一つ一つしらべ、意味を全部調べ理解しなさい。
MSDNや、Googleで検索すれば、解説はすぐに見つかる。
すべて理解できれば、結合もできる。
それでも、理解できないなら、あなたは教わる基礎知識が不足しているので、
プログラムの基礎からはじめなさい。
ここでは、WIN32APIのスレッドであって、基礎を教える板ではないことは理解しなさい。
学生なら、ブラウザーのメモリー変化を監視するプログラムを作るよりも、本業の学業を優先しなさい。

141:デフォルトの名無しさん
15/04/17 14:02:07.73 e01JbLz6.net
ひまちんだからちょこっとだけ教えてやる
前回のループではキーが押されていたのに今回のループでは押されていなかったときこそが離された瞬間だ
一個前の状態をメモれる変数があるといいな

142:デフォルトの名無しさん
15/04/17 14:31:40.82 YO6Tc0D6.net
学校PCにキーロガー代わりに仕込んでリンククリックした瞬間スクショ撮ってfacebookにうぷか
捗るな

143:122
15/04/17 19:53:54.07 NAku5IxH.net
#include <CommDlg.h>
#include <Richedit.h>
でいろいろきちんと動作するようになりました。
どもどもでした。

144:デフォルトの名無しさん
15/04/17 23:27:18.16 8CLn8QdX.net
    ヽ|              \    r'     ヽ、    |

             「 ̄ `ヽ、   ______
             L -‐ '´  ̄ `ヽ- 、   〉
          /           ヽ\ /
        //  /  /      ヽヽ ヽ〈
        ヽ、レ! {  ム-t ハ li 、 i i  }ト、
         ハN | lヽ八l ヽjハVヽ、i j/ l !
         /ハ. l ヽk== , r= 、ノルl lL」
        ヽN、ハ l   ┌‐┐   ゙l ノl l
           ヽトjヽ、 ヽ_ノ   ノ//レ′
    r777777777tノ` ー r ´フ/′
   j´ニゝ        l|ヽ  _/`\
   〈 ‐ 知ってるが lト、 /   〃ゝ、
   〈、ネ..         .lF V=="/ イl.
   ト |お前の態度が とニヽ二/  l
   ヽ.|l         〈ー-   ! `ヽ.   l
      |l気に入らない lトニ、_ノ     ヾ、!
      |l__________l|   \    ソ

145:デフォルトの名無しさん
15/04/18 00:11:33.12 d+XtVUDX.net
>>134
所々スルーしてるレスがあるから本気で完成させたいのかが謎

146:デフォルトの名無しさん
15/04/18 00:28:13.73 j/wjXDDU.net
>>134
「getasynckeystate sample code」で検索すれば?
漏れは今、JavaScriptのゲームエンジン、
enchant.js の本を読んでいるけど、例えば、
Bボタンが放された時に、発生するイベントは、
Event.B_BUTTON_UP
Win32APIにも、これによく似たイベントがあるはず
君は59の質問者かね?
誰が書いているのかわかりにくいので、
名前欄に、59と最初のレス番号を入れろ
君は、学校のPCに何かを仕掛けて、
何か悪いことをしようとしているのかね?

147:Office & Gamers ◆G144Hzgh2.0e
15/04/18 00:48:00.49 yZFnrc/6.net
>漏れは今、JavaScriptのゲームエンジン、
>enchant.js の本を読んでいるけど、例えば、
ワロタw

148:142
15/04/18 01:09:29.14 j/wjXDDU.net
漏れ的には今時、Win32API・C/C++でプログラミングって、
気ちがいとしか思えんw
ましてや素人が何で、そんな難しいことをする必要がある?
今日日ブラウザで、ゲームプログラミングで十分やろ?

149:Office & Gamers ◆G144Hzgh2.0e
15/04/18 01:10:48.20 yZFnrc/6.net
今時ならVC++&インラインアセンブルがトレンドだなwwww”

150:デフォルトの名無しさん
15/04/18 01:24:09.63 Pxa1HN8F.net
おれもワロタ
そのガイキチの住む世界を知らない斜め上なご高説w
こいつこそなんでこんなとこ覗きに来るんだろうな

151:デフォルトの名無しさん
15/04/18 01:24:41.48 d+XtVUDX.net
>>144
とりあえずそいつは他スレに誤爆したり余計な事を言うだけの奴だ
興味持った人が
自分の作業を効率化させる目的で
ってのもあるでな
かゆい所に手が届く

152:Office & Gamers ◆G144Hzgh2.0e
15/04/18 01:27:11.05 yZFnrc/6.net
宗教活動はよそでどうぞw

153:デフォルトの名無しさん
15/04/18 09:52:22.94 QuJhi9bL.net
だって javascript つまらないんだも~ん

154:Office & Gamers ◆G144Hzgh2.0e
15/04/18 11:44:37.40 yZFnrc/6.net
ここフツーにVC++かVC#だろw

155:デフォルトの名無しさん
15/04/18 13:21:44.86 Slei64Ty.net
まともに日本語が打てない奴がいっぺんに現われるとカオスだな

156:デフォルトの名無しさん
15/04/18 15:13:27.56 j/wjXDDU.net
>>137
の意味はこういう事かも
ループ処理 {
// 今回のキー状態を、取得する
curr_KS = GetAsyncKeyState(調べたいキー);
// もし前回のキー状態が押されていて、
// 今回、放されたのなら
if(prev_KS & 0x8000 && !(curr_KS & 0x8000)){ 処理 }
// 前回のキー状態を、更新する
prev_KS = curr_KS;
}

157:デフォルトの名無しさん
15/04/18 23:15:29.25 R28h8IPA.net
>>152
ループ処理に入る前に
prev_KS = 0x0000;
で初期化といた方が良いかもね

158:デフォルトの名無しさん
15/04/22 20:39:17.69 NZ8QzlQ5.net
☆ 日本の核ブ装は絶対に必須ですわ。☆
URLリンク(www.soumu.go.jp)
☆ 日本国民の皆様方、2016年7月の『第24回 参議院選挙』で、改憲の参議院議員が
3分の2以上を超えると日本国憲法の改正です。皆様方、必ず投票に自ら足を運んでください。
私たちの日本国憲法を絶対に改正しましょう。☆

159:デフォルトの名無しさん
15/04/22 20:43:27.62 AcUbjFWF.net
>>144
なんでそんなに難しく感じるのかが理解できん

160:デフォルトの名無しさん
15/04/22 22:24:23.10 ugIcL2/v.net
むしろ初心者的には覚える概念が少なくて良いかと。
シンプルイズベスト

161:デフォルトの名無しさん
15/04/22 23:59:32.01 Op4eKru/.net
難しくはないな。面倒くさいだけで。

162:デフォルトの名無しさん
15/04/23 15:10:02.80 atwBzKak.net
名言だな

163:デフォルトの名無しさん
15/04/23 17:23:33.80 E8mzZpiJ.net
自分が使いやすいようにラップしようとすると車輪の再発明みたいになるしな

164:デフォルトの名無しさん
15/04/23 20:14:51.80 t7P1w7fr.net
どんな環境でも動くように全てのライブラリは自作です。

165:デフォルトの名無しさん
15/04/23 21:26:19.91 82Kg6BW/.net
質問っす。
コントロールをメインウインドウに配置して、WM_SIZE:でレイアウトする関数を呼んでますが、
起動する
→レイアウトがズレている。
マウスでメインウインドウをリサイズする。
→意図したレイアウトになる。
という現象が起きて困ってます。
レイアウトのための関数をWM_SIZE:だけでなくWM_CREATE:から呼んでもダメ。
(リサイズすりゃまともになるんだからレイアウトの関数自体はちゃんとしてる。)
起動時から意図したレイアウトにならないのはどんな理由が考えられますか?

166:片山博文MZ ◆T6xkBnTXz7B0
15/04/23 21:35:17.38 rgdBbObh.net
WM_CREATEが来た直後には、ウィンドウハンドル変数にハンドルが代入されていない。
ウィンドウプロシージャの第一引数使え。

167:デフォルトの名無しさん
15/04/23 21:49:51.66 82Kg6BW/.net
レスどもっす。
代入されてないハンドルというのはコントロールのハンドルってことですよね。
レイアウトの関数はWndProc()の第一引数で呼んで、関数内部でGetDlgItem()を使って
コントロールのハンドルを指定してました。
それでもダメです。なんか画面全体が下にズレて配置されて下が隠れてます。
メニューとかステータスバーとかの高さぶんくらいのズレです。

168:片山博文MZ ◆T6xkBnTXz7B0
15/04/23 21:55:54.12 rgdBbObh.net
子ウィンドウかポップアップウインドウかで座標系が異なる。ウィンドウのスタイルは何か?

169:デフォルトの名無しさん
15/04/23 22:12:40.19 dR4qRq19.net
めんどいからまずWM_CREATEじゃなくてmain関数でやってみれば

170:デフォルトの名無しさん
15/04/23 22:20:13.53 82Kg6BW/.net
情報小出しで申し訳ない。
hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
で、VS2010Expressの「Win32プロジェクト」が生成したまんまです。
あとはRichEdit(Multilineが二つ)とStaticが縦に並んでます。

171:片山博文MZ ◆T6xkBnTXz7B0
15/04/23 22:26:51.98 rgdBbObh.net
WS_OVERLAPPEDWINDOWならクライアント座標系だな。
あまり知られていないことだが、WM_CREATEの前にWM_SIZEが来ることがある。

172:デフォルトの名無しさん
15/04/24 00:01:17.23 p+NZUOcD.net
>>161
WM_CREATE::
PostMessage(hWnd,WM_SIZE, 自分で必要なパラメータセットしてね。);を呼び出してリサイズさせるのはだめなん?
もしくは、
WM_CREATE:
PostMessage(hWnd,WM_USER,0,0); // ウインドが作られた後、すぐに処理したい場合
break;
WM_USER:
SetWindowPos(自分で必要なパラメータセットしてね。); // ウインドの位置や、サイズなどを設定しなおす(リサイズ)

173:デフォルトの名無しさん
15/04/24 00:24:45.89 belF3Fjq.net
>>156
そういう意味ではC/C++って両極端すぎ。
C++は覚えることが多すぎてキツくて面白いわ。

174:デフォルトの名無しさん
15/04/24 00:26:34.57 l7nNbXLH.net
>>164-168
いろいろどもっす。
なんか釈然とせず「空のプロジェクト」から始めて昔書いたWinMainとかを貼り付けた後
同じレイアウト関数を同じ呼び方で呼んだら普通に動き、ますます釈然としなくなりますた。
原因が分かったらまたカキコします。ちなみに
>>168さんのWM_USERでのSetWindowPosできちんと動きはしています。
なんだかいろいろもうしわけない。

175:168
15/04/24 01:22:51.93 vwT5rXE6.net
>>170
ウインドが作成されてWM_USER が呼ばれるまでの間のメッセージをprintfしてみた(16進)
24,81,83,93,94,94,
1, <--- #define WM_CREATE 0x0001
18,46,46,1c,86,93,7f,7f,7f,93,91,92,92,6,282,281,7,85,93,93,91,92,92,14,47,93,5,3,f,e,7f,7f,7f,d,31f,
400 <--- #define WM_USER 0x0400
WM_CREATEが動く前に、WM_GETMINMAXINFO,WM_NCCREATE,WM_NCCALCSIZEや、
その他のメッセージが走ってるのと、WM_USERまでに、多くのウインドメッセージが動くので、
間でサイズに関して初期化時に不具合があるんじゃないかな。
何のメッセージが動いているかは、#include <winuser.h> とかと見比べればいいかも
WM_USERで、解決できたならあまり深く考えないでもいいかもだけど、がんばって。

176:デフォルトの名無しさん
15/04/24 03:05:43.50 cnXdh8tn.net
ダイアログにメニューを追加した場合、メニューの高さ分ボタン類が下に移動しますが、
ウィンドウサイズは拡大されないために最下部に配置していたボタン類が
ウィンドウに収まりませんよね。
そのためウィンドウサイズの拡大が必要になりますが、メニューの高さ(フォントサイズ)
はwindowsの設定で変化しますから、この辺を考慮してウィンドウサイズを
変更する必要があると思います。
これは一々自前で実装する必要があるのでしょうか?
もっと簡単に対応する方法があるのでしょうか?

177:Office & Gamers ◆G144Hzgh2.0e
15/04/24 03:07:09.38 gsh3Hj5N.net
実装w

178:168
15/04/24 03:48:08.49 vwT5rXE6.net
GetSystemMetricsとかで計算しよう。

179:デフォルトの名無しさん
15/04/24 03:54:40.79 cnXdh8tn.net
ちょっと、質問し直します。
メニューを追加すると既存のボタン類は自動的にメニューの高さ分下に移動しますが、ウインドウサイズは変わりません。
ウインドウサイズも自動的に大きくはならないのですか?

180:デフォルトの名無しさん
15/04/24 04:33:58.09 xfJFJ7Nc.net
>>175
処理が完了するまでウィンドウが動かないものとして
メニュー追加前のクライアント座標0, 0をウィンドウ座標に変える
→メニュー追加後のクライアント座標0, 0をウィンドウ座標に変える
→その差分ウィンドウサイズを変更する
じゃダメなん?

181:168
15/04/24 04:41:10.43 vwT5rXE6.net
>>175
参考になるか?
URLリンク(sumishiro.blogspot.jp)

182:デフォルトの名無しさん
15/04/24 05:13:29.62 cnXdh8tn.net
ん~、意図がなかなか伝えられなくてすみません。
GetSystemMetricsなどでメニューサイズの取得やSetWindowPosでのウインドウサイズの変更方法などは分かっているのですが、
最初に書いたようにダイアログベースのウインドウをリソースエディタで作成すると
メニューの有無でボタン類の位置は勝手に上下に動きますが、ウインドウサイズは変わりません。
これは、プログラムでサイズ変更するしかないのかというのが質問です。

183:デフォルトの名無しさん
15/04/24 06:13:30.70 vwT5rXE6.net
>>178
vs2013の自動生成コード利用して、ABOUTBOXダイアログに、メニューの追加でサンプルを作ってみたが、
RCのダイアログって、クライアントサイズは固定で、メニュの有無で、ウインドサイズは異なるので正常だと思うが、
ダイアログのウインドサイズを固定で作りたいの?
ダイアログのクライアントサイズを固定で作りたいの?
メニューの追加って、RCのプロパティでmenuってとこで設定するようにしてるよね?

184:デフォルトの名無しさん
15/04/24 06:44:25.47 6TulMhAx.net
出来るか出来ないかで言えば当然出来る訳だが
糞仕様

185:デフォルトの名無しさん
15/04/24 08:29:32.10 ci039+n8.net
>>178
「メニューの有無で」の部分をもっと正確に言わないと回答つかないのでは?
エスパーして例を挙げるなら、表示されているウィンドウにSetMenuなどで
メニューを付けてあげる場合は勝手にリサイズされないから自前でやる必要がある。

186:デフォルトの名無しさん
15/04/24 09:04:22.11 HjJDKAs5p
>>170
WM_CREATEは、まだオブジェクトがない
WM_SHOWWINDOWは、オブジェクトはあるが表示する直前
レイアウトはWM_SHOWWINDOWでやればいい

187:デフォルトの名無しさん
15/04/25 08:59:49.51 QgsvYozO.net
言語バーの作成方法って作り方分かる人いませんか?

188:デフォルトの名無しさん
15/04/25 09:06:53.19 QgsvYozO.net
ドッキングウィンド関連探せばいいのだろうか。。?

189:デフォルトの名無しさん
15/04/27 21:27:22.01 QwoO9IPF.net
基本的なこと申し訳ありませんが、教えてください。
メッセージループは1つのアプリケーションに一つ?
それともそのアプリケーション内のウィンドウごとにおのおの存在するの?

190:デフォルトの名無しさん
15/04/27 21:35:52.54 6f9FfEFl.net
一つ

191:デフォルトの名無しさん
15/04/27 21:39:44.80 eeUDpTg4.net
ぶっちゃけスレッドごと
ドラッグで範囲選択するときのWM_LBUTTONDOWNなどで独自にループすることもある

192:デフォルトの名無しさん
15/04/27 21:47:49.17 nicG1Io0.net
メインスレッド以外をCreateThreadしてから
そのスレッド内でGetMessageすれば新しいメッセージループが作られるけど
取り立てて役だったことはない

193:12
15/04/28 01:05:17.00 /B/rl701.net
とても遅くなりましたが、>>26さんの方法で実装出来ました!
大変助かりました。ありがとうございます。

194:デフォルトの名無しさん
15/04/28 18:13:27.82 W6RHswum.net
SendInput()関数と同様の動作をするタブレットをタッチするAPIって何かありますか?

195:189
15/04/28 18:26:37.13 W6RHswum.net
InjectTouchInput functionっていうの見つけたんですが、WM_TOUCHで分岐で、自分でタッチしているタッチIDを、タッチアップ状態にすることができるのかな?

196:189
15/04/28 23:01:18.23 W6RHswum.net
windows8で、タッチパネルを操作している時に、マウスが内部で連動して動きます。
タッチ操作中に、マウスを動かさない方法ってありますか?
一部の処理で、マウスカーソルの位置をアプリ側で操作する処理で障害になります。
WM_TOUCHでタッチ処理をしているのですが、GetCursorPos();で調べると値が変化しています。

197:189
15/04/29 02:05:01.53 S40E4Ihk.net
グローバルフックで試してみますぅぅ。。

198:デフォルトの名無しさん
15/04/29 12:08:54.67 No5D67KY.net
意識しなくてもCreateできるウィンドウクラス BUTTONとかはどこに定義されてるの?

199:デフォルトの名無しさん
15/04/29 12:53:06.13 pThgOoLO.net
リソース

200:デフォルトの名無しさん
15/04/29 13:15:05.63 UdtGh3gm.net
user32.dll

201:デフォルトの名無しさん
15/04/29 14:16:13.91 No5D67KY.net
ありがとう

202:デフォルトの名無しさん
15/04/29 16:24:35.52 1y0sk+YZ.net
すみませんがCOM作成にあたり分からない点があり、もう一度質問させてください。
DelegateExecute等から呼び出させるCOMを作成する際、既存COMの動作を
適宜実行させたい場合、どうするべきなのでしょうか。
既存COMのDLLを参照して、コクラスの継承とかが出来るのかと思いましたが、
よくわからないでおります。
HKCU\Software\Classes\Folder\shell\open\commandの場合、
ExecuteFolder(ExplorerFrame.dll)が既存アクションのようなのですが、
こいつをどう呼び出す/継承させるかがわからずにいる状態です。
(そもそもスタンスがあってるのかさえ。。)

203:デフォルトの名無しさん
15/04/29 18:05:09.67 lb5eDrrL.net
CoCreateInstance( ExecuteFolderのCLSID ... できたら
IExecuteCommand IInitializeCommand IObjectWithSelection IObjectWithSite
ここらへんのインターフェイスのメソッドで正しい情報を与えてやってExecuteFolderをエミュレートすればできそうな気がするけど
面倒くさそうだから自分なら既得のsiteからIShellBrowserをQueryInterfaceして
IShellBrowser::BrowseObjectで普通にフォルダ開かせちゃうのがいいと思うがどうか

204:デフォルトの名無しさん
15/04/29 18:38:32.74 Bg6ZLegt.net
今時COMなんて・・・
10年ぶりに聞いたなw

205:デフォルトの名無しさん
15/04/29 19:59:29.55 Ih1x52O1.net
モーダルダイアログボックスを表示すると
メッセージループがぐるぐる開始する。
ダイアログ中のプッシュボタンをマウスで押すと
このメッセージループがWM_LBUTTONDOWNを受け
WM_LBUTTONDOWNのハンドラ中で別のメッセージループを開始する。
メッセージループはいくつある。

206:デフォルトの名無しさん
15/04/29 20:23:23.77 MPDoLmFP.net
今時って言われても Excel とか細かく制御するなら COM しかないし

207:デフォルトの名無しさん
15/04/29 20:58:21.71 Bg6ZLegt.net
つドトネ

208:デフォルトの名無しさん
15/04/29 21:22:01.08 pThgOoLO.net
DirectX

209:デフォルトの名無しさん
15/04/29 23:20:13.57 zwED2fT3.net
.netもCOM呼んでるだけだから

210:197
15/04/30 00:27:47.26 IOp/sxLA.net
>>199
IShellBrowser::BrowseObject実装して、今のところ既存の動きを再現できました。
ありがとうございます!
IShellBrowser::BrowseObjectなんぞ知りも知らなかったので、
ここらへん辿れるようになりたいですね。

211:デフォルトの名無しさん
15/04/30 07:57:48.27 75MO5jun.net
シェルインターフェイスは掘ると楽しいぞ

212:デフォルトの名無しさん
15/04/30 11:21:


213:09.79 ID:ztKwqMYg.net



214:207
15/04/30 11:23:04.24 ztKwqMYg.net
VS2013の間違いです。。

215:207
15/04/30 11:25:21.36 ztKwqMYg.net
スパイ見つけました。。\Common7\Toolsにあるとは。。

216:デフォルトの名無しさん
15/04/30 13:51:06.64 iDcC+qzm.net
VS2013なら、メニューの「ツール」から起動できるだろ。

217:デフォルトの名無しさん
15/04/30 21:45:33.01 acewAU+4.net
>・.NET やWin32 デスクトップアプリもストア配布可能に。エンタープライズ向けの仮想化技術を応用した
>サンドボックス環境で動き、ネイティブデスクトップアプリの力をそのままにシステムへの影響を減らす。
>アンインストール時にゴミを残さない。ステージでは PhtoShop Elements をデモ。
サンドボックス化は歓迎だけどこんなんストアがマルウェアの万国博覧会になりそうなんだけど

218:デフォルトの名無しさん
15/04/30 22:36:39.51 z7JbgbHO.net
別に一元化なんて望んでねえけどな
パッケージマネージャーつけろとは前々から思っていたが
chocolatey?
おもちゃに用はないよ

219:デフォルトの名無しさん
15/04/30 22:54:56.41 uI857xi4.net
Nugetは?

220:デフォルトの名無しさん
15/05/01 01:12:16.84 /Mtkjhpa.net
ファイルに関連付けられたアイコン (エクスプローラで表示されるやつ) の、
大きいのが取得したいんだけど、どうすればよい?
ExtractAssociatedIcon と IExtractIcon を試したんだけど、
両方とも48x48が最高みたい。
256x256の綺麗なアイコンはどうやったら取得できますか?

221:214
15/05/01 01:30:39.80 /Mtkjhpa.net
ごめん。
解決しました

222:デフォルトの名無しさん
15/05/01 16:17:44.56 mcLYTm8y.net
複数行richeditで一行の高さをピクセルで得たいのですが、
CHARFORMAT構造体のdw.yHeightはtwip単位。
twipからpixelへの間には各環境のdpiが絡んでらっしゃると。
てことはGetDeviceCapsとかを呼んでアレコレするしかないってことなんでしょうか。
現フォントの大きさ高さをピクセル単位で保存してるプロパティ的なものって
ないんでしょうか。
昔はだいたい96dpiだったと知りましたが、実際計ってみると確かに
96dpiではおかしい大きさで表示しとりますです。

223:デフォルトの名無しさん
15/05/02 18:04:37.67 wQLon+fD.net
gw真っ只中ですが、教えてください
Ctrl+FunctionKeyを捕まえたいのですが、どんなメッセージ飛んでくるのですか?

224:デフォルトの名無しさん
15/05/02 18:43:22.99 wQLon+fD.net
できました

225:デフォルトの名無しさん
15/05/02 19:22:52.25 P8FpGVi1.net
XPから久々にWindowsネイティブアプリ作ろうとしたら
グローバルフック周り地味に面倒になってそうだな・・・

226:デフォルトの名無しさん
15/05/03 01:12:27.12 DpPxqG4c.net
ツールチップを好きなタイミングで複数表示したり非表示にしたいと思っています
しかし、CreateWindowでtooltips_class32を指定したものをShowWindowで表示してみても影しか表示されません
何かしら抜けている手順があったら教えてください

227:デフォルトの名無しさん
15/05/03 01:20:14.65 DGVNwvpl.net
つShowWindowsAtAnyTime

228:デフォルトの名無しさん
15/05/03 08:38:00.25 y99enrox.net
グローバルフックなどで、ウインドメッセージの内容を書き換えて適用させようと思ったらどうすれば良いですか?
ウインドメッセージ、WM_WINDOWPOSCHANGING:の値を書き換えたいのですが、ご教授お願いします。

229:デフォルトの名無しさん
15/05/03 10:46:37.20 jQdh0BE6.net
ローレベルインプット系のグローバルフック以外は書き換えできないよ
やりたいなら対象プロセスに潜り込んでWndProcを上書きするしかない
対象プロセスに潜り込む方法はグローバルフックでもいいけどね

230:デフォルトの名無しさん
15/05/03 10:50:29.30 jQdh0BE6.net
他にもメッセージを変更可能なフックはあったような気がするが
確実にWH_CALLWNDPROCではない
ジャーナル何とかだったかな

231:デフォルトの名無しさん
15/05/03 11:04:16.54 p3er52Mk.net
とりあえずWH_DEBUGで受け取れるか見てみたらいいんじゃね

232:デフォルトの名無しさん
15/05/03 11:47:58.30 y99enrox.net
対象ウインドを、グローバルフックで、case WM_SYSCOMMAND:、case SC_MOVE: の開始のタイミングで、
CreateRemoteThreadとか使う感じになるのでしょうか?
case SC_MOVEのタイミングで、SetWindowSubclass(p->hwnd, SubclassProc, 0, 0);だとダメでした。
自分のウインドのみは書き換えは成功していたみたいです。
SetWindowLongは試してないですが、古いAPIなので、使うと不具合ありそうですねよね?
SetWindowLongは、動作しているスレッドが違う場合ので動かないのかな?
WH_CALLWNDPROC 読み出しのみっぽいのでダメ
WH_CBT+HCBT_MOVESIZE 動かしたい内容に近いが、ダメでした。
WH_DEBUG 試してない
WH_GETMESSAGE WM_WINDOWPOSCHANGING:読み出しできず
WH_MOUSE、WH_MOUSE_LL ウインド移動ではだめっぽい。
このあたりは読みましたが…解決してないです。
URLリンク(social.msdn.microsoft.com)

233:デフォルトの名無しさん
15/05/03 11:58:39.70 DpPxqG4c.net
>>222
ググってもヒットしないんですが、それは何なんでしょうか?

234:デフォルトの名無しさん
15/05/03 18:17:35.43 LlABLTEl.net
>>227
なんか不穏な感じ

235:デフォルトの名無しさん
15/05/04 05:27:30.11 LYeSXt0A.net
コードに不吉な臭いが所々ありそう

236:デフォルトの名無しさん
15/05/04 08:56:17.68 80QzrQPL.net
呪いのプログラム

237:デフォルトの名無しさん
15/05/04 09:36:46.19 sKsouBLL.net
悪魔召喚プログラムの方が好きです

238:226
15/05/04 18:02:24.32 q56zhT2A.net
グローバルフック中のSetWindowLong だと問題なく動きますねぇ。
SetWindowSubClassだとうまく動きませんねぇ。なんでだろ?
Win7以降向けで、CreateRemoteThreadEx+LoadLibrary で、サブクラス化のテストはしました。
XPだとCreateRemoteThreadじゃないとだめですね。
とりあえず、CreateRemoteThreadExだと、カスペル先生とかが誤動作しそうなので、
グローバルフック中にSetWindowLongのを使おうかと考えています。
ウインド移動前提で、サブクラス化した場合、
SetWindowLong(サブクラス化)の解除のタイミングは、WM_DESTROY 以外だと、
どのメッセージがよいでしょうか?
WM_EXITSIZEMOVE,WM_DESTROY で破棄コードを動かすようにはしています。

239:226
15/05/04 18:26:03.85 q56zhT2A.net
動いているアプリの、ウインドハンドルが64Bitか32Bitの判断ってどうすればよいでしょうか?
なにかAPIありましたっけ?

240:226
15/05/04 18:35:31.12 q56zhT2A.net
多分自己解決、これでいいのかなぁ?
DWORD processID;
DWORD thID;
BOOL bIsWow64 = FALSE;
thID = GetWindowThreadProcessId(hWnd,&processID);
IsWow64Process(processID, &bIsWow64);
は。。64ビットめんどくさー

241:226
15/05/04 20:26:27.96 q56zhT2A.net
IsWow64Processの第一引数、HANDLEだったorz

242:デフォルトの名無しさん
15/05/04 20:58:25.12 VqP+6wea.net
32bitOS上でもIsWow64Process関数はFALSEを返すが大丈夫か?
作っているアプリ自体が64bitっていうなら良いけど。

243:226
15/05/04 21:25:39.18 q56zhT2A.net
>237
32Bitの環境は、IsWow64Process関数が存在するかどうか調べて判断すれば。。と思ったんですが、甘いかなぁ。。
この辺り参考にしようかとは思ってますがどうなんでしょう。
URLリンク(blog.monoweb.info)

244:デフォルトの名無しさん
15/05/04 21:53:00.00 MYTXHyrO.net
32bitOS上に64bitアプリは存在しないんだから result が FALSE なら 32bit アプリということで
事足りるんじゃないの?

245:デフォルトの名無しさん
15/05/04 23:36:23.21 VqP+6wea.net
>>238
Windows XP SP2以降はこの関数が存在しているらしい。
「関数が存在していなければ32bitOS」という判断は出来るが「関数が存在していれば64bitOS」という判断は出来ない。
また実機(WindowsXP SP2)でも過去に検証済み。
MSDN
URLリンク(msdn.microsoft.com)
>If the process is running under 32-bit Windows, the value is set to FALSE.
>If the process is a 64-bit application running under 64-bit Windows, the value is also set to FALSE.
そのサイトに書かれている方法は以下の文が肝。
>始めに利用者が起動するのは32bit版のプログラムです。
32bitアプリ実行環境においてIsWow64ProcessがFALSEを返すということは、ネイティブで実行されている。
逆にIsWow64ProcessがTRUEを返したならそれはWOW64の下で動いているということになる。
だから「必ず最初は32bitアプリを起動させて・・・」という方法を取れるならそのブログのようにIsWow64Processだけで判断も出来る。
>>239
result が FALSEってのがどのレベルで言っているのか分からんが
( IsWow64Processの戻り値ということなら)64bitOSで64bitアプリケーションでも IsWow64Process はFALSE を返す。
つまり32bitOSか64bitアプリなら関数はFALSEを返すので
アプリが何bitかを判断するにはOSが何bitかを知らないといけない。

246:デフォルトの名無しさん
15/05/04 23:45:54.58 VqP+6wea.net
というかあれだな。
32bitアプリを作っているなら「最初に起動するのは32bitアプリ」なのは当然か。
フック対象が64bitならフックしないか、64bit版を起動させるっていうブログの方法で問題ないな。
ただ「関数が存在するかどうか」だけじゃ不十分だから気をつけてね。

247:デフォルトの名無しさん
15/05/05 00:15:04.99 HP7XiSqu.net
あれ?なんか違うな。
>>241は若干訂正。
自分が32bitアプリだとしても、
・相手が32bitOSで32アプリ → IsWow64Process はFALSEを返す
・相手が64bitOSで32アプリ → IsWow64Process はTRUEを返す
・相手が64bitOSで64アプリ → IsWow64Process はFALSEを返す
OSが何bitかを知りたいだけならそのブログの方法だけでいいが、
相手が何bitかを知りたいなら組み合わせないとダメだな。
自分が32bitアプリだから、自分にIsWow64Processを使いFALSEなら32bitOSでTRUEなら64bitOS。
32bitOS環境なら相手も当然32bitアプリ。
64bitOS環境だと相手が32bitアプリか64bitアプリかの判断が必要なので相手もIsWow64Processで調べる。
FALSEなら64bitアプリ、TRUEなら32bitアプリ。
「動いているアプリの」ってのが相手のことならこうしないとダメだな。
あとは相手が64bitアプリならフックしないか、64bitアプリを立ち上げてフックするか。

248:デフォルトの名無しさん
15/05/05 00:55:10.80 JPFk61nl.net
64bit cpuで
int a = 0xffffffffffffffff;
でなぜ警告がでるの?

249:デフォルトの名無しさん
15/05/05 01:08:32.87 WXcigvGr.net
今Windowsで使えるメジャーなC/C++コンパイラは
intを32ビットで扱っているから
整数型のサイズはCPUのビット数に合わせなければならない
とかいう規定があるわけではない
shortのサイズ以上であればintが2048ビットでも
24ビットでもそれはコンパイラの自由なんだよ

250:デフォルトの名無しさん
15/05/05 01:16:06.47 q10zsNFn.net
intの上限が 0x7FFFFFFF だから

251:デフォルトの名無しさん
15/05/05 01:21:24.52 AH7UBQjv.net
>>243
sizeof(int) がいくつになるか試してみたら

252:デフォルトの名無しさん
15/05/05 05:07:51.68 V9xQwQO9.net
デスクトップってダブルバッファリングは行っていないんでしょうか?
マウス入力などを遮らないアニメーションをデスクトップ上に表示したいんですが

253:デフォルトの名無しさん
15/05/05 09:29:14.26 8cBYwRXK.net
DWM compositionが有効な限り常時バッファリング描画やで

254:226
15/05/05 09:29:18.47 20DP2R/2.net
>>242
サンキュー助かります。
最初に32ビット版で起動して、64ビットOSであれば、
64ビット版を起動して、ウインド情報を調べてフックするようにするつもりです。
実行ファイル2つと、DLLが2つになるのは仕方ないですね。
メモリー共有って32ビットと64ビットの混合ってできましたっけ?
32ビットウインドと64ビットのウインド間のメモリー共有って
CreateFileMappingでできるのかな?
SendMessage(WM_USER や WM_COPYDATAでやりとりしたほうがいい?

255:デフォルトの名無しさん
15/05/05 10:51:06.10 V9xQwQO9.net
>>248
ありがとうございます
確かにAeroの処理を考えるとダブルバッファリングが必須ですね
よく考えたらやりたいこととダブルバッファリングはあまり関係がありませんでした
すでに知っているのはGetDC+BitBltで書き換えるやり方ですが、
描画した画像の下に無効リージョンが発生すると
勝手に塗り直されてちらつきが発生するのでそれを防ぐ方法が知りたいです
デスクトップの内部バッファが後は反映するだけというところまで描画を終える

そこにすかさず割り込んで表示したいアニメを描き足す

その後OKサインを送ったらようやく実際にデスクトップが描画される
具体的に書くときっとこういう流れになると思うんですが、特に真ん中を実現するためのAPIがあったら教えてください

256:デフォルトの名無しさん
15/05/05 10:59:46.29 qvOIJ9mb.net
これってさ自前でダブルバッファリングやってるのもさらにダブルバッファリングかかるわけ?

257:226
15/05/05 11:04:35.43 20DP2R/2.net
>>250
自分でダブルバッファーしてるんであれば、あとはやることといえば、NULLブラシの設定くらいか?
wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);を
wcex.hbrBackground = (HBRUSH)NULL;にしてみたら?改善しないか?

258:デフォルトの名無しさん
15/05/05 11:17:14.87 kyGf+mJm.net
WM_ERASEBKGNDは?

259:デフォルトの名無しさん
15/05/05 11:21:04.64 V9xQwQO9.net
>>251-253
これが実現できるならダブルバッファリングは一回で済むんじゃないかと思います
自分ではウィンドウは作らずにデスクトップに直描きしたいってことです
理由は最前面になっている他のウィンドウを非アクティブにしたくないのが一つと
カーソル下にウィンドウがあるときにマウス入力が遮られて邪魔になるのが一つ
(例えばスタートボタンの上に画像が被さっていても意に介せずホバーやクリックの反応をしてほしい)
協力してくださってありがとうございます

260:226
15/05/05 11:24:14.70 20DP2R/2.net
HANDLE hShare = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE,0, sizeof(MyShareData), strShareName);
LPDATA pData = MapViewOfFile(hShare, FILE_MAP_WRITE, 0, 0, sizeof(MyShareData));
32/64ビット間のメモリー共有ですが、特にコードいじることなく共有できました。

261:デフォルトの名無しさん
15/05/05 12:56:34.32 kyGf+mJm.net
>>254
デスクトップのハンドルからプロシージャのアドレス得て>>253だけ捕まえるとか

262:226
15/05/05 13:46:31.14 20DP2R/2.net
>>254
デスクトップの直書きって、WM_PAINT直後に描画するてこと?
試してないけど、デスクトップのウインドハンドルをフックしたとして、
WM_PAINTを先に描画させて、任意の画像を上からBitBltとかする感じかな?
普通にちらつきそうではあるが。。?

263:デフォルトの名無しさん
15/05/05 14:07:36.70 q10zsNFn.net
アニメーションコントロール作ってAVI再生させたほうが早いかも (笑)

264:デフォルトの名無しさん
15/05/05 14:39:05.37 3fPyNIFJ.net
フックして、プロセス開いて本来のこーどの
wm_paintのendpaintの直前に描画命令を割り込ませられれば。。。あるいは。。。

265:デフォルトの名無しさん
15/05/05 16:58:43.47 PARG4dys.net
素直に透過ウインド作ったほうがよくね?

266:226
15/05/05 18:36:30.71 20DP2R/2.net
>>254
これ通るか不明ですが。
case WM_PAINT:を動かす時って、通常、hdc = BeginPaint(hWnd, &ps);EndPaint(hWnd, &ps);がセットですよね?
と、いうことは、hWndのhdcの値を任意の情報に書き換えられれば、バッファリングできるかもしれないですよね?
だめで元々と思ってください。
予め、自分のウインドハンドルに、hdc=GetDC(hWnd);でHDC取得して、 バッファに、SelectObject(hdc,hMyBmp);で関連付けしておく
それと、ダブルバッファ用のメモリーDC(myDC)を作っておく
んで、GetDesktopWindow() とか必要に応じて、グローバルフック+サブクラス化して、 WM_PAINTの本来受け渡す、HookPrc( hWnd,rParam,lParam); のhWndを書き換えてバッファリングして描画するっていう方法はどうでしょうか?
case WM_PAINT:
myWndDC =GetDC(hMyWnd); // 自分のウインドハンドルのDCを取得
// myBmpはCreateCompatibleBitmapで本来のhWndのDC, 所属のhBitmapなどからサイズとか取得したほうが良いと思う
hdc =GetDC(hWnd);myBmp = 略;ReleaseDC(hdc);
oBmp=(HBITMAP)SelectObject(myWndDC,myBmp); // myWndDCにバッファ用のビットマップをセット
// 先に描画、描画対象を自分のウインドのhDCに描かせることが成功すればチラツキは抑えられるはず?
HookPrc(hMyWnd,wParam,lParam);
hdc = BeginPaint(hWnd, &ps);
BitBlt(myDC,略,myWndDC,略); // 背景として、本来の描画内容をmyDCに転送(バッファリング)
SelectObject(hMyDC,oBmp); // 本来のビットマップに戻す
ReleaseDC(hMyWnd, myWndDC); // リリース
DeleteObject(myBmp); // myBmpを破棄
FillRect(myDC,略)など // ここで自分で上書き描画
BitBlt(hdc,略,myDC); // 実際のウインドに描画する
EndPaint(hWnd, &ps);return 0;

267:226
15/05/05 18:38:32.93 20DP2R/2.net
書いててふと思ったんですが、DirectXやら、OpenGLとかで動いてるアプリには、上記の方法は効果なさそうですね

268:デフォルトの名無しさん
15/05/05 23:47:02.11 V9xQwQO9.net
>>261
とても親切に説明していただいて恐悦至極です。ありがとうございます!
BeginPaintが返却するhdcを自分のメモリDCに挿げ替えるなんてのは思いつかなかったので非常に参考になりました
背景, アニメABCDコマがあるとすると(背景はGetDC(NULL)で取得できる内容そのもの)
1, 背景が描画される(表示状態:背景のみ)

2, Aコマを描画する(表示状態:背景+Aコマ)

3, 次のコマを表示するために背景を再描画させる(表示状態:背景のみ)

4, Bコマを描画する(表示状態:背景+Bコマ)
となり、AコマとBコマの間に一瞬だけ背景のみの状態になることがちらつきの原因と思われるので、
1と2,3と4を同一のタイミングで描画するための何かしらの方法を探していましたが、
皆さんの書き込みを拝見する限りではBeginPaintやEndPaint等のAPIフックが必須っぽいので、
それで試して上手く行かなかったらそのときは諦めようかと思います
ありがとうございました

269:デフォルトの名無しさん
15/05/06 22:24:13.55 OlUhBFHF.net
VS2013のC++で
MessageBoxIndirectを使ってダイアログを表示する際に、例えば
IDCANCELボタンを表示すると、日本語Windows7なら[キャンセル]、
英語Windows7なら[Cancel]と表示されますが、それをOSの言語と関係無く
自分で好きな文字列を指定して表示させたいのですが、どうやっても
出来ません。どうにかして出来ませんか?

270:デフォルトの名無しさん
15/05/06 22:35:05.51 ROM3ZfOK.net
>>264
(1)自分でダイアログを自作する。
(2)メッセージボックスをフックする。

271:デフォルトの名無しさん
15/05/06 22:46:36.25 OlUhBFHF.net
>>265
レスありがとうございます。
(2)の方法でやりたいのですが、どうすれば自作のcallback関数に
置き換えられるのか分りませんでした。

272:デフォルトの名無しさん
15/05/06 22:51:27.95 ROM3ZfOK.net
>>266
SetDlgItemText

273:デフォルトの名無しさん
15/05/06 22:55:01.18 lk9KI/Ea.net
::SetWindowsHookEx(WH_CBT, CBTProc,...);
LRESULT CALLBACK CBTProc(int nCode, WPARAM wParam, LPARAM lParam)
{
  if(nCode == HCBT_ACTIVATE)
  {
    HWND hWnd = reinterpret_cast<HWND>(wParam);

274:デフォルトの名無しさん
15/05/06 23:54:06.74 OlUhBFHF.net
>>267>>268
情報ありがとうございました。
試してみたいと思います。

275:デフォルトの名無しさん
15/05/07 00:56:21.78 CSFF77Jn.net
自分が分かることは得意げに書くけど、
分からないことはヤフレカスってのは常套手段ですねw

276:デフォルトの名無しさん
15/05/07 01:05:23.21 xpfh09H0.net
自分がわからないことをヤフレばわかるって、どの口から言えるんだろうな

277:デフォルトの名無しさん
15/05/07 03:35:20.66 +yI4RSPE.net
しばらく誰も検索しろなんて言ってないような気がするが…
どこのスレで口喧嘩に負けてきたんだ?
荒らしてきてやるから書け

278:デフォルトの名無しさん
15/05/07 22:56:17.61 uDHc9Yu6.net
例えば、自作のC++アプリの中から、他のアプリの中にあるButtonのhwnd
が取得出来たとして、
Postmessage(hwnd, , ,) ;
で何かメッセージを送って、そのボタンの背景色を赤色に変えるなど
できますか?

279:デフォルトの名無しさん
15/05/07 23:10:50.13 XdEP7Lb2.net
例えば ツリービューコントロールの TVM_SETBKCOLOR みたいなメッセージが
用意されていればいいのだが、あいにくボタンにはそういうメッセージがない。
なので、他のアプリのボタンの背景色を変えようと思えば、そのボタンのスタイルを変え、
なおかつプロシージャを乗っ取って WM_DRAWITEM なりを処理する必要があると思う。
ゆえに答えは否。
自分の作ったアプリのボタンの背景色を変えるにはどうすればいいか。
まずはそのあたりを考えてみるといいよ。

280:デフォルトの名無しさん
15/05/07 23:17:47.32 uDHc9Yu6.net
>>274
レスありがとうございました。
>他のアプリのボタンの背景色を変えようと思えば、そのボタンのスタイルを変え、
>なおかつプロシージャを乗っ取って WM_DRAWITEM なりを処理する必要があると思う。
なかなかややこしそうですね。
>ゆえに答えは否。
そうですか。困った。
>自分の作ったアプリのボタンの背景色を変えるにはどうすればいいか。
>まずはそのあたりを考えてみるといいよ。
その場合は、
SetBkColor
でやるんですよね?

281:デフォルトの名無しさん
15/05/07 23:52:51.04 hWWp4HfH.net
>>自分の作ったアプリのボタンの背景色を変えるにはどうすればいいか。
>>まずはそのあたりを考えてみるといいよ。
>その場合は、
>SetBkColor
>でやるんですよね?
全く理解してなくてワロタ

282:デフォルトの名無しさん
15/05/07 23:54:43.21 uhpkEIt4.net
オーナードローで検索

283:デフォルトの名無しさん
15/05/08 00:05:10.49 D5f67YQT.net
他人のアプリに配置されているボタンがCreateWindowの"BUTTON"で作られたボタンならスタイルうんぬんという議論は分かるが
何らかのGUIツールキットで作られたボタンならスタイルうんぬん以前の問題

284:デフォルトの名無しさん
15/05/08 00:07:56.26 D5f67YQT.net
ツールキット使わずボタンを自作してる可能性もあるし
Windowという実体を作らず画像処理だけでボタンを再現してる奴もいるかもしれん
後者ならボタンのハンドルもメッセージも存在しないw

285:デフォルトの名無しさん
15/05/08 00:30:30.98 wauI//yZ.net
お前も全く理解してなくてワロタ

286:デフォルトの名無しさん
15/05/08 01:03:34.39 JNS4Z5xc.net
「他のアプリの中にあるButtonのhwndが取得出来たとして」という前提での話だから
>>278-279 は議論うんぬん以前の問題

287:デフォルトの名無しさん
15/05/08 01:04:28.80 2/9eM7ZL.net
会社にも頭でっかちの奴いるわ
自分は全く書けないのに、正論だけ押し付けてくる奴
「きちんと設計すれば動かないはずが無い」が口癖w
そりゃそうだろうけどw

288:デフォルトの名無しさん
15/05/08 02:25:25.99 semA39SH.net
そうなんだよ

289:デフォルトの名無しさん
15/05/08 05:53:15.38 rtQrrRIy.net
そのとおり

290:デフォルトの名無しさん
15/05/08 08:24:18.65 Yhmm5THU.net
>>282
暗にお前の設計がタコだって言われてるんだろ

291:デフォルトの名無しさん
15/05/08 08:42:21.41 oCL66D4S.net
>>275
他のアプリってのが「もし自作なら」ユーザーメッセージで解決できるけどな

292:デフォルトの名無しさん
15/05/08 11:15:26.01 1gJibIV9.net
>自作のC++アプリの中から、他のアプリの中にあるButtonのhwnd
>が取得出来たとして

これって異なる自作アプリ同士でプロセス間通信したいって話じゃないの?

293:デフォルトの名無しさん
15/05/08 11:25:32.49 JgJK5K7B.net
int* a, b;

294:デフォルトの名無しさん
15/05/08 12:19:18.43 Gm54KlG7.net
>>287
>これって異なる自作アプリ同士でプロセス間通信したいって話じゃないの?
ええっと、そうではなくて
自作アプリから、他作アプリのコントロールの背景色を変更したい
と思いました。やり方が分りません。

295:デフォルトの名無しさん
15/05/08 12:24:41.65 Yhmm5THU.net
>>274 で回答出てるだろ

296:デフォルトの名無しさん
15/05/08 14:12:02.64 qF/v14b/.net
他人様のアプリの実装なんてどうなってんのか分からんのにどうやって中身を弄るってんだよ

297:デフォルトの名無しさん
15/05/08 14:21:43.73 Iyiixb5X.net
>>291
Spy++みたいにではないでしょうか。

298:デフォルトの名無しさん
15/05/08 14:31:02.25 semA39SH.net
まずSpy系のツールで対象のコントロールがちゃんと窓のハンドルなのか調べることからだな
>>274の工程は専門的に言うとオーナードローとサブクラス化ね
その辺は1から体系的に学んでおかないとやっていけない

299:デフォルトの名無しさん
15/05/08 14:34:59.04 semA39SH.net
おっとミスった
他プロセスだからメッセージフックだったな

300:片山博文MZ ◆T6xkBnTXz7B0
15/05/08 14:49:49.46 //zzhYF7.net
バージョン情報がないプログラムは動かなくなるって。ソースは俺

301:デフォルトの名無しさん
15/05/08 19:49:37.43 5bS680Kq.net
>>295
マジで?!リソースファイルの.RCのStringFileInfoを適当に記載しておけばいいのかな?
WIN7以前、以降とか、記述なしで、実行制限ありましたっけ?

302:片山博文MZ ◆T6xkBnTXz7B0
15/05/08 20:18:23.68 //zzhYF7.net
>>296
SmartScreenがソフトのバージョン情報をチェックしているらしい。
バージョン情報を付けた方が良さそうだ。

303:片山博文MZ ◆T6xkBnTXz7B0
15/05/08 20:26:10.33 //zzhYF7.net
このscreenは、画面という意味ではなく、「選別」を意味するらしい。

304:片山博文MZ ◆T6xkBnTXz7B0
15/05/08 21:20:40.18 //zzhYF7.net
SmartScreenとSecurity Essentialsにより、世界中のソフトウェアの情報が一元管理されて、発行元や人気の高さ、
クラッシュの回数までマイクロソフトが把握するようになったんだよ。

305:デフォルトの名無しさん
15/05/08 23:55:30.38 5bS680Kq.net
>>299
なるほど。。クラッシュ回数まで把握ですか。デバッグはしっかりやっておきたいですね。
#pragma data_seg( で質問です。
A.exe +a.dll とB.exe + b.dll があったとします。
a.dllで #pragma data_seg("MY_DATA") int share_a=0; #pragma data_seg()
void setData(int n) {share_a =n;}
int getData() {return share_a;}
b.dllで #pragma data_seg("MY_DATA") int share_a=0; #pragma data_seg()
void setData(int n) {share_a =n;}
int getData() {return share_a;}
このとき、A.exe 内で setData(10)とした場合 B.exe getData()の値は 10になるのでしょうか?
別プロセスで、share_aが共有できるのであれば、メモリーマップドファイル使わないでいいのかな?

306:デフォルトの名無しさん
15/05/09 00:06:21.40 f+X1Lw0k.net
A.exe が呼んでる a.dll と B.exe が呼んでる b.dll は別モノだろ

307:デフォルトの名無しさん
15/05/09 11:00:55.20 OWlYoivl.net
初歩的な質問ですいません。
文字セットはマルチバイトとUNICODEのどちらで開発した方が良いのでしょうか?
URLリンク(blogs.msdn.com)
ちょっと古いのですが上記の記事ではUNICODEを推奨しています。
しかし現在の主流はUTF-8だと思うのでマルチバイトの方がいいでしょうか?

308:デフォルトの名無しさん
15/05/09 11:01:57.68 4IoY+00I.net
dllを呼ぶって・・・
イミフ

309:デフォルトの名無しさん
15/05/09 11:08:04.81 2HKbgDAs.net
いやーTCHARでしろっていわれてるじゃん

310:デフォルトの名無しさん
15/05/09 12:02:57.99 5NEoo1tP.net
>>302
TCHARかUNICODE文字セットを使う
マルチバイト文字セットは環境依存で日本語のWindowsだとcp932
これをutf8に切り替えるオプションなんてもちろんないし
そもそもAPIがcp932のインターフェースしか無いので
現代の主流が云々など考えるだけムダ
モダンなプログラミングがしたければモダンなOS使え

311:デフォルトの名無しさん
15/05/09 12:48:51.86 PwWAAfZb.net
おいらはwchar_tやwstringを使う
ようにしている。charは滅多に使わない。
なのでcharと言えばwchar_tを意味するようにしたいくらいだ。
typedef char wchar_t
とか
#define wchar_t char
ってやったらどうなるんだろう。

312:デフォルトの名無しさん
15/05/09 13:19:26.21 cx7dem6B.net
コンパイラ持ってるならやってみればいいのに

313:デフォルトの名無しさん
15/05/09 13:43:09.74 QFYNEVBc.net
Java厨だね

314:デフォルトの名無しさん
15/05/09 14:56:09.74 dHKI9IMf.net
以前、utf8でモダンなプログラミングをしようとしたけど、windowsではやめたほうがいいよ
visual studioでデバッグするときも、utf8なstringは読めないからね
結局全部cp932になった

315:デフォルトの名無しさん
15/05/09 15:13:06.28 x1xiQQNi.net
,s8ってつければ読めるよ

316:デフォルトの名無しさん
15/05/09 15:37:00.89 qZm7gFud.net
windowsのunicodeってutf8なんだったっけ?

317:デフォルトの名無しさん
15/05/09 15:44:31.24 CtUg1jEA.net
めんどくせえ、ずっとcp932じゃ

318:デフォルトの名無しさん
15/05/09 15:48:36.60 x1xiQQNi.net
>>311
UTF16

319:デフォルトの名無しさん
15/05/09 16:02:46.51 2HKbgDAs.net
utf8は可変長だからワイド文字ではない

320:デフォルトの名無しさん
15/05/09 17:12:39.66 dHKI9IMf.net
>>310
あ、設定いじればできるのか。何の問題もなかったわ
API呼び出すときだけutf16に変換すればいいんだね

321:デフォルトの名無しさん
15/05/09 17:19:35.65 dHKI9IMf.net
utf16はワイド文字なのに可変長というクソエンコーディングだけどね

322:デフォルトの名無しさん
15/05/09 17:27:42.10 qeICslx9.net
どうせ基本多言語面しか使わんだろ

323:デフォルトの名無しさん
15/05/09 19:03:16.99 gxvtiy3r.net
>>313
LE?

324:デフォルトの名無しさん
15/05/11 23:30:14.93 o2fecJta.net
う~ん、別にLinuxでもbsdでもWindowsでもstd::wstring使うならUCSで読み込んで処理することになるから一緒。

325:デフォルトの名無しさん
15/05/12 12:20:59.31 ylqMkeqf.net
すみませんDirectShowの質問はここでいいんでしょうか?
【C++】 DirectX初心者質問スレ Part39 【C】
はスレ違いらしいので

326:デフォルトの名無しさん
15/05/12 12:55:25.71 mcS0y+j7.net
10年前ならスレ違いじゃなかったんだけどね

327:デフォルトの名無しさん
15/05/12 13:17:16.94 ZZfAUy1V.net
> 2004年10月、DirectShowはDirectXから外されDirectX Extraに含まれるようになり、
> さらには2005年4月、DirectShowはDirectXから完全に取り除かれ、
> 当時Windows Server 2003 SP1版だったPlatform SDKに�


328:レ管された[2]。 > ただし、現在でもDirectShowのサンプルプログラムのビルドには依然としてDirectX SDKが必要である[11]。 スレチとか言い出したらめんどくせえ立ち位置だな。



329:デフォルトの名無しさん
15/05/12 13:38:00.46 ylqMkeqf.net
移管されていたんですね、でもビルドにDXSDKが必要とは…
質問させて


330:いただきます。 WindowsXPでDirectShowを使い .wmaや.mp3 を高速に.wavに変換する機能を作りたいと思っています。 手始めにNULLレンダラを使い、 .wavファイルをIMediaControl::Run で再生して ISampleGrabberCBのSampleCB、BufferCB メソッドで高速にサンプルを取得する事ができました。 .wavファイルの読み込みができたので、次は.wmaや.mp3を読み込もうとしたところ なぜかわからないのですがSampleCB、BufferCBが呼ばれません。 試しにNULLレンダラを追加せず、IMediaControl::RenderFile で追加されるレンダラを使い IMediaControl::Runで再生したところ、等速で音が再生されながら ISampleGrabberCBのSampleCB、BufferCB メソッドでサンプルを取得する事ができました。 なんとか音を再生せずに高速で.wmaや,mp3のサンプルを取得したいのですがどうしたらいいのでしょうか?



331:デフォルトの名無しさん
15/05/12 15:06:35.12 Z/MhgXt8.net
将来ディスプレイの解像度がすっごく上がって、
6万5千以上が有り得る状況になったら、
Win32APIはどうなってしまうのでしょうか。
有り得ないって?まぁそうかもしれませんが。

332:デフォルトの名無しさん
15/05/12 15:09:08.77 mcS0y+j7.net
関数名の後ろにExがつくだけだろ
ExExExかもしれんがw

333:デフォルトの名無しさん
15/05/12 15:18:10.11 Z/MhgXt8.net
いやいや、LPARAMのサイズが32bitで、これを幅と高さで二分割して16bit幅・・・

334:デフォルトの名無しさん
15/05/12 15:20:40.89 yK9QlxPH.net
LPARAMは32bit固定じゃない
LONG_PTRだったはず

335:デフォルトの名無しさん
15/05/12 16:20:35.40 Z/MhgXt8.net
そうなんだけど、64bit環境でWPARAMが64bitなのは当たり前なんだけど、
HIWRODやGET_X_LPARAMといったマクロは、32bitでも64bitでも同じもの。
64bit環境でも、WM_SIZEなんかで渡されるLPARAMは、
64bit幅を有効活用せず、上位32bitは使われない。
つまり64bit環境でもWM_SIZEのLPARAMで扱えるウィンドウサイズの上限は、0xFFFFまで。
内部仕様として無理って言うんじゃなくて、インターフェイス的に無理って言うのがなんとも残念。
将来的には、wp,lp使わずに、GetCursorPosやGetClientRectを使ってくれってなるんかね。

336:デフォルトの名無しさん
15/05/12 16:44:48.43 yK9QlxPH.net
別メッセージになるんじゃね

337:デフォルトの名無しさん
15/05/12 16:47:10.58 Z/MhgXt8.net
更に言えば、WM_LBUTTONDOWNなんかで渡されるLPARAMは、
符号ありなんで、0xFFFFの更に半分の0x7FFFまでしか扱えないんだよね。
4kディスプレイを横に9枚並べるとアウト。
今はまだぜんぜん余裕だけど、将来どうなるかは分からんよね。
たぶん特定のウィンドウスタイルを追加しないと、ウィンドウサイズが制限されるような事態になるのかね。
そんで専用のAPIで取得してくださいみたいな。
ただ、今のretinaクラス以上にDPIを上げても、人間の視力の限界だし、
retinaのDPIを維持したまま(300dpiとして)、0x7FFFをインチに換算すると、
109インチ(2.8m)なんで、考えるだけ意味無いかも。

338:デフォルトの名無しさん
15/05/12 17:20:28.36 32yYIcwZ.net
初歩的な質問だと思いますが、
・RegisterClassでウィンドウクラスの登録
・CreateWindowでウィンドウの表示
・登録されたウィンドウプロシージャで各種処理
という最も基本的な流れでプログラムが動いていますが、作業中ウィンドウから
例えば「新規」を選ぶともう一枚ウィンドウが開いて全く別の作業ができるように
したい場合、単にCreateWindowすれば良さそうですが、同じウィンドウプロシージャ
だとこれまで使っていたデータと競合してしまいます。
かといって、ウィンドウごとにウィンドウプロシージャを別に用意って普通しないのでは?
と思います。
複数のウィンドウでウィンドウプロシージャは同一、データは別としたい場合、
一般的にはどうしているんでしょうか?

339:デフォルトの名無しさん
15/05/12 17:31:08.89 yK9QlxPH.net
Get/SetWindowLongPtr+GWLP_USERDATA

340:デフォルトの名無しさん
15/05/12 17:33:59.79 yK9QlxPH.net
じゃなかったらSetProp/GetProp/RemovePropとかかもね

341:片山博文MZ ◆T6xkBnTXz7B0
15/05/12 17:34:05.47 fncYevaL.net
>>331
GetWindowLongPtr/SetWindowLongPtrかハンドルマップを使って、
ウィンドウとデータを関連付ける。

342:デフォルトの名無しさん
15/05/12 17:39:18.76 32yYIcwZ.net
>>332-334
なるほど、よく分かりました!
ありがとうございます。

343:デフォルトの名無しさん
15/05/12 18:39:40.95 Z/MhgXt8.net
SetWindowSubclassを使っても良いぞ。

344:デフォルトの名無しさん
15/05/12 20:43:51.58 P8yXA8AP.net
>>323
DirectShowは知らんがMedia FoundationにSource Reader/Sink Writerというまんまの機能があるで
標準のmp3デコーダがWin7からしか備わってねえからちと厳しいけど

345:デフォルトの名無しさん
15/05/12 20:52:00.24 ylqMkeqf.net
Media Foundationでできるんですね。知りませんでした。
情報ありがとうございます。

346:デフォルトの名無しさん
15/05/13 02:03:21.43 VzW8YhOf.net
VC++ でタスクマネージャを表示して、タブを切り替えることは
可能でしょうか?

347:デフォルトの名無しさん
15/05/13 02:14:12.20 VzW8YhOf.net
もう少し具体的に言うと、
Win8でタスクマネージャ出して、
パフォーマンスタブを開いて、
右クリックメニューの
  [グラフを変更]の中の
    [論理プロセッサ]
表示にしたいのですが、VC++のプログラムで出来ますか?

348:デフォルトの名無しさん
15/05/13 09:23:17.27 hDqQQ4M8.net
はい

349:デフォルトの名無しさん
15/05/13 10:32:07.23 VzW8YhOf.net
>>341
ヒント教えてくれよ

350:デフォルトの名無しさん
15/05/13 11:46:47.39 jTT2yS9m.net
キーボード(ALT+TABなど)・マウス操作などで、ウインドがアクティブになった瞬間での、メインウインドがどれかを調べたいです。
GetForegroundWindowで取得するhWndですが、GetForegroundWindowを使わずにグローバルフックで処理したい場合、
どのようにすればよいでしょうか?
試しに、WM_ACTIVEを拾って、表示してみたのですが、同様のメッセージが複数送られて来て判断がつきません。


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