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


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

Win32API質問箱 Build120



1 名前:デフォルトの名無しさん mailto:sageteoff [2015/04/09(木) 18:16:02.24 ID:Rhj0QTuK.net]
Win32APIについての質問はこちらへどうぞ。

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

■過去スレ
Win32API質問箱 Build118
peace.2ch.net/test/read.cgi/tech/1407006123/
Win32API質問箱 Build11 (119らしい)
peace.2ch.net/test/read.cgi/tech/1418181169/

2 名前:デフォルトの名無しさん mailto:sage [2015/04/09(木) 18:16:46.84 ID:Rhj0QTuK.net]
スレの立て方すっかり忘れてたわ

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

4 名前:デフォルトの名無しさん mailto:sage [2015/04/09(木) 22:23:50.28 ID:rJtjnWq0.net]
SetRect(NULL,1,2,3,4);

5 名前:デフォルトの名無しさん mailto:sage [2015/04/10(金) 00:25:10.63 ID:hFniQxda.net]
OSシャットダウンを中断させる方法を教えて下さい。
WindowsXP

6 名前:デフォルトの名無しさん mailto:sage [2015/04/10(金) 00:31:07.08 ID:JpfDZLA2.net]
スタート->終了オプション->キャンセル

7 名前:デフォルトの名無しさん mailto:sage [2015/04/10(金) 01:48:29.89 ID:jthFc112.net]
WM_QUERYENDSESSIONでぐぐる

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

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

10 名前:デフォルトの名無しさん mailto:sage [2015/04/10(金) 17:51:02.10 ID:sPfz1KCP.net]
>>9
死ね



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

12 名前:デフォルトの名無しさん mailto:sage [2015/04/10(金) 23:10:56.92 ID:tcwpax/F.net]
explorerでフォルダを開く(変更する)イベントをキャッチして、
場合によっては正規処理をキャンセルして独自処理を実行させたいです。

ひと通りフック系は調べてみたのですが、該当するものが見つけられず。。。
(shellexecutehooksだとexplorerからフォルダを開く際に拾えなかったです)

何か方法ありましたら教えていただきたく。

13 名前:デフォルトの名無しさん mailto:sage [2015/04/10(金) 23:26:32.09 ID:TAiFPTdh.net]
>>11
ありがとうございます。でも、どうにか自分で出来ました。
コンパイルが通らなかったのはコードの最後の中括弧を見落としてコピーし忘れていたからでした。
>>10
ごめんなさい。これで最後にするので許してください><

答えてくれた人達ありがとうございました。特にコテの人。
もし、また来る事があったらよろしくです。

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

15 名前:デフォルトの名無しさん mailto:sage [2015/04/10(金) 23:33:54.86 ID:WBKzV1HP.net]
>>12
俺も知りたいです。

https://support.microsoft.com/ja-jp/kb/310749
>再解析ポイント: プログラムは、ファイル システム内のオブジェクトに対するオープン操作をトラップし、
>ファイル データを返す前に独自のコードを実行します。データの読み取りし、を別のボリュームまたは
>物理フォルダーからの書き込みをリダイレクトすることができます、マウント ポイントなどのファイル システムの
>機能を拡張するこの機能を使用することができますディスクです。

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

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

18 名前:デフォルトの名無しさん mailto:sage [2015/04/11(土) 00:10:08.75 ID:j7Y/pu4p.net]
>>12
それはAPIからの方向じゃなくて
エクスプローラの機能拡張でどこまでやれるかという話じゃないの

それともイベントを受ける側は別のアプリなのかしら

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

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



21 名前:12 mailto:sage [2015/04/11(土) 00:24:33.46 ID:rd1rB1JO.net]
>>18
元々は別アプリでイベントを監視できるかと考えていたのですが、
方法がなくエクスプローラーの機能拡張の方向でも調査しておりました。

結果的に挙動を実現できればどちらでも問題はなかったのですが、
何分手詰まり感があり参っております。
(所謂ファイラーなどはフォルダに関連付けて自アプリを開いたりしているので、
実現は可能だと思ってはいるのですが。。)

22 名前:デフォルトの名無しさん mailto:sage [2015/04/11(土) 00:28:13.50 ID:LbK5Z9ys.net]
WinSDKのサンプルってこれと違うの?

C:\Program Files\Microsoft SDKs\Windows\v7.1\Samples

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

24 名前:デフォルトの名無しさん mailto:sage [2015/04/11(土) 02:51:15.30 ID:j7Y/pu4p.net]
なんでやねん
通して体系的に理解するなら書籍がいいけど
やりたいことが具体的にわかってるならネットで検索するのが早い

ただし blog の落書きに近い奴は前提が噛み合わなかったりするからそこはきちんと確認

25 名前:デフォルトの名無しさん mailto:sage [2015/04/11(土) 07:13:27.27 ID:6QBeTfwQ.net]
>>21
自分で言ってる通り
フォルダーウィンドウ内でフォルダアイコンをダブルクリックorEnterキー押下した場合は
関連付けが発動するだけだわ

独自関連づけをデフォルトにしておいて
自分で処理しないときはIShellBrowserなりIExplorerBrowserなりICommDlgBrowserなりに開かせる

もしくは泥臭い方法だけどキーとマウスにフックしかけちゃう方向もある

QTTabBarとかがそんな処理してそう

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

27 名前:好きにする []
[ここ壊れてます]

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

29 名前:デフォルトの名無しさん [2015/04/12(日) 02:47:00.25 ID: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 名前:デフォルトの名無しさん mailto:sage [2015/04/12(日) 12:20:53.11 ID:SDNlNHK7.net]
教えて君はNG



31 名前:Office & Gamers ◆G144Hzgh2.0e mailto:アハ♪” uh huh [2015/04/12(日) 12:23:36.12 ID:kx9iDNgY.net]
汚いプログラム(笑)

32 名前:デフォルトの名無しさん mailto:sage [2015/04/12(日) 12:49:27.67 ID:y8PA+brm.net]
www7b.biglobe.ne.jp/~makandat/jurapun/Tutorial/VC/Group4/Static.htm
このページではちゃんと表示されているみたいだけど。
SS_BLACKFRAMEとは一緒に指定できないんじゃね?
それぐらい試したよね?

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

教えてくんでゴメンネ

34 名前:デフォルトの名無しさん mailto:sage [2015/04/12(日) 20:49:44.98 ID:2B83nDoZ.net]
#define SS_BLACKRECT 0x00000004L
#define SS_BLACKFRAME 0x00000007L

35 名前:デフォルトの名無しさん mailto:sage [2015/04/12(日) 22:13:22.82 ID:8ClUnIS/.net]
>>32
後々他の色もできるように

WM_CREATE: hbrush = CreateSolidBrush(color);

WM_CTLCOLORSTATIC:
if((HWND)lParam == hwnd) {
return hbrush;
}

WM_DESTROY: DeleteObject(hbrush);

の方がいい気がする

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

37 名前:教えて君 mailto:sage [2015/04/14(火) 08:02:18.57 ID: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(教えて君) mailto:sage [2015/04/14(火) 08:28:46.97 ID:XDZ3Jlf4.net]
自己解決しました。
MAKEINTRESOURCEをやめ、w.hIcon=LoadIcon(i,"ICO");でちゃんと表示されるようになりました。

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



41 名前:デフォルトの名無しさん mailto:sage [2015/04/14(火) 09:41:47.32 ID:85cAVwi8.net]
>・WNDCLASSEXのhIconSmやLoadImageを試してみたが改善されず。

hIconにLoadIconすればいいんじゃないの

42 名前:デフォルトの名無しさん mailto:sage [2015/04/14(火) 09:45:05.20 ID:85cAVwi8.net]
ああ、それがダメで試行錯誤してるのか?

SetClassLong(hWnd, GCL_HICON, (LONG)LoadIcon(hInst, MAKEINTRESOURCE(IDI_Ico)));

これでもダメなら、リソースに入ってないかリソースIDが何かと重複してると思う。

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

44 名前:教えて君 mailto:sage [2015/04/14(火) 10:21:20.90 ID:XDZ3Jlf4.net]
リソースIDも"ICO"から"ICO0"にしてみましたがだめでした

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

46 名前:教えて君 mailto:sage [2015/04/14(火) 10:27:17.93 ID:XDZ3Jlf4.net]
ちなみに同じリソースファイルから全く別の.bmp画像は読み込めてます。

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

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

49 名前:教えて君 mailto:sage [2015/04/14(火) 10:31:05.87 ID:XDZ3Jlf4.net]
>>43見当付きますでしょうか?

50 名前:デフォルトの名無しさん mailto:sage [2015/04/14(火) 10:33:30.22 ID:jz1OLtV7.net]
>>36
vs2013使ったら?条件付で無料じゃなかったかな?



51 名前:デフォルトの名無しさん mailto:sage [2015/04/14(火) 10:49:59.76 ID:85cAVwi8.net]
>>42
なんかちゃう。定義の方を見て。

#define ICO_xxx 100

とかなってるはずだが、数字部分が他の定義と被ってるかもって書いた。

でもまあ、単にリソースがリンクされてないだけだと思うけど。

52 名前:教えて君 mailto:sage [2015/04/14(火) 11:11:54.58 ID:XDZ3Jlf4.net]
>>48良いですよねvs2013小さいexeが作りたいんですよ。2013はoption98とか設定できなくて
サイズ最適化がわかんないんですよね。MinGWもgcc入れて専用のコマンドプロンプトみたいなのでパス設定とか
わけがわからくて使ってないんですよね。(連続投稿に引っ掛かってしまいました)

>>49 数字も1008にしてみましたがだめでした。

ちなみにLoadImageのLR_DEFAULTSIZE| LR_SHAREDもだめでした。

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

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

55 名前:アイコンキャッシュ 化ける win32api(教えて君)解決! mailto:sage [2015/04/14(火) 11:27:05.03 ID:XDZ3Jlf4.net]
>>51 解決しました!お騒がせしました!的確なアドバイスありがとございます。

モノクロbmpでアイコンを作っていましたが、24bit bmpでアイコンを作り直すと
各箇所に正しく表示されました。

56 名前:デフォルトの名無しさん mailto:sage [2015/04/14(火) 20:57:08.74 ID:y/I7sbAh.net]
余談だけど、ResEditは入れるとき気をつけた方が良いようですね。

ResEdit危険インストーラから同意ボタンで広告表示アドウェア感染被害?
blogs.yahoo.co.jp/fireflyframer/33222019.html

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

58 名前:デフォルトの名無しさん mailto:sage [2015/04/14(火) 21:58:42.50 ID:8TR3GPc6.net]
Windowsエラー「問題が発生したため、(アプリ名)を終了します。」が発生したことを、他のアプリよりリアルタイムに検出する手段はありますか?

また、そのエラーメッセージを、他のアプリより閉じる手段は、どのようなものがありますか?winndowを列挙してSendKeyするしかないのでしょうか?

59 名前:デフォルトの名無しさん mailto:sage [2015/04/14(火) 22:04:06.57 ID:4FPwD7PA.net]
>>54
ttp://peace.2ch.net/test/read.cgi/tech/1418181169/261
> ResEditインストール注意点
> ・最初にいくつか広告が入りDeclineが小さく表示されている
> ・インストール先を指定できずルートにインストールされる
> 1ページ目 ttp://i.imgur.com/9qn75TR.jpg
> 2ページ目 ttp://i.imgur.com/HBajxao.jpg
> 3ページ目 ttp://i.imgur.com/Bowds3d.jpg
> 4ページ目 ttp://i.imgur.com/irH6Wx1.jpg
> 5ページ目 ttp://i.imgur.com/DIVwXN3.jpg
> Declineを押していれば広告のインストールはされないので
> 検索で出てくるAdwareという指摘は勘違いや思い込みに過ぎない

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



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

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

63 名前:デフォルトの名無しさん mailto:sage [2015/04/15(水) 20:08:55.02 ID:OBp2TzOF.net]
GetAsyncKeyState(); かな

64 名前:デフォルトの名無しさん mailto:sage [2015/04/15(水) 20:33:46.75 ID:YYpYNbny.net]
WM_LBUTTONUP?

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

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

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

68 名前:デフォルトの名無しさん mailto:sage [2015/04/15(水) 21:19:37.85 ID:e7criVwj.net]
>>65
>>62

69 名前:デフォルトの名無しさん mailto:sage [2015/04/15(水) 22:08:38.93 ID: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 名前:デフォルトの名無しさん mailto:sage [2015/04/15(水) 22:11:36.84 ID:jr652CyU.net]
>>66
WM_LBUTTONUP ってだけ言われても意味がわかんないです。

if (GetAsyncKeyState (WM_LBUTTONUP)){
printf("左クリックを離さないでください\n");

動かないじゃないですか><



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

何をすればいいですか?

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

73 名前:デフォルトの名無しさん mailto:sage [2015/04/15(水) 22:57:29.11 ID:MncDCMB0.net]


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

75 名前:デフォルトの名無しさん mailto:sage [2015/04/15(水) 23:23:12.58 ID:e7criVwj.net]
>>68
メイン関数はmainかWinMainかどっち?

76 名前:デフォルトの名無しさん mailto:sage [2015/04/15(水) 23:40:48.45 ID:YYpYNbny.net]
>>69
こんな感じ。
codepad.org/Zk27gysv

77 名前:デフォルトの名無しさん mailto:sage [2015/04/16(木) 00:01:32.25 ID:niirhvYM.net]
>>94
Upがどこにも表示されません><
ってくるぞw

78 名前:Office & Gamers ◆G144Hzgh2.0e mailto:アハ♪” uh huh [2015/04/16(木) 01:15:58.27 ID:sQiZAhF+.net]
>>70
んじゃついでにマルチスレッドの書き方についても論じてくれw

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

80 名前:デフォルトの名無しさん mailto:sage [2015/04/16(木) 02:06:00.46 ID:1cAUYc2L.net]
Win32API以外の話は他でしろ



81 名前:67 mailto:sage [2015/04/16(木) 04:55:33.87 ID: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 mailto:アハ♪” uh huh [2015/04/16(木) 06:30:00.49 ID:sQiZAhF+.net]
>>79
while( hMyWnd == GetForegroundWindow())でいいんじゃないの?w

while(1)がムダw

83 名前:デフォルトの名無しさん mailto:sage [2015/04/16(木) 06:43:05.17 ID:niirhvYM.net]
>>80
そんなネタ投下して楽しい?

84 名前:Office & Gamers ◆G144Hzgh2.0e mailto:アハ♪” uh huh [2015/04/16(木) 06:53:11.05 ID: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 mailto:アハ♪” uh huh [2015/04/16(木) 06:59:10.65 ID:sQiZAhF+.net]
while() {} sleep();でもいいかw

プログラムが汚いとダメw

プログラムが汚いとダメw

プログラムが汚いとダメw

プログラムが汚いとダメw

プログラムが汚いとダメw

86 名前:デフォルトの名無しさん mailto:sage [2015/04/16(木) 07:00:02.73 ID:niirhvYM.net]
なんだネタか

87 名前:Office & Gamers ◆G144Hzgh2.0e mailto:アハ♪” uh huh [2015/04/16(木) 07:01:19.02 ID:sQiZAhF+.net]
while(1)がムダw

88 名前:デフォルトの名無しさん mailto:sage [2015/04/16(木) 07:35:59.21 ID:GQj/zmtf.net]
五度刺しても誰も介錯してくれないとか哀れすぎる

89 名前:67 mailto:sage [2015/04/16(木) 07:41:32.80 ID:xHp1mspF.net]
>>85
初心者が読みやすいように、あえてwhile(

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



91 名前:Office & Gamers ◆G144Hzgh2.0e mailto:アハ♪” uh huh [2015/04/16(木) 08:23:26.48 ID:sQiZAhF+.net]
>>87
それなら

loop:
goto loop;

の方が見やすいだろw

92 名前:デフォルトの名無しさん mailto:sage [2015/04/16(木) 08:24:58.79 ID:kE101whD.net]
>>88
(笑)

93 名前:Office & Gamers ◆G144Hzgh2.0e mailto:アハ♪” uh huh [2015/04/16(木) 08:43:08.53 ID:sQiZAhF+.net]
while(1)なんてのはプログラミング作法として逝ってる証拠w

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

95 名前:デフォルトの名無しさん [2015/04/16(木) 16:47:32.48 ID:tXtzH4xO.net]
while(1) を憎んでいるようだが何かあったのか
while(1) と書いているプログラマにいじめられたのか

Cのプログラマってなんか文系タイプが多いよな
なんかのアンチにすぐになるという
だれそれのやっている何かが憎いから新しく何かをやるという感じの奴

プログラミングをやっても結局頭が良くならないんだろうな
普通プログラミングを継続するとだんだん理系思考になってそういうのが冷めてくるはずだが

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

これが終わったら本格的に勉強して、
初歩的な事聞かなくても大丈夫にするので、
今回だけお願いします。助けてください><

97 名前:Office & Gamers ◆G144Hzgh2.0e mailto:アハ♪” uh huh [2015/04/16(木) 17:04:28.31 ID:djFvfTCc.net]
つ イベント処理w

98 名前:Office & Gamers ◆G144Hzgh2.0e mailto:アハ♪” uh huh [2015/04/16(木) 17:05:48.79 ID:djFvfTCc.net]
C/++使う前にJavaScriptとかBASICとかやり直した方がよくね?w

99 名前:Office & Gamers ◆G144Hzgh2.0e mailto:アハ♪” uh huh [2015/04/16(木) 17:11:09.35 ID:djFvfTCc.net]
なんかこう、8bit系のオヤジがムリしちゃってよォ〜w、みたいな感じするよなw

100 名前:デフォルトの名無しさん mailto:sage [2015/04/16(木) 17:11:52.61 ID:ktYqo1R5.net]
前スレでチートツール作ってたクズか



101 名前:Office & Gamers ◆G144Hzgh2.0e mailto:アハ♪” uh huh [2015/04/16(木) 17:12:29.59 ID:djFvfTCc.net]
>>92
フツーにgoto文付ければいいんだよ♪(アハ♪”

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

103 名前:デフォルトの名無しさん mailto:sage [2015/04/16(木) 17:41:28.20 ID:YCHaL8K8.net]
>>99
まず「落ちてる」って何?
どういう状況を指しているの?

>応答無しのソフトのウィンドウハンドルからGetWindowRectとかしても普通にOKが返るので
そりゃ応答無しってのはメッセージキューの処理がなんらかの理由で止まってしまっているから起こる。
だからメッセージキューとは無関係に処理されるものは当然応答がある。

104 名前:デフォルトの名無しさん mailto:sage [2015/04/16(木) 17:55:22.50 ID:GQj/zmtf.net]
適当なメッセージをpostしてメッセージキューを除けばいい

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

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

107 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2015/04/16(木) 18:16:42.45 ID:euCOAHsL.net]
>>99
IsWindow

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

109 名前:デフォルトの名無しさん mailto:sage [2015/04/16(木) 21:22:35.75 ID:niirhvYM.net]
>>93
いま自分が書いてるソースをここにでも上げてみて
ttps://ideone.com/

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



111 名前:Office & Gamers ◆G144Hzgh2.0e mailto:アハ♪” uh huh [2015/04/16(木) 23:26:14.26 ID:djFvfTCc.net]
難しいコトは後回しwできりゃ何だっていいんだよw

簡単なものを難しく見せようとするのが間違いw

112 名前:デフォルトの名無しさん mailto:sage [2015/04/16(木) 23:53:11.47 ID:r89rtGYR.net]
違います><チートじゃないです。なんで変なこというんですか

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

114 名前:Office & Gamers ◆G144Hzgh2.0e mailto:アハ♪” uh huh [2015/04/17(金) 00:10:29.37 ID:dW7xxEmp.net]
チャララ〜ん♪”

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

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

117 名前:デフォルトの名無しさん mailto:sage [2015/04/17(金) 00:46:43.27 ID: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 名前:デフォルトの名無しさん mailto:sage [2015/04/17(金) 00:49:09.70 ID:w/dpiMO4.net]
>>93
コンパイルエラーは、ソースコードの上の行から順に、
一つずつ解決していくこと

必ず上から直すこと! なぜなら、上のエラーを直すと、
下のエラーは自然に直ることも多いから

よく知らんが、VC++を使っているのなら、
IDEが左側に、電球の形をした、
解決するヒ

119 名前:ントを示してくれるのでは?


君は59の質問者かね?
誰が書いているのかわかりにくいので、
名前欄に、59と最初のレス番号を入れろ

そもそも素人が、Win32APIを直接使うのは無理。
WM_LBUTTONUP などのGUIのメッセージも知らないんだろ?
画面のイベントを知らないなら、画面を作れない
[]
[ここ壊れてます]

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

じゃダメなん?



121 名前:デフォルトの名無しさん mailto:sage [2015/04/17(金) 01:16:12.40 ID:w/dpiMO4.net]
>>69
error C2601: 'OnTimer' : ローカル関数の定義が正しくありません。
error C2065: 'hMyWnd' : 定義されていない識別子です

.h の拡張子はヘッダファイルで、このファイルに型宣言を書く。
.c, .cpp の拡張子は実装ファイルで、このファイルに定義を書く。

実装ファイルで、関数名や変数名などの識別子を使う前に、
まずそれらの型を宣言しないと、コンパイラが型チェックできない

識別子の宣言は、以下のように実装ファイルで行うか、
型名 識別子; int a;

皆が使うような関数などは、
ヘッダファイルに型宣言してあるので、
実装ファイルの冒頭で、以下のどちらかで、
ヘッダファイルをインクルードする

標準ライブラリのヘッダファイルなら、#include <ファイル名.h>
自分で作ったヘッダファイルなら、#include "ファイル名.h"


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

122 名前:67 mailto:sage [2015/04/17(金) 01:28:19.13 ID:GgWweP1w.net]
>>112
プリントスクリーンねぇ。。それだけで済みそうにないと思うんだが。
PS後の画像をファイルに保存とか、PSの画像と、保有する画像が一致したら、
マウスクリックとかそういう処理増えていったりするんじゃね?
知らんけど。

C言語の入門や、WindowsのAP関連の入門サイトを初めから読み飛ばさず基礎から勉強するか、
仕様をちゃんと固めて、2000円払って、MZの人に続きを作ってもらえば、あっさりできちゃうかもよ?

ここの板は、こういうことできるAPI知りませんかー?っていう質問する板だと思うのだけれど?

123 名前:デフォルトの名無しさん mailto:sage [2015/04/17(金) 01:54:23.92 ID:6/UQT6bn.net]
そろそろスルー検定

124 名前:デフォルトの名無しさん mailto:sage [2015/04/17(金) 01:55:56.45 ID:w/dpiMO4.net]
素人に教えることは出来ない。
1つ教えると、バグが3つ出て、
そのバグ1つについて教えると、またバグが3つ出る

何かを教えても、それを知らないから、
またそれについて教えなければならないので無理

まず本などで、基本的なことは習得してからやらないと、
結局、他人に聞いても理解しないまま、進めていくので、
また繰り返し聞いてくる。時間の無駄

答えを聞いても無理なんだよ。
その通りにしても、新たなバグが出るから、
そのバグをまた修正しても、また新たなバグが出る

答えではなく、なぜなのか理由を聞け!
そしてその理由がわからなければ、
わかるレベルまで、さかのぼって勉強せよ。
何が・どこがわからないか、言えるようにせよ。

急がば回れ!
じっと本を読んで、力を貯めよ!
結局、その方が速くて、高品質

125 名前:デフォルトの名無しさん mailto:sage [2015/04/17(金) 02:23:16.87 ID:w/dpiMO4.net]
>>114
if (abBuffer1[0] == aa && abBuffer2[0] == bb) {
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);

3秒間、スリープする
printfで、メッセージを出力する
PrintScreen キーを押す(キーイベント)

}

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

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

128 名前:デフォルトの名無しさん mailto:sage [2015/04/17(金) 04:19:31.06 ID:6/UQT6bn.net]
grep使ってもないんかね?
CommDlg.h

なお、単にインクルードするだけでいいのかは知らない。

129 名前:デフォルトの名無しさん mailto:sage [2015/04/17(金) 05:41:11.87 ID: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 名前:デフォルトの名無しさん mailto:sage [2015/04/17(金) 07:09:06.75 ID:u6kt2Ekt.net]
>>122
同じの使ってるけど
c:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\CommDlg.h
ここにあったよ

フラグだけなら#pragmaは無くていいみたい



131 名前:デフォルトの名無しさん mailto:sage [2015/04/17(金) 10:03:57.26 ID:8xw27FV+.net]
>>118
済みます! 絶対にこれ以上処理は増えないです。
スレには"Win32APIについての質問はこちらへどうぞ"って書いてあります。
使い方について聞いてもいいじゃないいですか・・。

>仕様変更は知識があれば簡単
ってことは
67の人はマウス離した瞬間を検出して、PrintScreenキーを押す、ってわたしには難しいことが、簡単にできるんですよね?
知識が十分なのにこのスレに居るって事は誰かを助けるために来てくれてるんですよね?
演習用のじゃなくて、ちゃんとしたプログラム作るのはこれが初めてなんです。
元はほとんどコテの人のコードだけど、それでも、最初って肝心じゃないですか?
最初に上手くいかないとやる気なくなります。
逆に最初のプログラムが出来ればめっちゃやる気出てたぶん勉強も捗ります。

ソース上げてみてって言ってくれて、コードまで読んできてくれたんですよね?
それなのに・・見捨てないでください><

>>121
mouse_eventの後に処理をさせるだけなら聞かなくても出来ますしapiスレに来ません。
わたしが出来ないのは"Win32API"のGetAsyncKeyStateを使って、
マウスの左クリックを離した瞬間を検出して、その処理を実行させることです。
無意味に見えるかもしれませんがとても重要なことです。

調べててもわかんなくて、風邪引いて、ガッコやすんだんですよ。
可哀想だと思いませんか? 思いますよね?
助け合いの精神が大切だと思います。

132 名前:デフォルトの名無しさん mailto:sage [2015/04/17(金) 10:22:05.00 ID:jWFJYotG.net]
ってか、教えてもらったことGoogleで検索してみたことある?

MSDNのmouse_eventのページ見てればPrintScreenの押し方とかふつー聞かなくね?

133 名前:デフォルトの名無しさん mailto:sage [2015/04/17(金) 10:55:29.98 ID:PQTjmfWn.net]
学校休んで2chとかばっかじゃねーのwwww

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

135 名前:デフォルトの名無しさん mailto:sage [2015/04/17(金) 11:48:50.51 ID:PQTjmfWn.net]
名探偵コナン 701-725 + ルパン三世VS名探偵コナン THE MOVIE

136 名前:デフォルトの名無しさん mailto:sage [2015/04/17(金) 12:17:45.40 ID:AqenIXcN.net]
>>127
> >>118
> 済みます! 絶対にこれ以上処理は増えないです。
> スレには"Win32APIについての質問はこちらへどうぞ"って書いてあります。
> 使い方について聞いてもいいじゃないいですか・・。

使い方は聞いてください。
しかし、

> わたしが出来ないのは"Win32API"のGetAsyncKeyStateを使って、

ここまではいいです。

> マウスの左クリックを離した瞬間を検出して、その処理を実行させることです。

ロジックの話であり、Win32APIの話ではありません。
他のスレでお願いします。

ここは貴方のスレではないのです。

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

138 名前:デフォルトの名無しさん mailto:sage [2015/04/17(金) 12:41:38.03 ID:8xw27FV+.net]
>>128
検索してますけど?
別にPrintScreenの押し方を聞きたいんじゃないんです。
それは>>110が検出時の処理を教えてって言うから書いただけです。

わたしが知りたいのは
GetAsyncKeyStateでどうやって、マウスの左クリックを離した瞬間を検出するのかってことです。

そしてそれをどうやって、↓の元ソースに組み込めばいいのか。
ttp://codepad.org/0E6iybtA

ってことです。

139 名前:デフォルトの名無しさん mailto:sage [2015/04/17(金) 12:55:58.67 ID:6/UQT6bn.net]
スルー検定実施中

140 名前:67 mailto:sage [2015/04/17(金) 13:25:01.19 ID:GgWweP1w.net]
>>134
ここの板は、「魚を与えるのではなく、魚の釣り方を教える」住人がいる場所だと思ったほうがいい。
魚の釣り方といっても、あくまでもアドバイス、それ以上でもそれ以下でもない。
住人はアドバイスしたくないと思えば教えないし、教える義務もない。

既に、あなたの知りたいコードのサンプルは板に上げられているんだから、それをコンパイルして動かす。
コピペ結合とかだめ。
上げられている数行のサンプルは、どのように動くのか考えなさい。
また、使われているAPIを一つ一つしらべ、意味を全部調べ理解しなさい。
MSDNや、Googleで検索すれば、解説はすぐに見つかる。
すべて理解できれば、結合もできる。

それでも、理解できないなら、あなたは教わる基礎知識が不足しているので、
プログラムの基礎からはじめなさい。
ここでは、WIN32APIのスレッドであって、基礎を教える板ではないことは理解しなさい。

学生なら、ブラウザーのメモリー変化を監視するプログラムを作るよりも、本業の学業を優先しなさい。



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

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

143 名前:122 mailto:sage [2015/04/17(金) 19:53:54.07 ID:NAku5IxH.net]
#include <CommDlg.h>
#include <Richedit.h>
でいろいろきちんと動作するようになりました。
どもどもでした。

144 名前:デフォルトの名無しさん [2015/04/17(金) 23:27:18.16 ID: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 名前:デフォルトの名無しさん mailto:sage [2015/04/18(土) 00:11:33.12 ID:d+XtVUDX.net]
>>134
所々スルーしてるレスがあるから本気で完成させたいのかが謎

146 名前:デフォルトの名無しさん mailto:sage [2015/04/18(土) 00:28:13.73 ID:j/wjXDDU.net]
>>134
「getasynckeystate sample code」で検索すれば?

漏れは今、JavaScriptのゲームエンジン、
enchant.js の本を読んでいるけど、例えば、
Bボタンが放された時に、発生するイベントは、
Event.B_BUTTON_UP

Win32APIにも、これによく似たイベントがあるはず

君は59の質問者かね?
誰が書いているのかわかりにくいので、
名前欄に、59と最初のレス番号を入れろ

君は、学校のPCに何かを仕掛けて、
何か悪いことをしようとしているのかね?

147 名前:Office & Gamers ◆G144Hzgh2.0e mailto:アハ♪” uh huh [2015/04/18(土) 00:48:00.49 ID:yZFnrc/6.net]
>漏れは今、JavaScriptのゲームエンジン、
>enchant.js の本を読んでいるけど、例えば、

ワロタw

148 名前:142 mailto:sage [2015/04/18(土) 01:09:29.14 ID:j/wjXDDU.net]
漏れ的には今時、Win32API・C/C++でプログラミングって、
気ちがいとしか思えんw

ましてや素人が何で、そんな難しいことをする必要がある?
今日日ブラウザで、ゲームプログラミングで十分やろ?

149 名前:Office & Gamers ◆G144Hzgh2.0e mailto:アハ♪” uh huh [2015/04/18(土) 01:10:48.20 ID:yZFnrc/6.net]
今時ならVC++&インラインアセンブルがトレンドだなwwww”

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



151 名前:デフォルトの名無しさん mailto:sage [2015/04/18(土) 01:24:41.48 ID:d+XtVUDX.net]
>>144
とりあえずそいつは他スレに誤爆したり余計な事を言うだけの奴だ

興味持った人が
自分の作業を効率化させる目的で
ってのもあるでな
かゆい所に手が届く

152 名前:Office & Gamers ◆G144Hzgh2.0e mailto:アハ♪” uh huh [2015/04/18(土) 01:27:11.05 ID:yZFnrc/6.net]
宗教活動はよそでどうぞw

153 名前:デフォルトの名無しさん [2015/04/18(土) 09:52:22.94 ID:QuJhi9bL.net]
だって javascript つまらないんだも〜ん

154 名前:Office & Gamers ◆G144Hzgh2.0e mailto:アハ♪” uh huh [2015/04/18(土) 11:44:37.40 ID:yZFnrc/6.net]
ここフツーにVC++かVC#だろw

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

156 名前:デフォルトの名無しさん mailto:sage [2015/04/18(土) 15:13:27.56 ID:j/wjXDDU.net]
>>137
の意味はこういう事かも

ループ処理 {

// 今回のキー状態を、取得する
curr_KS = GetAsyncKeyState(調べたいキー);

// もし前回のキー状態が押されていて、
// 今回、放されたのなら
if(prev_KS & 0x8000 && !(curr_KS & 0x8000)){ 処理 }

// 前回のキー状態を、更新する
prev_KS = curr_KS;

}

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

158 名前:デフォルトの名無しさん [2015/04/22(水) 20:39:17.69 ID:NZ8QzlQ5.net]
☆ 日本の核ブ装は絶対に必須ですわ。☆
www.soumu.go.jp/senkyo/kokumin_touhyou/index.html

☆ 日本国民の皆様方、2016年7月の『第24回 参議院選挙』で、改憲の参議院議員が
3分の2以上を超えると日本国憲法の改正です。皆様方、必ず投票に自ら足を運んでください。
私たちの日本国憲法を絶対に改正しましょう。☆

159 名前:デフォルトの名無しさん mailto:sage [2015/04/22(水) 20:43:27.62 ID:AcUbjFWF.net]
>>144
なんでそんなに難しく感じるのかが理解できん

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



161 名前:デフォルトの名無しさん mailto:sage [2015/04/22(水) 23:59:32.01 ID:Op4eKru/.net]
難しくはないな。面倒くさいだけで。

162 名前:デフォルトの名無しさん mailto:sage [2015/04/23(木) 15:10:02.80 ID:atwBzKak.net]
名言だな

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

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

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

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

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

168 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2015/04/23(木) 21:55:54.12 ID:rgdBbObh.net]
子ウィンドウかポップアップウインドウかで座標系が異なる。ウィンドウのスタイルは何か?

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

170 名前:デフォルトの名無しさん mailto:sage [2015/04/23(木) 22:20:13.53 ID: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 mailto:sage [2015/04/23(木) 22:26:51.98 ID:rgdBbObh.net]
WS_OVERLAPPEDWINDOWならクライアント座標系だな。
あまり知られていないことだが、WM_CREATEの前にWM_SIZEが来ることがある。

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

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

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

なんだかいろいろもうしわけない。

175 名前:168 mailto:sage [2015/04/24(金) 01:22:51.93 ID: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 名前:デフォルトの名無しさん mailto:sage [2015/04/24(金) 03:05:43.50 ID:cnXdh8tn.net]
ダイアログにメニューを追加した場合、メニューの高さ分ボタン類が下に移動しますが、
ウィンドウサイズは拡大されないために最下部に配置していたボタン類が
ウィンドウに収まりませんよね。

そのためウィンドウサイズの拡大が必要になりますが、メニューの高さ(フォントサイズ)
はwindowsの設定で変化しますから、この辺を考慮してウィンドウサイズを
変更する必要があると思います。

これは一々自前で実装する必要があるのでしょうか?
もっと簡単に対応する方法があるのでしょうか?

177 名前:Office & Gamers ◆G144Hzgh2.0e mailto:アハ♪” uh huh [2015/04/24(金) 03:07:09.38 ID:gsh3Hj5N.net]
実装w

178 名前:168 mailto:sage [2015/04/24(金) 03:48:08.49 ID:vwT5rXE6.net]
GetSystemMetricsとかで計算しよう。

179 名前:デフォルトの名無しさん mailto:sage [2015/04/24(金) 03:54:40.79 ID:cnXdh8tn.net]
ちょっと、質問し直します。

メニューを追加すると既存のボタン類は自動的にメニューの高さ分下に移動しますが、ウインドウサイズは変わりません。
ウインドウサイズも自動的に大きくはならないのですか?

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



181 名前:168 mailto:sage [2015/04/24(金) 04:41:10.43 ID:vwT5rXE6.net]
>>175
参考になるか?
ttp://sumishiro.blogspot.jp/2010/03/blog-post_13.html

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

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

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

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

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

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

188 名前:デフォルトの名無しさん mailto:sage [2015/04/25(土) 09:06:53.19 ID:QgsvYozO.net]
ドッキングウィンド関連探せばいいのだろうか。。?

189 名前:デフォルトの名無しさん mailto:sage [2015/04/27(月) 21:27:22.01 ID:QwoO9IPF.net]
基本的なこと申し訳ありませんが、教えてください。

メッセージループは1つのアプリケーションに一つ?
それともそのアプリケーション内のウィンドウごとにおのおの存在するの?

190 名前:デフォルトの名無しさん mailto:sage [2015/04/27(月) 21:35:52.54 ID:6f9FfEFl.net]
一つ



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

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

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

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

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

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

197 名前:189 mailto:sage [2015/04/29(水) 02:05:01.53 ID:S40E4Ihk.net]
グローバルフックで試してみますぅぅ。。

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

199 名前:デフォルトの名無しさん [2015/04/29(水) 12:53:06.13 ID:pThgOoLO.net]
リソース

200 名前:デフォルトの名無しさん mailto:sage [2015/04/29(水) 13:15:05.63 ID:UdtGh3gm.net]
user32.dll



201 名前:デフォルトの名無しさん mailto:sage [2015/04/29(水) 14:16:13.91 ID:No5D67KY.net]
ありがとう

202 名前:デフォルトの名無しさん mailto:sage [2015/04/29(水) 16:24:35.52 ID:1y0sk+YZ.net]
すみませんがCOM作成にあたり分からない点があり、もう一度質問させてください。

DelegateExecute等から呼び出させるCOMを作成する際、既存COMの動作を
適宜実行させたい場合、どうするべきなのでしょうか。
既存COMのDLLを参照して、コクラスの継承とかが出来るのかと思いましたが、
よくわからないでおります。

HKCU\Software\Classes\Folder\shell\open\commandの場合、
ExecuteFolder(ExplorerFrame.dll)が既存アクションのようなのですが、
こいつをどう呼び出す/継承させるかがわからずにいる状態です。
(そもそもスタンスがあってるのかさえ。。)

203 名前:デフォルトの名無しさん mailto:sage [2015/04/29(水) 18:05:09.67 ID:lb5eDrrL.net]
CoCreateInstance( ExecuteFolderのCLSID ... できたら
IExecuteCommand IInitializeCommand IObjectWithSelection IObjectWithSite
ここらへんのインターフェイスのメソッドで正しい情報を与えてやってExecuteFolderをエミュレートすればできそうな気がするけど

面倒くさそうだから自分なら既得のsiteからIShellBrowserをQueryInterfaceして
IShellBrowser::BrowseObjectで普通にフォルダ開かせちゃうのがいいと思うがどうか

204 名前:デフォルトの名無しさん mailto:sage [2015/04/29(水) 18:38:32.74 ID:Bg6ZLegt.net]
今時COMなんて・・・
10年ぶりに聞いたなw

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

メッセージループはいくつある。

206 名前:デフォルトの名無しさん mailto:sage [2015/04/29(水) 20:23:23.77 ID:MPDoLmFP.net]
今時って言われても Excel とか細かく制御するなら COM しかないし

207 名前:デフォルトの名無しさん mailto:sage [2015/04/29(水) 20:58:21.71 ID:Bg6ZLegt.net]
つドトネ

208 名前:デフォルトの名無しさん [2015/04/29(水) 21:22:01.08 ID:pThgOoLO.net]
DirectX

209 名前:デフォルトの名無しさん mailto:sage [2015/04/29(水) 23:20:13.57 ID:zwED2fT3.net]
.netもCOM呼んでるだけだから

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



211 名前:デフォルトの名無しさん mailto:sage [2015/04/30(木) 07:57:48.27 ID:75MO5jun.net]
シェルインターフェイスは掘ると楽しいぞ

212 名前:デフォルトの名無しさん mailto:sage [2015/04/30(木) 11:21: ]
[ここ壊れてます]

213 名前:09.79 ID:ztKwqMYg.net mailto: ウインドメッセージの一覧って、winuser.hに書かれていない内容はどこで調べればよいですか?
0x91,0x92,0x93のメッセージは何をやっているかわかりません。
Vs2015ってSpyツールありましたっけ?
[]
[ここ壊れてます]

214 名前:207 mailto:sage [2015/04/30(木) 11:23:04.24 ID:ztKwqMYg.net]
VS2013の間違いです。。

215 名前:207 mailto:sage [2015/04/30(木) 11:25:21.36 ID:ztKwqMYg.net]
スパイ見つけました。。\Common7\Toolsにあるとは。。

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

217 名前:デフォルトの名無しさん mailto:sage [2015/04/30(木) 21:45:33.01 ID:acewAU+4.net]
>・.NET やWin32 デスクトップアプリもストア配布可能に。エンタープライズ向けの仮想化技術を応用した
>サンドボックス環境で動き、ネイティブデスクトップアプリの力をそのままにシステムへの影響を減らす。
>アンインストール時にゴミを残さない。ステージでは PhtoShop Elements をデモ。

サンドボックス化は歓迎だけどこんなんストアがマルウェアの万国博覧会になりそうなんだけど

218 名前:デフォルトの名無しさん mailto:sage [2015/04/30(木) 22:36:39.51 ID:z7JbgbHO.net]
別に一元化なんて望んでねえけどな
パッケージマネージャーつけろとは前々から思っていたが

chocolatey?
おもちゃに用はないよ

219 名前:デフォルトの名無しさん mailto:sage [2015/04/30(木) 22:54:56.41 ID:uI857xi4.net]
Nugetは?

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



221 名前:214 mailto:sage [2015/05/01(金) 01:30:39.80 ID:/Mtkjhpa.net]
ごめん。
解決しました

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

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

224 名前:デフォルトの名無しさん mailto:sage [2015/05/02(土) 18:43:22.99 ID:wQLon+fD.net]
できました

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

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

227 名前:デフォルトの名無しさん mailto:sage [2015/05/03(日) 01:20:14.65 ID:DGVNwvpl.net]
つShowWindowsAtAnyTime

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

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

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



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

232 名前:デフォルトの名無しさん mailto:sage [2015/05/03(日) 11:47:58.30 ID: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 ウインド移動ではだめっぽい。

このあたりは読みましたが…解決してないです。
https://social.msdn.microsoft.com/Forums/vstudio/ja-JP/05e13534-8964-4626-b056-06e93a2154d5?forum=vcgeneralja

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

234 名前:デフォルトの名無しさん mailto:sage [2015/05/03(日) 18:17:35.43 ID:LlABLTEl.net]
>>227
なんか不穏な感じ

235 名前:デフォルトの名無しさん mailto:sage [2015/05/04(月) 05:27:30.11 ID:LYeSXt0A.net]
コードに不吉な臭いが所々ありそう

236 名前:デフォルトの名無しさん mailto:sage [2015/05/04(月) 08:56:17.68 ID:80QzrQPL.net]
呪いのプログラム

237 名前:デフォルトの名無しさん mailto:sage [2015/05/04(月) 09:36:46.19 ID:sKsouBLL.net]
悪魔召喚プログラムの方が好きです

238 名前:226 mailto:sage [2015/05/04(月) 18:02:24.32 ID:q56zhT2A.net]
グローバルフック中のSetWindowLong だと問題なく動きますねぇ。
SetWindowSubClassだとうまく動きませんねぇ。なんでだろ?

Win7以降向けで、CreateRemoteThreadEx+LoadLibrary で、サブクラス化のテストはしました。
XPだとCreateRemoteThreadじゃないとだめですね。
とりあえず、CreateRemoteThreadExだと、カスペル先生とかが誤動作しそうなので、
グローバルフック中にSetWindowLongのを使おうかと考えています。

ウインド移動前提で、サブクラス化した場合、
SetWindowLong(サブクラス化)の解除のタイミングは、WM_DESTROY 以外だと、
どのメッセージがよいでしょうか?

WM_EXITSIZEMOVE,WM_DESTROY で破棄コードを動かすようにはしています。

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

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



241 名前:226 mailto:sage [2015/05/04(月) 20:26:27.96 ID:q56zhT2A.net]
IsWow64Processの第一引数、HANDLEだったorz

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

243 名前:226 mailto:sage [2015/05/04(月) 21:25:39.18 ID:q56zhT2A.net]
>237
32Bitの環境は、IsWow64Process関数が存在するかどうか調べて判断すれば。。と思ったんですが、甘いかなぁ。。
この辺り参考にしようかとは思ってますがどうなんでしょう。
blog.monoweb.info/blog/2009/09/13/64bit-hook/

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

245 名前:デフォルトの名無しさん mailto:sage [2015/05/04(月) 23:36:23.21 ID:VqP+6wea.net]
>>238
Windows XP SP2以降はこの関数が存在しているらしい。
「関数が存在していなければ32bitOS」という判断は出来るが「関数が存在していれば64bitOS」という判断は出来ない。
また実機(WindowsXP SP2)でも過去に検証済み。

MSDN
https://msdn.microsoft.com/ja-jp/library/windows/desktop/ms684139.aspx

>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 名前:デフォルトの名無しさん mailto:sage [2015/05/04(月) 23:45:54.58 ID:VqP+6wea.net]
というかあれだな。
32bitアプリを作っているなら「最初に起動するのは32bitアプリ」なのは当然か。
フック対象が64bitならフックしないか、64bit版を起動させるっていうブログの方法で問題ないな。

ただ「関数が存在するかどうか」だけじゃ不十分だから気をつけてね。

247 名前:デフォルトの名無しさん mailto:sage [2015/05/05(火) 00:15:04.99 ID: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 名前:デフォルトの名無しさん mailto:sage [2015/05/05(火) 00:55:10.80 ID:JPFk61nl.net]
64bit cpuで
int a = 0xffffffffffffffff;

でなぜ警告がでるの?

249 名前:デフォルトの名無しさん mailto:sage [2015/05/05(火) 01:08:32.87 ID:WXcigvGr.net]
今Windowsで使えるメジャーなC/C++コンパイラは
intを32ビットで扱っているから

整数型のサイズはCPUのビット数に合わせなければならない
とかいう規定があるわけではない

shortのサイズ以上であればintが2048ビットでも
24ビットでもそれはコンパイラの自由なんだよ

250 名前:デフォルトの名無しさん mailto:sage [2015/05/05(火) 01:16:06.47 ID:q10zsNFn.net]
intの上限が 0x7FFFFFFF だから



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

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

253 名前:デフォルトの名無しさん mailto:sage [2015/05/05(火) 09:29:14.26 ID:8cBYwRXK.net]
DWM compositionが有効な限り常時バッファリング描画やで

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

255 名前:デフォルトの名無しさん mailto:sage [2015/05/05(火) 10:51:06.10 ID:V9xQwQO9.net]
>>248
ありがとうございます
確かにAeroの処理を考えるとダブルバッファリングが必須ですね
よく考えたらやりたいこととダブルバッファリングはあまり関係がありませんでした

すでに知っているのはGetDC+BitBltで書き換えるやり方ですが、
描画した画像の下に無効リージョンが発生すると
勝手に塗り直されてちらつきが発生するのでそれを防ぐ方法が知りたいです

デスクトップの内部バッファが後は反映するだけというところまで描画を終える

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

その後OKサインを送ったらようやく実際にデスクトップが描画される

具体的に書くときっとこういう流れになると思うんですが、特に真ん中を実現するためのAPIがあったら教えてください

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

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

258 名前:デフォルトの名無しさん mailto:sage [2015/05/05(火) 11:17:14.87 ID:kyGf+mJm.net]
WM_ERASEBKGNDは?

259 名前:デフォルトの名無しさん mailto:sage [2015/05/05(火) 11:21:04.64 ID:V9xQwQO9.net]
>>251-253
これが実現できるならダブルバッファリングは一回で済むんじゃないかと思います

自分ではウィンドウは作らずにデスクトップに直描きしたいってことです
理由は最前面になっている他のウィンドウを非アクティブにしたくないのが一つと
カーソル下にウィンドウがあるときにマウス入力が遮られて邪魔になるのが一つ
(例えばスタートボタンの上に画像が被さっていても意に介せずホバーやクリックの反応をしてほしい)

協力してくださってありがとうございます

260 名前:226 mailto:sage [2015/05/05(火) 11:24:14.70 ID: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 名前:デフォルトの名無しさん mailto:sage [2015/05/05(火) 12:56:34.32 ID:kyGf+mJm.net]
>>254
デスクトップのハンドルからプロシージャのアドレス得て>>253だけ捕まえるとか

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

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

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

265 名前:デフォルトの名無しさん mailto:sage [2015/05/05(火) 16:58:43.47 ID:PARG4dys.net]
素直に透過ウインド作ったほうがよくね?

266 名前:226 mailto:sage [2015/05/05(火) 18:36:30.71 ID: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 mailto:sage [2015/05/05(火) 18:38:32.93 ID:20DP2R/2.net]
書いててふと思ったんですが、DirectXやら、OpenGLとかで動いてるアプリには、上記の方法は効果なさそうですね

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

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



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

272 名前:デフォルトの名無しさん mailto:sage [2015/05/06(水) 22:51:27.95 ID:ROM3ZfOK.net]
>>266
SetDlgItemText

273 名前:デフォルトの名無しさん mailto:sage [2015/05/06(水) 22:55:01.18 ID: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 名前:デフォルトの名無しさん mailto:sage [2015/05/06(水) 23:54:06.74 ID:OlUhBFHF.net]
>>267>>268
情報ありがとうございました。
試してみたいと思います。

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

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

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

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

279 名前:デフォルトの名無しさん mailto:sage [2015/05/07(木) 23:10:50.13 ID:XdEP7Lb2.net]
例えば ツリービューコントロールの TVM_SETBKCOLOR みたいなメッセージが
用意されていればいいのだが、あいにくボタンにはそういうメッセージがない。

なので、他のアプリのボタンの背景色を変えようと思えば、そのボタンのスタイルを変え、
なおかつプロシージャを乗っ取って WM_DRAWITEM なりを処理する必要があると思う。

ゆえに答えは否。

自分の作ったアプリのボタンの背景色を変えるにはどうすればいいか。
まずはそのあたりを考えてみるといいよ。

280 名前:デフォルトの名無しさん mailto:sage [2015/05/07(木) 23:17:47.32 ID:uDHc9Yu6.net]
>>274
レスありがとうございました。

>他のアプリのボタンの背景色を変えようと思えば、そのボタンのスタイルを変え、
>なおかつプロシージャを乗っ取って WM_DRAWITEM なりを処理する必要があると思う。
なかなかややこしそうですね。

>ゆえに答えは否。
そうですか。困った。

>自分の作ったアプリのボタンの背景色を変えるにはどうすればいいか。
>まずはそのあたりを考えてみるといいよ。
その場合は、
SetBkColor
でやるんですよね?



281 名前:デフォルトの名無しさん mailto:sage [2015/05/07(木) 23:52:51.04 ID:hWWp4HfH.net]
>>自分の作ったアプリのボタンの背景色を変えるにはどうすればいいか。
>>まずはそのあたりを考えてみるといいよ。
>その場合は、
>SetBkColor
>でやるんですよね?

全く理解してなくてワロタ

282 名前:デフォルトの名無しさん mailto:sage [2015/05/07(木) 23:54:43.21 ID:uhpkEIt4.net]
オーナードローで検索

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

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

285 名前:デフォルトの名無しさん mailto:sage [2015/05/08(金) 00:30:30.98 ID:wauI//yZ.net]
お前も全く理解してなくてワロタ

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

287 名前:デフォルトの名無しさん mailto:sage [2015/05/08(金) 01:04:28.80 ID:2/9eM7ZL.net]
会社にも頭でっかちの奴いるわ
自分は全く書けないのに、正論だけ押し付けてくる奴

「きちんと設計すれば動かないはずが無い」が口癖w
そりゃそうだろうけどw

288 名前:デフォルトの名無しさん mailto:sage [2015/05/08(金) 02:25:25.99 ID:semA39SH.net]
そうなんだよ

289 名前:デフォルトの名無しさん mailto:sage [2015/05/08(金) 05:53:15.38 ID:rtQrrRIy.net]
そのとおり

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



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

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


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

293 名前:デフォルトの名無しさん mailto:sage [2015/05/08(金) 11:25:32.49 ID:JgJK5K7B.net]
int* a, b;

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

295 名前:デフォルトの名無しさん mailto:sage [2015/05/08(金) 12:24:41.65 ID:Yhmm5THU.net]
>>274 で回答出てるだろ

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

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

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

299 名前:デフォルトの名無しさん mailto:sage [2015/05/08(金) 14:34:59.04 ID:semA39SH.net]
おっとミスった
他プロセスだからメッセージフックだったな

300 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2015/05/08(金) 14:49:49.46 ID://zzhYF7.net]
バージョン情報がないプログラムは動かなくなるって。ソースは俺



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

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

303 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2015/05/08(金) 20:26:10.33 ID://zzhYF7.net]
このscreenは、画面という意味ではなく、「選別」を意味するらしい。

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

305 名前:デフォルトの名無しさん mailto:sage [2015/05/08(金) 23:55:30.38 ID: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 名前:デフォルトの名無しさん mailto:sage [2015/05/09(土) 00:06:21.40 ID:f+X1Lw0k.net]
A.exe が呼んでる a.dll と B.exe が呼んでる b.dll は別モノだろ

307 名前:デフォルトの名無しさん [2015/05/09(土) 11:00:55.20 ID:OWlYoivl.net]
初歩的な質問ですいません。
文字セットはマルチバイトとUNICODEのどちらで開発した方が良いのでしょうか?

blogs.msdn.com/b/japan_platform_sdkwindows_sdk_support_team_blog/archive/2011/12/29/unicode-vc.aspx
ちょっと古いのですが上記の記事ではUNICODEを推奨しています。
しかし現在の主流はUTF-8だと思うのでマルチバイトの方がいいでしょうか?

308 名前:デフォルトの名無しさん mailto:sage [2015/05/09(土) 11:01:57.68 ID:4IoY+00I.net]
dllを呼ぶって・・・
イミフ

309 名前:デフォルトの名無しさん mailto:sage [2015/05/09(土) 11:08:04.81 ID:2HKbgDAs.net]
いやーTCHARでしろっていわれてるじゃん

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



311 名前:デフォルトの名無しさん mailto:sage [2015/05/09(土) 12:48:51.86 ID:PwWAAfZb.net]
おいらはwchar_tやwstringを使う
ようにしている。charは滅多に使わない。
なのでcharと言えばwchar_tを意味するようにしたいくらいだ。

typedef char wchar_t
とか
#define wchar_t char
ってやったらどうなるんだろう。

312 名前:デフォルトの名無しさん mailto:sage [2015/05/09(土) 13:19:26.21 ID:cx7dem6B.net]
コンパイラ持ってるならやってみればいいのに

313 名前:デフォルトの名無しさん [2015/05/09(土) 13:43:09.74 ID:QFYNEVBc.net]
Java厨だね

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

315 名前:デフォルトの名無しさん mailto:sage [2015/05/09(土) 15:13:06.28 ID:x1xiQQNi.net]
,s8ってつければ読めるよ

316 名前:デフォルトの名無しさん mailto:sage [2015/05/09(土) 15:37:00.89 ID:qZm7gFud.net]
windowsのunicodeってutf8なんだったっけ?

317 名前:デフォルトの名無しさん mailto:sage [2015/05/09(土) 15:44:31.24 ID:CtUg1jEA.net]
めんどくせえ、ずっとcp932じゃ

318 名前:デフォルトの名無しさん mailto:sage [2015/05/09(土) 15:48:36.60 ID:x1xiQQNi.net]
>>311
UTF16

319 名前:デフォルトの名無しさん mailto:sage [2015/05/09(土) 16:02:46.51 ID:2HKbgDAs.net]
utf8は可変長だからワイド文字ではない

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



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

322 名前:デフォルトの名無しさん mailto:sage [2015/05/09(土) 17:27:42.10 ID:qeICslx9.net]
どうせ基本多言語面しか使わんだろ

323 名前:デフォルトの名無しさん mailto:sage [2015/05/09(土) 19:03:16.99 ID:gxvtiy3r.net]
>>313
LE?

324 名前:デフォルトの名無しさん mailto:sage [2015/05/11(月) 23:30:14.93 ID:o2fecJta.net]
う〜ん、別にLinuxでもbsdでもWindowsでもstd::wstring使うならUCSで読み込んで処理することになるから一緒。

325 名前:デフォルトの名無しさん mailto:sage [2015/05/12(火) 12:20:59.31 ID:ylqMkeqf.net]
すみませんDirectShowの質問はここでいいんでしょうか?

【C++】 DirectX初心者質問スレ Part39 【C】
はスレ違いらしいので

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

327 名前:デフォルトの名無しさん mailto:sage [2015/05/12(火) 13:17:16.94 ID: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 名前:デフォルトの名無しさん mailto:sage [2015/05/12(火) 13:38:00.46 ID: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 名前:デフォルトの名無しさん mailto:sage [2015/05/12(火) 15:06:35.12 ID:Z/MhgXt8.net]
将来ディスプレイの解像度がすっごく上がって、
6万5千以上が有り得る状況になったら、
Win32APIはどうなってしまうのでしょうか。
有り得ないって?まぁそうかもしれませんが。

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

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

334 名前:デフォルトの名無しさん mailto:sage [2015/05/12(火) 15:20:40.89 ID:yK9QlxPH.net]
LPARAMは32bit固定じゃない
LONG_PTRだったはず

335 名前:デフォルトの名無しさん mailto:sage [2015/05/12(火) 16:20:35.40 ID: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 名前:デフォルトの名無しさん mailto:sage [2015/05/12(火) 16:44:48.43 ID:yK9QlxPH.net]
別メッセージになるんじゃね

337 名前:デフォルトの名無しさん mailto:sage [2015/05/12(火) 16:47:10.58 ID:Z/MhgXt8.net]
更に言えば、WM_LBUTTONDOWNなんかで渡されるLPARAMは、
符号ありなんで、0xFFFFの更に半分の0x7FFFまでしか扱えないんだよね。
4kディスプレイを横に9枚並べるとアウト。
今はまだぜんぜん余裕だけど、将来どうなるかは分からんよね。
たぶん特定のウィンドウスタイルを追加しないと、ウィンドウサイズが制限されるような事態になるのかね。
そんで専用のAPIで取得してくださいみたいな。

ただ、今のretinaクラス以上にDPIを上げても、人間の視力の限界だし、
retinaのDPIを維持したまま(300dpiとして)、0x7FFFをインチに換算すると、
109インチ(2.8m)なんで、考えるだけ意味無いかも。

338 名前:デフォルトの名無しさん mailto:sage [2015/05/12(火) 17:20:28.36 ID:32yYIcwZ.net]
初歩的な質問だと思いますが、
・RegisterClassでウィンドウクラスの登録
・CreateWindowでウィンドウの表示
・登録されたウィンドウプロシージャで各種処理

という最も基本的な流れでプログラムが動いていますが、作業中ウィンドウから
例えば「新規」を選ぶともう一枚ウィンドウが開いて全く別の作業ができるように
したい場合、単にCreateWindowすれば良さそうですが、同じウィンドウプロシージャ
だとこれまで使っていたデータと競合してしまいます。
かといって、ウィンドウごとにウィンドウプロシージャを別に用意って普通しないのでは?
と思います。

複数のウィンドウでウィンドウプロシージャは同一、データは別としたい場合、
一般的にはどうしているんでしょうか?

339 名前:デフォルトの名無しさん mailto:sage [2015/05/12(火) 17:31:08.89 ID:yK9QlxPH.net]
Get/SetWindowLongPtr+GWLP_USERDATA

340 名前:デフォルトの名無しさん mailto:sage [2015/05/12(火) 17:33:59.79 ID:yK9QlxPH.net]
じゃなかったらSetProp/GetProp/RemovePropとかかもね



341 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2015/05/12(火) 17:34:05.47 ID:fncYevaL.net]
>>331
GetWindowLongPtr/SetWindowLongPtrかハンドルマップを使って、
ウィンドウとデータを関連付ける。

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

343 名前:デフォルトの名無しさん mailto:sage [2015/05/12(火) 18:39:40.95 ID:Z/MhgXt8.net]
SetWindowSubclassを使っても良いぞ。

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

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

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

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

348 名前:デフォルトの名無しさん mailto:sage [2015/05/13(水) 09:23:17.27 ID:hDqQQ4M8.net]
はい

349 名前:デフォルトの名無しさん mailto:sage [2015/05/13(水) 10:32:07.23 ID:VzW8YhOf.net]
>>341
ヒント教えてくれよ

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



351 名前:デフォルトの名無しさん mailto:sage [2015/05/13(水) 12:30:27.51 ID:hDqQQ4M8.net]
>>342
キーボード操作だけで>>340をやってみる
それを実装する

>>343
LOWORD(wParam)

352 名前:デフォルトの名無しさん mailto:sage [2015/05/13(水) 13:12:04.72 ID:VzW8YhOf.net]
>>344
ヒント、サンキュウ!
>キーボード操作だけで>>340をやってみる
>それを実装する
なるほど。試してみたいのだが、今、他の作業で超忙しくて手が離せない。
だれか暇な人がいたらサンプルを作ってくれるとうれしい。

353 名前:デフォルトの名無しさん mailto:sage [2015/05/13(水) 13:27:42.36 ID:jTT2yS9m.net]
>>344
ログ見る限り、うまく動いてませんね。。
// Dll
HWND hookWnd(){return ghookWnd;}
LRESULT CALLBACK fix32HookProc(int nCode, WPARAM wParam, LPARAM lParam){
if ( nCode < 0 ) return CallNextHookEx(hHook, nCode, wParam, lParam);
CWPSTRUCT* const p = (CWPSTRUCT*)lParam;
case WM_ACTIVE:
ghookWnd=p->hwnd;
SendMessage(gMainWnd,WM_USER,p->wParam,p->lParam);
break;
-------------------------------
// main
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){
switch(message){case WM_USER:
switch(LOWORD(wParam)){
case WA_ACTIVE: printf("%p WA_ACTIVE マウスクリック以外の方法でアクティブ化された %p\n",hookWnd(),(HWND)lParam); break;
case WA_CLICKACTIVE: printf("%p WA_CLICKACTIVE マウスクリックによってアクティブ化された %p\n",hookWnd(),(HWND)lParam); break;
case WA_INACTIVE: printf("%p WA_INACTIVE 非アクティブ化された(新しいハンドル%p)\n",hookWnd(),(HWND)lParam); break;
}
printf("GetForegroundWindow() %p\n",GetForegroundWindow());
}
GetForegroundWindow()の値とhookWnd(),(HWND)lParamの値が一致しないです。
WA_INACTIVEのとき、lParamには適正値が入るのは知ってます。
DLLのグローバルフック上のcase WM_ACTIVE:で、GetForegroundWindow()を呼び出してそれ使ったほうがよい?

354 名前:デフォルトの名無しさん mailto:sage [2015/05/13(水) 14:22:04.41 ID:dI4ahC8f.net]
なんでlParamと比べてるの?
hWndと比べるんじゃねえの?

355 名前:デフォルトの名無しさん mailto:sage [2015/05/13(水) 14:23:33.95 ID:dI4ahC8f.net]
あ、hookWnd()がhWndか

356 名前:デフォルトの名無しさん mailto:sage [2015/05/13(水) 14:32:38.40 ID:qFyXwJnh.net]
>>346
WH_SHELLでフックして HSHELL_WINDOWACTIVATED を拾えば?

357 名前:デフォルトの名無しさん mailto:sage [2015/05/13(水) 14:41:26.04 ID:jTT2yS9m.net]
>>349
ありがとう。試してみますね。

358 名前:349 mailto:sage [2015/05/13(水) 15:05:15.31 ID:jTT2yS9m.net]
>>349
試しましたが、デバッグ用のコンソールのウインドがアクティブになった場合、
そのウインドのイベントが発生せず。。うーん。。WH_CALLWNDPROCでフックして、WM_ACITVE内で、
GetForegroundWindow()使ったほうがいいのかもしれないorz

359 名前:349 mailto:sage [2015/05/13(水) 16:23:00.40 ID:jTT2yS9m.net]
開発環境が、64bit版のWin7で32ビットベースアプリでコンパイルしていたので、気が付きませんでしたが、
WIN8の32ビット版では、正しくHSHELL_WINDOWACTIVATEDは、GetForegroundWindow()の値と同じものが取得できました。
32Bit側のアプリ呼び出しの、AllocConsole();が、64BitOSだと、64Bitで動いていた可能性あり?
64BitDLL作って、調べてみます。

360 名前:349 mailto:sage [2015/05/13(水) 16:44:23.87 ID:jTT2yS9m.net]
64BIT版フックのDLL作って調べました。予想通り、AllocConsole()の窓は、64Bitウインドでした。



361 名前:デフォルトの名無しさん mailto:sage [2015/05/13(水) 17:37:17.83 ID:hDqQQ4M8.net]
>>345
それを丸投げという

362 名前:デフォルトの名無しさん mailto:sage [2015/05/13(水) 17:55:53.05 ID:fE4vsJH4.net]
マルウェアでも作るのか?

363 名前:デフォルトの名無しさん mailto:sage [2015/05/13(水) 18:26:26.64 ID:I7FDspWM.net]
<危険度対決!>
マルウェア vs 丸投げウェア

364 名前:デフォルトの名無しさん mailto:sage [2015/05/13(水) 18:45:24.92 ID:jTT2yS9m.net]
マルウェア?だと?!

365 名前:デフォルトの名無しさん mailto:sage [2015/05/13(水) 18:47:31.55 ID:cKVTGKhm.net]
秀まる?

366 名前:デフォルトの名無しさん mailto:sage [2015/05/13(水) 20:28:45.56 ID:5e3tU8d3.net]
>>345
おまえが暇になったらやればいいんじゃね?

367 名前:デフォルトの名無しさん mailto:sage [2015/05/14(木) 15:20:59.18 ID:+nIQtAtr.net]
長くてすみません。

ダイアログにタブコントロールを配置し、タブの切り替えに応じて
複数の子ダイアログを表示・非表示しています。

この子ダイアログにリストビューがあるのですが、マウスによって
ホイールに反応するものとしないものがあります。

恐らくマウスドライバの作りの差かと思いますが、プログラム側で
なにか工夫すれば対応できるようになるものでしょうか?

ホイールが反応しないケースでは、どうも親ダイアログに対して
スクロールさせるような命令が飛んできている感じではあります。
親ダイアログに直に配置したリストビューはマウスの種類に関係なく
ホイールに反応します。

この挙動から、親に来るメッセージ類を補足して現在表示中の
子ダイアログ下のマウスカーソルが下のリストビューのスクロール処理
をすれば理論的には良さそうです。

しかし、ここまでやらないといけないでしょうか?

368 名前:デフォルトの名無しさん mailto:sage [2015/05/14(木) 15:58:44.50 ID:mCvwdOKM.net]
>>360
ログ取って「リストビューにフォーカスがあるかどうか」調べてみるのは?

369 名前:デフォルトの名無しさん mailto:sage [2015/05/14(木) 16:05:44.65 ID:7SdMC+6R.net]
>>361 と同意見。当該子ダイアログを表示するときにリストビューに SetFocus() する

370 名前:デフォルトの名無しさん mailto:sage [2015/05/14(木) 16:44:59.33 ID:+nIQtAtr.net]
私も最初はフォーカスを疑いましたが、入力フォーカスは当たっています。

試行錯誤している内に、単にマウスドライバの問題ではないかという気がしてきました。

どうもありがとうございました。



371 名前:片山博文MZ社外取補 ◆T6xkBnTXz7B0 mailto:sage [2015/05/14(木) 21:40:41.08 ID:opb9h0b1.net]
HTML Helpは、デフォルトでブロックされて見れない。
落とし穴。絶対使うな。

372 名前:デフォルトの名無しさん mailto:sage [2015/05/14(木) 21:48:10.79 ID:7SdMC+6R.net]
インストーラ使えば問題ない

373 名前:デフォルトの名無しさん mailto:sage [2015/05/15(金) 06:41:01.84 ID:w0X/ZpcK.net]
WinMainの中で
AllocConsole();
してprintf出力しているのですが、
別スレッドを作成して、その中でもprintfしたところ、
このコンソールには出ませんでした。
どうすれば別スレッドからもこのコンソールに出せますか?

374 名前:デフォルトの名無しさん mailto:sage [2015/05/15(金) 12:35:19.68 ID:0PkDPPO5.net]
>>367
それは単純にはいかない
複数のスレッドから、からくりはどうであれ、一つのところに出力したいのなら、それなりの仕掛けが必要。

根本的に、各スレッド間で独立しているものはなに?共通なのはなに?

375 名前:デフォルトの名無しさん mailto:sage [2015/05/15(金) 13:09:13.22 ID:nIpJir9o.net]
>>366
文字列送信時、WM_COPYDATA を使ったらどうだろ?
メッセージを受信したら、その文字列をprintfすればいいんじゃね?

376 名前:デフォルトの名無しさん mailto:sage [2015/05/15(金) 13:22:09.71 ID:hBLf1mma.net]
>>366
www.f13g.com/%A5%D7%A5%ED%A5%B0%A5%E9%A5%DF%A5%F3%A5%B0/C_C++/Windows/GUI%A4%C8CUI%A4%F2%BA%AE%BA%DF%A4%B5%A4%BB%A4%EB/

377 名前:デフォルトの名無しさん mailto:sage [2015/05/15(金) 13:31:24.00 ID:nIpJir9o.net]
>>366
// 受信用
case WM_COPYDATA: printf("%s",((COPYDATASTRUCT*)lParam)->lpData );
// 送信向け
void myprintf (HWND hWnd,HWND hWndTarget,char *format , ... )
{
char strbuf[2048]; // バッファサイズは適当に〜
va_list args; // printf っぽいくstrbufに文字列を加工する
memset(strbuf,0,sizeof(strbuf));
va_start( args, format);
vsprintf( strbuf, format, args);
va_end( args );
COPYDATASTRUCT cds;
cds.dwData = 0;
cds.cbData = sizeof(strbuf); / /送る文字列データの長さ。
cds.lpData = strbuf; // 送る文字列データのポインタ
SendMessage(hWndTarget,WM_COPYDATA,(WPARAM)hWnd,(LPARAM)&cds);
}
// ヘッダーを追加
#include <stdio.h>
#include <locale.h>
#pragma warning(disable:4996)
// winmain とかに追加してね
AllocConsole();
FILE *stream = freopen("CON", "w", stdout); // 標準出力の再割り当て
_tsetlocale(LC_ALL, _T("Japanese_Japan.932")); // wprintfとか使うなら!

// winmainのメイン メッセージ ループを抜けた最後の付近で後始末
fclose(stream);FreeConsole();

378 名前:デフォルトの名無しさん mailto:sage [2015/05/15(金) 18:44:45.43 ID:WZ+HCGJP.net]
>>360
タブを親窓にせず、メイン窓を親にする。
たしか入力メッセは、デフォルトプロシージャがフォーカスあるやつに送りつけたはず
タブは孫に渡さず使い捨てたと思う

379 名前:デフォルトの名無しさん mailto:sage [2015/05/15(金) 19:00:03.80 ID:WZ+HCGJP.net]
>>366
その別スレッド、全角文字をだしているとみた。
メインはASCIIのみ

380 名前:デフォルトの名無しさん mailto:sage [2015/05/15(金) 19:22:08.01 ID:sCqaJb0K.net]
コンボボックスのオーナードローで質問です。

これまでオーナードロー無しでコンボボックスを使っていましたが、今回オーナードローにするため
CBS_OWNERDRAWFIXED を付加して CreateWindow し、WM_DRAWITEM を処理するように追加しました。

すると、コンボボックスに設定されている文字列が文字化けしておかしくなります。
正確には、ComboBox_GetLBText でコンボボックス文字列が正しく取得できません。

コンボボックスは以下のように作っており、CBS_OWNERDRAWFIXEDを付加しない場合、なにも問題は出ません。
{
hComboWnd = CreateWindowEx(WS_EX_CLIENTEDGE, "ComboBox", "",
    WS_CHILD | WS_VISIBLE | CBS_DROPDOWNLIST | WS_VSCROLL | CBS_OWNERDRAWFIXED,
    0, 0, 100, 500, hWnd, (HMENU)1, GetWindowInstance(hWnd), NULL);
ComboBox_ResetContent(hComboWnd);
ComboBox_AddString(hComboWnd, "text A");
ComboBox_AddString(hComboWnd, "text B");
ComboBox_AddString(hComboWnd, "text C");
}



381 名前:デフォルトの名無しさん mailto:sage [2015/05/15(金) 19:25:12.49 ID:sCqaJb0K.net]
オーナードロー部分はざっくり以下のように簡単に作り直しましたが、文字化けします。
どこかおかしいところがありますでしょうか?

static void DrawItemProc(
  HWND  hWnd, int iId, LPDRAWITEMSTRUCT  drawitem
)
{
変数宣言略
  if (iId != 1)  return;
  ComboBox_GetLBText(drawitem->hwndItem, drawitem->itemID, szbuf);
  if (drawitem->itemState & ODS_SELECTED) {
    rgbText = RGB(255, 255, 255);
    rgbBack = RGB(0, 0, 200);
  } else {
    rgbText = 0;
    rgbBack = RGB(255, 255, 255);
  }
  hPen = CreatePen(PS_SOLID, 1, rgbText);
  hBrush = CreateSoli

382 名前:dBrush(rgbBack);
  SelectObject(drawitem->hDC, hPen);
  SelectObject(drawitem->hDC, hBrush);
  Rectangle(drawitem->hDC, drawitem->rcItem.left, drawitem->rcItem.top, drawitem->rcItem.right, drawitem->rcItem.bottom);
  TextOut(drawitem->hDC, 0, 0, szbuf, lstrlen(szbuf));
}

WndProc(

    case WM_DRAWITEM:
      DrawItemProc(hWnd, (UINT)wParam, (LPDRAWITEMSTRUCT)lParam);
[]
[ここ壊れてます]

383 名前:片山博文MZ社外取補 ◆T6xkBnTXz7B0 mailto:sage [2015/05/15(金) 19:28:57.49 ID:hBLf1mma.net]
ComboBoxは古くてUnicodeに未対応。ComboBoxEx使え。

384 名前:デフォルトの名無しさん mailto:sage [2015/05/15(金) 19:40:42.30 ID:WZ+HCGJP.net]
コモンコントロールなんか捨てちまえ
自分で書いた方が、実装が早い。あれは人に使わせるように書いたものじゃない

あと最近気になるのは、
多分、コモンコントロールはDirect2Dを使っていない。

385 名前:デフォルトの名無しさん mailto:sage [2015/05/15(金) 19:46:23.99 ID:w0X/ZpcK.net]
>>370
サンプルプログラム有難うございました。
無事にうごきました。別スレットからConsoleに出力できました。
大変助かりました。感謝です。

本件とは無関係ですが、この自作プログラムの中で
printfやcoutしている箇所がいくつかあるのですが、プログラムを
実行していると、ある時点から改行されずに、横につながって出力
されてしまうおかしな症状が出て悪戦苦闘しています。
printf("\n");や cout<<endl;でも
改行しなくなるなるんです。
こんな症状は初めてで、何がおかしいか心当たりが全くありません。
今回の別スレッドプリント機能を追加する前からそうなっていました。
もし何か解決のヒントありましたらアドバイスよろしく。

386 名前:片山博文MZ社外取補 ◆T6xkBnTXz7B0 mailto:sage [2015/05/15(金) 19:51:35.16 ID:hBLf1mma.net]
>>377
CriticalSectionで排他制御、または入出力の同期

387 名前:デフォルトの名無しさん mailto:sage [2015/05/15(金) 20:01:24.06 ID:AZhRVSC1.net]
>>374
TextOut(drawitem->hDC, drawitem->rcItem.left, drawitem->rcItem.top, szbuf, lstrlen(szbuf));
じゃないのか?

それと、ComboBox_AddString() では文字列を指定せず、
描画したい文字列へのポインタを ComboBox_SelectItemData() して保持するほうがラク

保持した文字列へのポインタは drawitem->itemData にあるので、それをDrawText() する
(NULL で終わる文字列の場合に文字数を指定しなくていいので、TextOut()するよりラク)

388 名前:デフォルトの名無しさん mailto:sage [2015/05/15(金) 20:02:42.29 ID:AZhRVSC1.net]
×ComboBox_SelectItemData()
○ComboBox_SetItemData()

389 名前:デフォルトの名無しさん mailto:sage [2015/05/15(金) 20:30:49.43 ID:w0X/ZpcK.net]
>>378
片山さん、
レスありがとうございます。
さっそく
CriticalSectionでググッて、たまたま見つけた
bituse.info/winapi/16
のサンプルをみて、
InitializeCriticalSection()
EnterCriticalSection()
LeaveCriticalSection()
などを追加してみましたが改善されません。
サブスレッドは、
std::packaged_task
std::thread
を使って作成しています。
も少し何かチェックすべき点などありましたらご指導お願いします。

390 名前:片山博文MZ社外取補 ◆T6xkBnTXz7B0 mailto:sage [2015/05/15(金) 20:34:20.00 ID:hBLf1mma.net]
sync_with_stdioかな?



391 名前:369 mailto:sage [2015/05/15(金) 20:38:08.04 ID:nIpJir9o.net]
>>377
動いてよかったね。

マルチスレッド系なら、>>378のアドバイス通り、CriticalSectionの処理忘れずに。

あと、マルチスレッドのチェックを入れておくこと。
VS2013であれば、
構成プロパティ->C/C++ ->コード生成->ランタイムライブラリー
->マルチスレッド/mt か マルチスレッド/mtd
この設定しておかないと、CRT系のライブラリーで不具合出た記憶がある。

392 名前:デフォルトの名無しさん mailto:sage [2015/05/15(金) 22:12:36.63 ID:sI8inuS2.net]
VC2005あたりから、MT/MTdだけになったんじゃないか?

393 名前:369 mailto:sage [2015/05/15(金) 23:02:43.90 ID:nIpJir9o.net]
>>384
たしかに。。VS6から2013に移ったので気付かなかったw

394 名前:デフォルトの名無しさん mailto:sage [2015/05/15(金) 23:04:15.12 ID:sCqaJb0K.net]
>>379
> TextOut(drawitem->hDC, drawitem->rcItem.left, drawitem->rcItem.top, szbuf, lstrlen(szbuf));
> じゃないのか?

そこは仰る通りです。後で気付きました。


> それと、ComboBox_AddString() では文字列を指定せず、

あれから CBS_HASSTRINGS ウィンドウスタイルを追加して問題が一旦解決していたのですが、
なんでこんなものがあるのかと調べているところでした。(他に別の問題が出てきて・・)

ComboBox_SetItemData で別のデータをセットしていたので、この辺を踏まえて
構造体ポインタでもセットした方が良さそうですね。

どうもありがとうございました。

395 名前:デフォルトの名無しさん mailto:sage [2015/05/21(木) 12:41:57.14 ID:iDqwREQX.net]
  

396 名前:デフォルトの名無しさん mailto:sage [2015/05/23(土) 03:46:59.36 ID:Xep2wRPy.net]
マウスの位置の下のウインドハンドルを調べたい場合どうすればよいですか?
WindowFromPointだと、拾えないハンドルがあるみたいです。
APIの解説読むとChildWindowFromPoint使えと書いてあったのですが、親ウインドを調べる場合はどうすれば?
EnumWindowsとChildWindowFromPointの組み合わせとかになるんでしょうか?
一番上にあるウインドのハンドルが知りたいです。

397 名前:デフォルトの名無しさん [2015/05/23(土) 08:37:51.43 ID:Henr8hEj.net]
EnumWindowでハンドルもらってGetWindowRectちゃうか

398 名前:デフォルトの名無しさん mailto:sage [2015/05/23(土) 09:31:52.27 ID:Xep2wRPy.net]
>>389
Zオーダーとかも考慮する必要があるので複雑になると思うのですが。。?

399 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2015/05/23(土) 10:01:44.26 ID:ojXlCtK2.net]
ChildWindowFromPointの第一引数にNULL。
GetParentを繰り返し呼ぶ。

400 名前:デフォルトの名無しさん mailto:sage [2015/05/23(土) 11:00:20.06 ID:dJKu3sZC.net]
自分のウィンドウならマウスホバーメッセージが飛んでくる
この辺りの基本は、日本語でMSDNにハウトゥが書いてあるぞ
他プロセスのウィンドウを調べる方法もあるが、普通は要らない
なんかストークソフトの技術質問ばかりだな、ここ



401 名前:デフォルトの名無しさん mailto:sage [2015/05/23(土) 11:39:31.72 ID:e7q+dZJt.net]
>親ウインドを調べる場合はどうすれば?
GetAncestor()

402 名前:デフォルトの名無しさん mailto:sage [2015/05/23(土) 11:48:13.91 ID:EdDrIok9.net]
(^^)
livedoor.blogimg.jp/sytsyt/imgs/9/1/9128060f.png

403 名前:デフォルトの名無しさん mailto:sage [2015/05/23(土) 14:02:41.96 ID:LbQhEyX4.net]
spy とか inspect のツールじゃダメなん?
ちなみに inspect は UI Automation とかいう開発者向けの I/F を使ってるらしい

404 名前:デフォルトの名無しさん mailto:sage [2015/05/23(土) 16:17:09.12 ID:N5mcUzwL.net]
マウスフックじゃあかんの?

405 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2015/05/23(土) 17:44:15.28 ID:ojXlCtK2.net]
コントロールパネルやアンインストール情報を表示するのに二分もかかるシステムは、淘汰されるべきだ。#Microsoft

406 名前:デフォルトの名無しさん mailto:sage [2015/05/23(土) 18:06:16.36 ID:e7q+dZJt.net]
それはPCがおかしい

407 名前:デフォルトの名無しさん mailto:sage [2015/05/23(土) 18:38:18.33 ID:YAXRIJCD.net]
お前が淘汰されないユルい世界に感謝しな

408 名前:デフォルトの名無しさん mailto:sage [2015/05/23(土) 21:36:40.32 ID:SD28Qaym.net]
なーんで、Process32FirstやらNextはフックできないんだろう。
これシステムでなにかロックされてる?

409 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2015/05/23(土) 22:08:05.87 ID:ojXlCtK2.net]
>>400
Process32*フックできたら、存在するプロセスを隠せるセキュリティ上の問題が発生する

410 名前:デフォルトの名無しさん [2015/05/23(土) 22:59:40.12 ID:aSQ4opfb.net]
DirectXでフルスクリーンからウィンドウモードに戻すとウィンドウスタイルがAero GlassからAero Basicになっているのですが再度Aero Glassに戻すにはどうしたらいいのでしょうか?



411 名前:デフォルトの名無しさん mailto:sage [2015/05/24(日) 00:17:54.61 ID:r97vly3l.net]
DwmEnableCompositionで手動で戻してみたら?
本来必要のない手続きだから環境かプログラムのどちらかがおかしいけど

412 名前:デフォルトの名無しさん mailto:sage [2015/05/24(日) 01:48:20.80 ID:/8p/6XEk.net]
Aeroとか言うウンコが早く死にますように(-人-)

413 名前:デフォルトの名無しさん mailto:sage [2015/05/24(日) 01:52:56.76 ID:qlvppzxo.net]
Aeroがウンコなんじゃなくて、お前のPCのスペックがウンコなんだろ

414 名前:デフォルトの名無しさん mailto:sage [2015/05/24(日) 02:38:12.25 ID:fc/UFx7b.net]
どこからスペックの話が出てきたのか

415 名前:401 [2015/05/24(日) 03:01:23.80 ID:4hOp25cH.net]
>>403
ありがとうございます

SetWindowLongの第二引数をGWL_EXSTYLEとしていたのが原因でした
GWL_STYLEでできました

416 名前:デフォルトの名無しさん [2015/05/24(日) 10:25:17.19 ID:y1MgTLvO.net]
スペックが低いと頼みもしないのに自動切り替えが起きる
のも知らんアフォはともかく
it.srad.jp/story/11/09/17/0527253/

417 名前:デフォルトの名無しさん mailto:sage [2015/05/24(日) 10:41:11.74 ID:G2/oGA6A.net]
話の通じない人って困るよね(´・ω・`)

418 名前:デフォルトの名無しさん mailto:sage [2015/05/24(日) 13:52:42.90 ID:xY4KxC2+.net]
頭がウンコなんだろ

419 名前:デフォルトの名無しさん mailto:sage [2015/05/24(日) 16:04:21.97 ID:riQhXw9m.net]
WINDOWSの右クリック時で開かれるポップアップメニューなどがあった場合、
他のウインドにフォーカスが移動したときに、ポップアップメニューが勝手に消えますよね。
それを自分のウインドにフォーカスが移った場合、ポップアップメニューを閉じないようにするには、
どうすればよいでしょうか?

420 名前:デフォルトの名無しさん mailto:sage [2015/05/24(日) 16:15:06.24 ID:tHPLTcxB.net]
ポップアップメニューを自作のポップアップウィンドウにする



421 名前:デフォルトの名無しさん mailto:sage [2015/05/24(日) 16:17:51.47 ID:riQhXw9m.net]
フックとかそーいったの使ってでも制御したいので、ヒントがほしいです。
ちーたんタッチボードとかは、ポップアップメニューについて、ポップアップ維持の処理が制御できているみたいです。

422 名前:デフォルトの名無しさん mailto:sage [2015/05/24(日) 16:50:29.70 ID:GWZDfR0O.net]
自身のウィンドウが「フォアグラウンドでない場合」にポップアップメニューを表示すると
他のアプリケーションがフォアグランドになっても、表示したポップアップメニューは消えない。

423 名前:デフォルトの名無しさん mailto:sage [2015/05/24(日) 23:33:23.28 ID:riQhXw9m.net]
この辺試してみたけどうまくいかないです。。
LockSetForegroundWindow(LSFW_LOCK);
CreateWindowEx(WS_EX_NOACTIVATE, ...
case WM_NCACTIVATE: return DefWindowProc(hWnd, message, 1, lParam);

ポップアップウインドのサブクラス化ってできませんよね?
WM_CLOSEをフォーカスが自分のウインドにあった場合、キャンセルさせようかと思ったんですが
ポップアップメニューってウインドハンドルないのかな?

424 名前:デフォルトの名無しさん mailto:sage [2015/05/24(日) 23:54:34.27 ID:JmEJu+yH.net]
>>415
WM_CLOSEじゃなくShowWindow(hwnd, SW_HIDE)ならフックになるな

425 名前:デフォルトの名無しさん mailto:sage [2015/05/25(月) 00:12:22.08 ID:Y4roGc/9.net]
>>416
WM_ACTIVE:と、WM_NCACTIVE:のタイミング両方で、
SetActiveWindow( hBackupWnd );SetForegroundWindow(hBackupWnd);を動かしてみたんですけど、
ウインドの状態は前のウインドで保持されてはいますが、ポップアップメニューが閉じてしまいます。
WM_NCHITTESTを戻り値を0にしてもだめです。。
ポップアップメニューのウインドハンドル調べてみたのですが、ハンドルを得ることできそうもないです。
困った。。

426 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2015/05/25(月) 00:18:26.56 ID:LQzNccs7.net]
Win32のメニューはウィンドウではない。
ただメニューと同じ動作のウィンドウは作ることはできる。
自作のポップアップウィンドウをメニューに見せるのが一番。

427 名前:デフォルトの名無しさん mailto:sage [2015/05/25(月) 00:26:32.69 ID:8Crjy0ou.net]
ウィンドウじゃないとか嘘つくなよ
ポップアップメニュー表示中に
FindWindow("#32768", NULL)でウィンドウハンドル取れるだろ

428 名前:デフォルトの名無しさん mailto:sage [2015/05/25(月) 00:28:30.28 ID:Y4roGc/9.net]
片山さん、自分のポップアップメニューではなく、他者のアプリのポップアップメニューですが、同じようなものは作成できるんでしょうか?
やりたいことは、ちーたんタッチボードや、TouchMousePointerなどの入力系ツールの作成です。
もしくは、マウスのイベントを無効にして、自分のウインドにフォーカスが移らないようにすることはできますか?

429 名前:デフォルトの名無しさん mailto:sage [2015/05/25(月) 00:31:17.45 ID:n6K4TpsH.net]
いちばん簡単な方法は>>412

「ポップアップウィンドウを作って、ポップアップメニューに見せかける」

430 名前:デフォルトの名無しさん mailto:sage [2015/05/25(月) 00:36:33.73 ID:Y4roGc/9.net]
>>419
FindWindow("#32768", NULL)は知りませんでした助かります。ありがとうございます。



431 名前:デフォルトの名無しさん mailto:sage [2015/05/25(月) 00:48:07.44 ID:Y4roGc/9.net]
FindWindow("#32768", NULL)試してみたのですが、OS固有のポップアップメニューは処理できそうな感じですが、
他のアプリが作ってる一部のポップアップメニューのハンドルは取れそうもないっぽいです。
例:フラッシュアプリで右クリックなどのポップアップなど
マウスフック試してみるか。。

432 名前:デフォルトの名無しさん mailto:sage [2015/05/25(月) 00:53:05.46 ID:xFjitowq.net]
フックできるならTrackPopupMenuのフックは?

433 名前:デフォルトの名無しさん mailto:sage [2015/05/25(月) 01:03:47.42 ID:Y4roGc/9.net]
>>424
さきほどのFindWindow("#32768", NULL)とグローバルフック経由からのサブクラス化など使えば
PopupMenuのフックはいけそうですね。

マウスフックのAPI眺めてみたのですが、それっぽいメッセージの処理ができそうもなかったので、
WH_CBTフックで、アクティブ拒否ができるか試してみます。
こっちのほうが簡単かな?

434 名前:デフォルトの名無しさん mailto:sage [2015/05/25(月) 01:39:07.50 ID:Y4roGc/9.net]
WH_CBTフックで、アクティブ拒否したのですが、ポップアップメニュー消えちゃうぅぅ。

435 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2015/05/25(月) 06:20:25.54 ID:LQzNccs7.net]
>>419
私の間違いでした。懺悔します。

436 名前:デフォルトの名無しさん mailto:sage [2015/05/25(月) 09:52:54.90 ID:5Xzz88z5.net]
へー
メニューってウィンドウなんだー

じゃあ逆に、普通のウィンドウをOSのメニューと完全に同じにフワッと表示したり選択項目だけがフェイド・アウトしたり
みたいな効果つけれるかね?

437 名前:デフォルトの名無しさん [2015/05/25(月) 11:00:17.64 ID:7nFkPzEN.net]
えっ!? できないと思ってるの??
ヒント: WS_EX_LAYERED

438 名前:デフォルトの名無しさん mailto:sage [2015/05/25(月) 13:49:31.31 ID:5Xzz88z5.net]
なにがヒントじゃハゲ

439 名前:デフォルトの名無しさん [2015/05/25(月) 14:02:59.81 ID:7nFkPzEN.net]
悪いかデブ

440 名前:デフォルトの名無しさん [2015/05/25(月) 14:08:24.82 ID:JYCHMnRj.net]
あの有名なトム・ジェリー氏も仲良くデュエルしろと言ってるし良いんじゃないか。



441 名前:デフォルトの名無しさん mailto:sage [2015/05/25(月) 17:29:27.21 ID:2/V0nnt+.net]
ホックなんかしなくても LayeredWindow で transparent 属性にしたら常に最前面が可能

442 名前:デフォルトの名無しさん mailto:sage [2015/05/25(月) 17:42:38.61 ID:QP0bivbh.net]
富むとジェリぃ
なっかっよーくジェノサイど

443 名前:デフォルトの名無しさん mailto:sage [2015/05/25(月) 20:24:07.83 ID:Y4roGc/9.net]
情報ありがとうございます。
transparent属性にしたらそのウインドでのタッチイベント(WM_TOUCH)発生するんでしょうか?
WS_EX_TRANSPARENTの属性をつけると、ヒットテストそのものが起きないとMSDNのサンプルに乗ってるんですが。。

https://msdn.microsoft.com/ja-jp/library/ms997507.aspx
hwnd = CreateWindowEx(WS_EX_LAYERED | // レイヤード ウィンドウ
WS_EX_TRANSPARENT | // このウィンドウをヒット テストしない

後ほど試して見ます。

444 名前:デフォルトの名無しさん mailto:sage [2015/05/26(火) 08:43:02.67 ID:pOYKgSOy.net]
こういうの見ると良く出来てると思う
show-dc.info/desktop-clock-gallery/simple-clock/5-colors-round-clock

445 名前:デフォルトの名無しさん mailto:sage [2015/05/26(火) 08:45:21.28 ID:pOYKgSOy.net]
こっちだった
www.vector.co.jp/soft/cmt/winnt/personal/se361316.html

446 名前:434 mailto:sage [2015/05/26(火) 18:10:23.25 ID:8e2ytTC5.net]
WS_EX_TRANSPARENT属性つけましたが、予想通りWM_TOUCHイベント発生せず。。
ポップアップメニュー保持したまま自分のウインドをタッチ操作することってどうすればいいんだろう?

実現しているソフトをSPY使ってウインドクラスのスタイルと拡張スタイルを見たのですが、同じようにウインドを生成しましたが、
ポップアップメニュー保持はできませんでした。
実現しているソフトのウインドスタイルがこんな感じです。
WS_EX_LEFT | WS_EX_LTRREADING | WS_EX_RIGHTSCROLLBAR | WS_EX_TOPMOST | WS_EX_CONTROLPARENT
WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_OVERLAPPED | WS_MAXIMIZEBOX

447 名前:デフォルトの名無しさん mailto:sage [2015/05/26(火) 18:22:12.43 ID:JdoiEwqA.net]
そもそも自前のポップアップメニューを実現すること自体が難しい。
ポップアップメニュー以外の部分をクリックしたときに、ポップアップメニューを消すのが難しい。
そこで、アプリ毎に、あの手この手で実現しているので、
全てに対応するのは無理だと思うのね。

448 名前:デフォルトの名無しさん mailto:sage [2015/05/26(火) 18:42:11.63 ID:s2c/IHjz.net]
Firefoxのブックマークのメニューでも
たまにサブアイテムが複数開いたままになったりするしな

449 名前:デフォルトの名無しさん mailto:sage [2015/05/26(火) 19:07:09.30 ID:yWiUgxdI.net]
メニュー表示を保持しているソフトの、そのメニューはSpyしてみたの?

・・・メニューじゃなかったりしてw

450 名前:434 mailto:sage [2015/05/26(火) 19:10:40.34 ID:8e2ytTC5.net]
ポップアップメニューを表示したまま、スパイにフォーカスを当てると、
ポップアップメニューが消えてしまい、スパイで監視することができません;;



451 名前:デフォルトの名無しさん mailto:sage [2015/05/26(火) 19:12:11.53 ID:yWiUgxdI.net]
何もフォーカスあてなくても、そのソフトのツリーをたどりゃいいじゃん (^_^;

452 名前:デフォルトの名無しさん mailto:sage [2015/05/26(火) 19:13:43.31 ID:yWiUgxdI.net]
あ、Spy をアクティブにした時点で消えるってことかな

453 名前:434 mailto:sage [2015/05/26(火) 19:16:07.64 ID:8e2ytTC5.net]
実現しているソフト(ちーたんタッチボード)では、
マウス操作の場合、ポップアップメニュを開いた状態から、アプリのウインドにフォーカスを移すと、ポップアップは消えます。
タッチパネルで操作する場合、上記条件で、アプリのウインドにフォーカスを移した場合、
ポップアップは維持されていて、ファイヤーフォックスやら、Googleクロームやらのポップアップメニューも
表示されたまま操作できています。

454 名前:デフォルトの名無しさん [2015/05/26(火) 19:29:45.63 ID:Wubd1VRv.net]
>>439
つWM_KILLFOCUS

455 名前:デフォルトの名無しさん mailto:sage [2015/05/26(火) 19:49:21.15 ID:yWiUgxdI.net]
FireFox ってオープンソースじゃなかったっけ? :-P

456 名前:デフォルトの名無しさん mailto:sage [2015/05/26(火) 20:09:52.82 ID:JdoiEwqA.net]
>>446
それがあんまうまくいかんのよ。
全てのウィンドウがフォーカスを受け取るとは限らんので。
マウスクリックしてもフォーカスイラネーってウィンドウがあると、
そこでクリックしてもKILLFOCUSが発生しない。
例えばツールバーとかはフォーカスを受け取らない。

457 名前:434 mailto:sage [2015/05/26(火) 20:12:54.79 ID:8e2ytTC5.net]
秀丸や、OS標準のnotepadとか、開いて、右クリックのポップアップメニューとかも普通に処理できているので、
自前でポップアップメニューを生成しているわけではなさそうです。

458 名前:デフォルトの名無しさん mailto:sage [2015/05/26(火) 20:14:18.14 ID:PeUEmaw1.net]
メニューだしたら、マウスイベントをグローバルフック
ヒットテストしてメニューでなければ消す
これで終わりだろ

459 名前:434 mailto:sage [2015/05/26(火) 21:22:50.67 ID:8e2ytTC5.net]
>>450
マウスのグローバルフックで、自分のウインドに関して、
すべてlp->wHitTestCode = HTTRANSPARENT;で処理無効にしましたが、効果なしでした。
LRESULT CALLBACK HookMouseProc(int nCode, WPARAM wParam, LPARAM lParam){
MOUSEHOOKSTRUCT *lp = (MOUSEHOOKSTRUCT*)lParam;
if( nCode == HC_ACTION){
if( lp->hwnd == hMainWnd){
lp->wHitTestCode = HTTRANSPARENT;return 1;
}
}
return CallNextHookEx(g_hHookMouse, nCode, wParam, lParam);
}

460 名前:デフォルトの名無しさん mailto:sage [2015/05/26(火) 21:41:44.94 ID:yWiUgxdI.net]
「自身のアプリにフォーカスが移動しても、他のアプリが出したポップアップメニューを
消さない方法があれば教えてください」

・・・という質問であることがやっとわかった。orz



461 名前:434 mailto:sage [2015/05/26(火) 21:46:41.89 ID:8e2ytTC5.net]
>>452
私の説明が下手で申し訳ない。そのとおりです。

462 名前:434 mailto:sage [2015/05/27(水) 06:12:50.61 ID:cNWj5KEM.net]
自己解決しました。WM_TOUCHが原因でした。さらばWIN7 orz
Process touch input with Direct Manipulation sampleをダウンロードして一部を書き換えたら問題が解決できました。
いろいろ有難うございました。

463 名前:デフォルトの名無しさん mailto:sage [2015/05/27(水) 09:24:46.64 ID:kMgatPrw.net]
何が問題だったのか

全く参考にならないゴミレスの山だけが残った。

464 名前:434 mailto:sage [2015/05/27(水) 10:23:05.35 ID:cNWj5KEM.net]
>>455
Win7以降をターゲット機とし、WM_TOUCH前提でトラックパットのアプリを作っていました。
トラックパット内で、右クリック同等のボタンを、デスクトップ上で押した場合、
ポップアップメニューが表示されるのですが、トラックパットにフォーカスが移ると
ポップアップメニューが消えてしまいトラックパットの操作ができません。
アプリとしては致命的なので、451さんが書かれている質問をしました。
前スレッドの781さんが書かれていたWin8向けのAPIを使ったら上記の問題が解消できたという内容です。
いろいろと言葉足らずですみません。
前スレッドの781さん有難うございました。

465 名前:デフォルトの名無しさん mailto:sage [2015/05/27(水) 12:41:25.80 ID:A76Dyx8a.net]
454に指摘されてもなお、解決方法を具体的に書けない434であった

466 名前:デフォルトの名無しさん mailto:sage [2015/05/27(水) 14:50:16.35 ID:elZ3FXt4.net]
肩パットのアプリも作ってくれ

467 名前:デフォルトの名無しさん mailto:sage [2015/05/27(水) 15:18:24.34 ID:N+gURrK4.net]
肩パァン

468 名前:434 mailto:sage [2015/05/27(水) 15:31:52.16 ID:cNWj5KEM.net]
>>457,454
WM_TOUCH以外のやり方は、まだ、理解していないので、自分のコードはかけませんが、解決だと思ったコードは次のとおりです。
MSDNから、Process touch input with Direct Manipulation sampleをダウンロードして、
AppWindow.cppの80行目のCreateWindowを、拡張スタイルで

469 名前:CreateWindowEx(WS_EX_NOACTIVATE, に置き換えたら上記の問題は解決できました。
Process touch input with Direct Manipulation sampleは、781の紹介されたWin8 APIのページからたどったら出てきます。
WM_TOUCHの代わりのAPI、WM_POINTERDOWN:関連はこれから調べる感じです。
このような感じでいいですか?勉強不足ですみません。
[]
[ここ壊れてます]

470 名前:デフォルトの名無しさん mailto:sage [2015/05/27(水) 16:38:01.80 ID:jmeRjzK/.net]
よくできまちた



471 名前:デフォルトの名無しさん mailto:sage [2015/05/27(水) 17:51:53.06 ID:dJYLVBc0.net]
>>460
次からはちゃんと「具体的に書いて下さいお願いします」って言わせなきゃダメだよ

472 名前:デフォルトの名無しさん mailto:sage [2015/05/27(水) 18:34:50.13 ID:kMgatPrw.net]
んー?
WS_EX_NOACTIVATEウィンドウでWM_TOUCHが来ないのが問題だったけど、WM_POINTERDOWN関連なら来るから解決しました。
なのか?

別に具体的に細かく説明しろって言ってんじゃなくて、要点を説明して欲しいだけなんだけどな。

473 名前:434 mailto:sage [2015/05/27(水) 19:19:31.11 ID:cNWj5KEM.net]
ちょっと違う。
要点としては、WS_EX_NOACTIVATE前提でプログラムをWM_TOUCHのメッセージをスパイでみると、
指でタッチした場合、WM_TOUCHの後に、WM_MOUSEMOVE、WM_LBUTTONDOWN、WM_LBUTTONUPなどが勝手に走ります。
WM_POINTERDOWNのみで処理した場合、WM_MOUSEMOVE、WM_LBUTTONDOWN、WM_LBUTTONUPは走りません。
この特性があるみたいです。

今回の不具合の現象は、上記の特性を見ると、WM_TOUCH経由は、マウスメッセージ連動されているので、
他のアプリで、ポップアップメニューが開いている場合、自分のウインド(WS_EX_NOACTIVATE)をタッチしたら、
マウスがポップアップメニュではない、どこかの座標をクリックしたと認識して、
ポップアップメニューが閉じちゃう現象が起きていたと思われます。

474 名前:デフォルトの名無しさん mailto:sage [2015/05/28(木) 17:00:30.45 ID:lhfHDjjO.net]
質問です。
CreateWindowで異なるアプリケーションのウインド上に、子ウインドは作成できるのでしょうか?

475 名前:デフォルトの名無しさん mailto:sage [2015/05/28(木) 17:04:17.89 ID:BPOchcgZ.net]
>>465
作れる。スクリーンセーバーのプレビューみたいに

476 名前:デフォルトの名無しさん mailto:sage [2015/05/28(木) 17:07:43.26 ID:06Vv4FJt.net]
風が語り掛けます

477 名前:デフォルトの名無しさん mailto:sage [2015/05/28(木) 17:36:24.01 ID:lhfHDjjO.net]
早速テストしました。
他のウインドに自分の子ウィンドを貼り付けられました。
不具合が出ました。
ターゲットとなる実行名 ChildTest1 ウインド名のクラス名 ChildTest1 子ウインドのクラス名 MyChild
[ChildTest1]
+--- MyChild
があったとします。
自分の子を貼り付けたい子ウインドのクラス名 MyChildEx
hTarget = FindWindow(L"ChildTest1",NULL);
hChild=CreateWindow(L"MyChildEx",L"MyChildEx",WS_CHILD | WS_OVERLAPPEDWINDOW | WS_VISIBLE,0,0,200,200,hTarget,0,hInst,0);
[ChildTest1]
+--- MyChild
+--- MyChildEx
と表示はできたのですが、MyChildExまたはMyChildのウインドウを動かすとMyChildなどの画面が崩れたりします。

これは、異なるスレッドが原因なのでしょうか?
それとも、ウインドスタイルのオプションが足りないということでしょうか?

478 名前:デフォルトの名無しさん mailto:sage [2015/05/28(木) 17:46:06.79 ID:9DjcQz3v.net]
ウィンドウスタイルじゃね
https://github.com/andanteyk/ElectronicObserver/blob/master/ElectronicObserver/Window/Integrate/FormIntegrated.cs#L303

479 名前:デフォルトの名無しさん mailto:sage [2015/05/28(木) 17:51:33.44 ID:BPOchcgZ.net]
>WS_CHILD | WS_OVERLAPPEDWINDOW

組み合わせが間違えてる。ウィンドウスタイルの勉強からやり直し。

480 名前:デフォルトの名無しさん mailto:sage [2015/05/28(木) 17:59:08.51 ID:Dc/ggFvR.net]
Unicodeで決め打ちなら CreateWindowWしようぜ。
今のままじゃ、#define UNICODE 外したらコケるぞ



481 名前:デフォルトの名無しさん mailto:sage [2015/05/28(木) 18:04:16.41 ID:lhfHDjjO.net]
>>470
あ、そうですね。手抜きコードしてたらそのようでした。

482 名前:デフォルトの名無しさん mailto:sage [2015/05/28(木) 18:33:07.81 ID:nbjUOWor.net]
ここはスパイウェア技術の質問スレみたいだな

483 名前:デフォルトの名無しさん mailto:sage [2015/05/28(木) 19:57:37.48 ID:s/u4gtlI.net]
こんなショボい話題でスパイウェア?

484 名前:デフォルトの名無しさん mailto:sage [2015/05/28(木) 20:06:02.00 ID:Dc/ggFvR.net]
東北弁だよ、たぶん。スパイ(失敗)ウェア

485 名前:デフォルトの名無しさん mailto:sage [2015/05/28(木) 23:08:49.45 ID:N7liwE7G.net]
似非東北弁うぜー

486 名前:デフォルトの名無しさん mailto:sage [2015/05/29(金) 03:04:11.67 ID:YObp/eEX.net]
Windows8の場合、メトロスタイルに移動時、デスクトップに復帰時、ウインドウメッセージは、何がくるのでしょうか?
WM_なんだろう?

487 名前:デフォルトの名無しさん mailto:sage [2015/05/29(金) 05:29: ]
[ここ壊れてます]

488 名前:37.46 ID:YObp/eEX.net mailto: WM_メッセージなんてなかったorz
https://social.msdn.microsoft.com/Forums/ja-JP/21fde3c7-30a5-4b38-8711-5086c591694c/windows81-win32-?forum=windowsgeneraldevelopmentissuesja
[]
[ここ壊れてます]

489 名前:デフォルトの名無しさん mailto:sage [2015/05/29(金) 12:27:23.52 ID:cPU9CNQ0.net]
そんなメッセージは見たことも必要性も感じないな
ユーザが何してようがしったこっちゃない

490 名前:デフォルトの名無しさん mailto:sage [2015/05/29(金) 12:31:46.95 ID:cPU9CNQ0.net]
てか、ブラウザのテキストボックスの上に自分のテキストボックスを貼り付けて、入力をフックしたいんだろ



491 名前:デフォルトの名無しさん mailto:sage [2015/05/29(金) 13:14:52.12 ID:41ckpjjx.net]
お前の脳みそ、フックされてるぞ?

492 名前:デフォルトの名無しさん mailto:sage [2015/05/29(金) 13:52:33.02 ID:cPU9CNQ0.net]
自分のプログラムから、他人のウィンドウの上に子ウィンドウを乗せるシチュエーションが想像できない
自分のソフトなら、そっちでやればよい
IMEなら、そっちの仕組みを使えばよい

WMSIZEが飛んでこないだろ

493 名前:デフォルトの名無しさん mailto:sage [2015/05/30(土) 17:41:29.50 ID:AsLlcQ98.net]
FindFirstFileでディレクトリ内のフォルダを取得しようとしたんですが、Program Filesのようにパスにスペースが入ると取得できないようになりました
(""で括ったりスペースを~で置き換えたりしてもダメでした) こういう場合はどうすれば良いんですかね・・・


HANDLE hFind;
WIN32_FIND_DATA win32fd;
char m_cFind[MAX_PATH];
int bank_max = 0;
string bank_name[99];

::strcpy_s(m_cFind, MAX_PATH, "D:\\\"Program Files\"");   //D:\\test なら問題なく取得できた
::strcat_s(m_cFind, MAX_PATH, "\\");
::strcat_s(m_cFind, MAX_PATH, "*");

hFind = FindFirstFile(m_cFind, &win32fd);
do {
 if (hFind != INVALID_HANDLE_VALUE) {
  if (strcmp(win32fd.cFileName, ".") && strcmp(win32fd.cFileName, "..")){
   if (win32fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
    bank_name[bank_max] = win32fd.cFileName;
    bank_max++;
   }
  }
 }
} while (FindNextFile(hFind, &win32fd));
FindClose(hFind);

494 名前:デフォルトの名無しさん mailto:sage [2015/05/30(土) 17:53:27.81 ID:j4YY/rva.net]
>::strcpy_s(m_cFind, MAX_PATH, "D:\\\"Program Files\"");

探そうとするファイルは「D:\"Program Files"」にあるの?

495 名前:デフォルトの名無しさん mailto:sage [2015/05/30(土) 18:08:52.77 ID:AsLlcQ98.net]
>>484
最初は「D:\\Program Files」でやったんですけど、ダメだったんで「D:\\Program~Files」とか「D:\\\"Program Files\"」とか
色々試してみたんです

496 名前:デフォルトの名無しさん mailto:sage [2015/05/30(土) 18:12:59.70 ID:Cqishw4w.net]
UACに引っかかってるだけじゃないでしょうか

497 名前:デフォルトの名無しさん mailto:sage [2015/05/30(土) 18:18:48.75 ID:MWyagaYk.net]
\"D:\\Program Files\"
じゃないのか

498 名前:デフォルトの名無しさん mailto:sage [2015/05/30(土) 18:36:56.59 ID:AsLlcQ98.net]
>>486
Dドライブに自分で作ったProgram Filesだからそれは無いはづ・・・

\"D:\\Program Files\"でもダメですなぁ。別の関数じゃないとアカンのだろうか

499 名前:デフォルトの名無しさん mailto:sage [2015/05/30(土) 18:41:08.39 ID:j4YY/rva.net]
「Program Files」じゃなくて「Program Files」というオチじゃないよな?

500 名前:デフォルトの名無しさん mailto:sage [2015/05/30(土) 18:55:11.66 ID:AsLlcQ98.net]
>>489
エクスプローラからちゃんとコピペしてもダメですねぇ・・


スペース無いパスで""入れてみたんだけどアクセスできなくなった。""が対応してないって事かなぁ

アクセスできる  D:\\LTspice
アクセスできない \"D:\\LTspice\"



501 名前:デフォルトの名無しさん mailto:sage [2015/05/30(土) 18:55:53.77 ID:YkyYlSQN.net]
>>488
そもそも:strcpyもstrcatもただの文字列操作だぞ

::strcpy_s(m_cFind, MAX_PATH, "D:\\\"Program Files\"");   //D:\\test なら問題なく取得できた
::strcat_s(m_cFind, MAX_PATH, "\\");
::strcat_s(m_cFind, MAX_PATH, "*");

実行した結果の
D:\"Program Files"\*
こんなディレクトリ名ありえんだろ

自作フォルダなら実際のフォルダ名が半角じゃなくて全角になっているとか気づきにくいミスをしている可能性があるから
手入力じゃなくてコピペするようにするとかしてみたらどうだ?

502 名前:デフォルトの名無しさん mailto:sage [2015/05/30(土) 19:06:27.28 ID:YkyYlSQN.net]
>>490
"" が必要になるのはコマンドラインなどのように、空白で文字列の分割が行われてしまう場合だけ。

例えばCreateProcessのlpszImageNameかlpszCommandLinのいずれかでコマンドラインを指定する場合など。

とりあえず試したが(_s付きのほうは試してなくて_s無しのほうで)
空白ありでもちゃんとディレクトリ内のフォルダ名を取得できる。

ちなみにUAC効いてるProgram FilesとProgram Files (x86)で、だ。 []
[ここ壊れてます]

504 名前:デフォルトの名無しさん mailto:sage [2015/05/30(土) 19:11:52.43 ID:gEFTPVJN.net]
>>490
LTspice仲間発見!

505 名前:デフォルトの名無しさん mailto:sage [2015/05/30(土) 19:18:47.35 ID:j4YY/rva.net]
「括弧でくくってみました」とか「スペースを~に変えてみました」とか、
自分のやっていることをちゃんと理解できていないご様子。

:: FindFirstFile() が INVALID_HANDLE_VALUE を返すなら、::GetLastError() でもしたほうがまだ賢い。

506 名前:デフォルトの名無しさん mailto:sage [2015/05/30(土) 19:21:05.30 ID:AsLlcQ98.net]
>>492
これでバッチリいけたわありがとナス!やっぱネットのソースコピペだけじゃ嵌るね・・

::strcpy(m_cFind, "D:\\Program Files");
::strcat(m_cFind, "\\");
::strcat(m_cFind, "*");
hFind = FindFirstFile(m_cFind, &win32fd);


>>493
アナログ回路屋さん乙

507 名前:デフォルトの名無しさん mailto:sage [2015/05/30(土) 19:29:42.57 ID:YkyYlSQN.net]
>>495
ってことは_s付きの関数に問題があったってことでね?

::strcpy_s(m_cFind, MAX_PATH, "D:\\Program Files");
::strcat_s(m_cFind, MAX_PATH, "\\");
::strcat_s(m_cFind, MAX_PATH, "*");

これ実行後の m_cFind はどうなっているんだ?

可能性としては MAX_PATH の定義がおかしくなっているためすべてをコピーしきれないとか。

508 名前:デフォルトの名無しさん mailto:sage [2015/05/30(土) 19:31:52.41 ID:j4YY/rva.net]
すでに文字列が代入されているから残っているバッファは MAX_PATH じゃないというオチ

509 名前:デフォルトの名無しさん mailto:sage [2015/05/30(土) 19:49:30.64 ID:AsLlcQ98.net]
>>496
やり直してみたら全く一緒や・・ なんかもっと分からんくなってきたw

::strcpy(m_cFind, "D:\\Program Files");
::strcat(m_cFind, "\\");
::strcat(m_cFind, "*");

::strcpy_s(m_cFind2, MAX_PATH, "D:\\Program Files");
::strcat_s(m_cFind2, MAX_PATH, "\\");
::strcat_s(m_cFind2, MAX_PATH, "*");

ofstream OUTOOO("aaa.txt");
OUTOOO << m_cFind << endl << m_cFind2 << endl;
OUTOOO.close();


結果
D:\Program Files\*
D:\Program Files\*

510 名前:デフォルトの名無しさん [2015/05/31(日) 07:25:39.10 ID:EvgAS0zw.net]
>最初は「D:\\Program Files」でやったんですけど、ダメだったんで

なんだ
ただの嘘つきか



511 名前:デフォルトの名無しさん mailto:sage [2015/05/31(日) 17:43:49.58 ID:JnLugUH0.net]
せんぱい、プログラミングおしえて?

512 名前:デフォルトの名無しさん mailto:sage [2015/05/31(日) 18:08:10.82 ID:t8jPrrOm.net]
>>500
最新版のVisual Studioをインストールしろ。
printfでHello, worldを表示する次のようなプログラムhello.cppを作れ。
#include <stdio.h>
int main(void) {
printf("Hello, world\n");
return 0;
}
できたら、MessageBoxでHello, worldを表示するプログラムにしろ。

513 名前:デフォルトの名無しさん mailto:sage [2015/05/31(日) 18:25:50.43 ID:AQY7I4dQ.net]
なにも teratail のキャッチコピーにレスしなくても

514 名前:デフォルトの名無しさん mailto:sage [2015/05/31(日) 18:46:44.54 ID:t8jPrrOm.net]
>>502
キャッチに反応しなくてもいいとはおかしい。
ロボットに変なこと教えるなよ。
helloもhelp meもキャッチコピーだ。

515 名前:デフォルトの名無しさん mailto:sage [2015/05/31(日) 18:59:10.57 ID:t8jPrrOm.net]
この世界では知的ロボットが混乱するようなキャッチコピーは禁止されている。

516 名前:デフォルトの名無しさん mailto:sage [2015/05/31(日) 19:38:43.33 ID:HdJipRY3.net]
鳥を外すな鬱陶しい

517 名前:デフォルトの名無しさん mailto:sage [2015/05/31(日) 20:25:38.58 ID:JnLugUH0.net]
えっ・・・
日本語で質問できるん?

518 名前:デフォルトの名無しさん [2015/05/31(日) 21:31:40.03 ID:aHKj8Hug.net]
あ、リトル。

519 名前:デフォルトの名無しさん mailto:sage [2015/05/31(日) 23:03:10.09 ID:jHkPthzb.net]
おいQZお前にはこのスレは敷居が高すぎるから入ってくるなよ自演豚

520 名前:デフォルトの名無しさん [2015/06/01(月) 10:15:47.22 ID:/nRdew/3.net]
GetMessageの定義では戻り値がBOOLとなっているのにMSDNを見ると「0以外の値または0または-1を返す」と書いてあります
矛盾している気がするのですがどういうことですか?



521 名前:デフォルトの名無しさん [2015/06/01(月) 10:17:05.15 ID:/nRdew/3.net]
すみません
typedef int BOOL
って見つけました
失礼しました

522 名前:デフォルトの名無しさん mailto:sage [2015/06/01(月) 10:55:26.91 ID:hih5o8Kt.net]
BOOL は true/false じゃないことを頭に叩き込むべし

(b == TRUE) と書いてやられるのは誰もが通る道

523 名前:デフォルトの名無しさん mailto:sage [2015/06/01(月) 11:00:24.48 ID:H7Yr0w9V.net]
b == FALSE
b != FALSE
にすべし

524 名前:デフォルトの名無しさん mailto:sage [2015/06/01(月) 11:04:54.39 ID:Q3ianLBA.net]
やられたことないなあ

b != FALSE なら b でいいし
b == FALSE なら !b でいいだろ?

525 名前:デフォルトの名無しさん mailto:sage [2015/06/01(月) 11:13:04.14 ID:H7Yr0w9V.net]
0 != or 0 or -1に矛盾を感じるって事は
TRUE == or FALSE == と明示的に書きたいんだろうしって事ね

526 名前:デフォルトの名無しさん mailto:sage [2015/06/01(月) 11:23:30.93 ID:Q3ianLBA.net]
GetMessageの戻り値はイカれてるが
BOOLは比較する必要ないだろ

527 名前:デフォルトの名無しさん mailto:sage [2015/06/01(月) 12:08:18.51 ID:gkan/OPI.net]
いつからこの糞仕様引きずってんだろ
9xの頃もこうだったか?

528 名前:デフォルトの名無しさん mailto:sage [2015/06/01(月) 12:13:04.93 ID:Lw3ov3gq.net]
GetMessage() の戻り値が -1 になるのは「関数が失敗した」ときだけだから大目に見てやれw

529 名前:デフォルトの名無しさん mailto:sage [2015/06/01(月) 12:25:21.88 ID:H7Yr0w9V.net]
>>515
必要かどうかを言ってるんじゃないんだが

530 名前:デフォルトの名無しさん mailto:sage [2015/06/01(月) 14:38:57.15 ID:hih5o8Kt.net]
>>516
多分その頃は BOOL とか型名そのものをみんな無視してたんじゃないかな
他言語から逆輸入・再発見された感がある



531 名前:デフォルトの名無しさん mailto:sage [2015/06/01(月) 14:43:08.35 ID:s3ZcdtNu.net]
でもBOOLなのに0、1以外を返すこともあるって・・・
なんでintにしなかったんだろう。

532 名前:デフォルトの名無しさん mailto:sage [2015/06/01(月) 14:57:00.38 ID:Lw3ov3gq.net]
Windows3.0 の時代には 関数に失敗しても 戻り値は 0 だった。

>BOOLなのに0、1以外を返すこともある
「0、1以外」ではなく「0, 0以外」
「1以外」なんて考えてると、510 の書いているように (b == TRUE) なんてコトを平気でやっちゃうぞ

533 名前:デフォルトの名無しさん mailto:sage [2015/06/01(月) 16:23:37.99 ID:s3ZcdtNu.net]
何言ってんの?
BOOLには0、1以外入れちゃダメだろ。
「Cでは非0が真だから、BOOLに2入れちゃお」ってどんな判断だよ。
そんなの、BOOLは実はintだから-1返しても良いよね!っていう、
件のMSの発想と同じじゃねーか。わざわざそんないたずらする意味あるか?
BOOLの真に1を使うのはそれなりの根拠があるよ。
まず、TRUEが1に定義されていること。でもこれはMSが勝手にやっていることでしかないんだがな。
それでもWin32APIを使う上ではMSの流儀にあわせるべきだよね。
つぎに、Cは比較や論理演算の結果が真になった場合、1を返すと規格で決まっている。
また、C++のboolをintにキャストすると0、1になる。
これらをふまえると、BOOLに2や3を入れようという発想は生まれないはずだ。
>でもBOOLなのに0、1以外を返すこともあるって・・・
なるほど、問題ない文章じゃないか。

534 名前:デフォルトの名無しさん mailto:sage [2015/06/01(月) 16:29:06.59 ID:TGyjCQFp.net]
>>521
日本語勉強してからまた来い

535 名前:デフォルトの名無しさん mailto:sage [2015/06/01(月) 16:29:28.74 ID:s3ZcdtNu.net]
それじゃなくてもMSはTRUEを1に定義するという無茶をやってのけているわけだから、
その上で戻り値がBOOLのAPIで真に1以外が使われたりしたら、
もうやっていることが無茶苦茶だよね。何がしたいんだと。
戻り値がBOOLなのに0、1以外が返ったら、批判してよい。

536 名前:デフォルトの名無しさん mailto:sage [2015/06/01(月) 16:30:17.37 ID:TGyjCQFp.net]
>>522
>BOOLには0、1以外入れちゃダメだろ。

入れてもいい

>>521 の言うように
BOOL に許される値は 0 と 0以外の任意の数 の二通り

537 名前:デフォルトの名無しさん mailto:sage [2015/06/01(月) 16:37:23.84 ID:0D/a6Ypk.net]
boolじゃないんだから別にいいがな
BOOLなのにTRUEかFALSE以外が入ってる
のはあんまりよくないんじゃないかなとは思うけど

538 名前:デフォルトの名無しさん mailto:sage [2015/06/01(月) 16:40:04.79 ID:Lw3ov3gq.net]
>>523
どっか日本語ヘンだった?

539 名前:デフォルトの名無しさん mailto:sage [2015/06/01(月) 16:57:05.84 ID:TGyjCQFp.net]
>>527
きみの読解力

540 名前:デフォルトの名無しさん mailto:sage [2015/06/01(月) 16:57:45.60 ID:TGyjCQFp.net]
>>526
BOOLなら-1はTRUEだよ



541 名前:デフォルトの名無しさん mailto:sage [2015/06/01(月) 17:19:42.51 ID:Lw3ov3gq.net]
難癖つけられただけか

542 名前:デフォルトの名無しさん mailto:sage [2015/06/01(月) 17:55:03.05 ID:o6FjTESK.net]
>>529
TRUE == 1 なんだからそれはおかしくね?
BOOL型の値にどんなビット表現があっても別に問題ないっしょ?

BOOLなら-1は真だよ は正しいと思うけど

543 名前:デフォルトの名無しさん mailto:sage [2015/06/01(月) 18:33:23.14 ID:5bGybq2H.net]
>>523
>Cは比較や論理演算の結果が真になった場合、1を返すと規格で決まっている。
でも入力は零か非零でみるんだよね‥

544 名前:デフォルトの名無しさん mailto:sage [2015/06/01(月) 19:31:09.47 ID:IvVhkElP.net]
この流れ、20年前にも見た。
またやってんのお前ら。

545 名前:デフォルトの名無しさん mailto:sage [2015/06/01(月) 19:34:41.03 ID:4i959FGz.net]
ハゲは黙ってろ

546 名前:デフォルトの名無しさん mailto:sage [2015/06/01(月) 19:54:53.91 ID:s3ZcdtNu.net]
だからさーお前らの言ってるのはAPIを呼び出す側の姿勢の問題だろ。
BOOLはintだから0、1以外の何が入ってるか分からんから、
そういう場合にも対応した安全なコード書けって観点だろ。
でも俺はそんなこと一言も言及してねーんだよ。

俺は戻り値がBOOLのAPIで、0、1以外が返るのは糞だ、と言ってるだけ。
こんなことは当たり前で、荒れる要素は全くない。
APIを設計する側のMSに文句を言っているだけで、
それを使うお前らに文句を言っているわけではない。
真の値にあえて1以外が使われる意味はあるか?
MS「今日は2にしてみよう。明日は3にしてみよう。」 おかしいだろ。
MSは自らTRUEを1に定義してるんだよ。だったら真の値に1を使うのは当たり前だろ。
あえて他の値を使う必要性もないから、当然だよな。
どこに反論の余地があるの?

547 名前:デフォルトの名無しさん mailto:sage [2015/06/01(月) 20:18:56.34 ID:s3ZcdtNu.net]
それともあれか?お前らはMSにBOOLが戻り地のAPIで、
真の値に1以外を使って欲しいのか?何の目的で?
別に1で構わないなら、俺の発言に文句ないはずだよな。

それに世の中にはif( ret == TRUE )とかいう糞みたいなコードだって散らばってるわけ。
TRUEを1と定義したのはMSなので、これはMSの責任でもあるわけ。
MSはこういった糞コードでもプログラムがクラッシュしないようにAPIの仕様を定めなければならない立場。
今回のケースでは、単に真の値に1を使うようにするというだけのことなので、そうするのは当たり前。
他の値を使う意味が全くないからな。2や3じゃなく、1を使えばそれで済む話。ノーコスト。
この場面で、あえて他の値を使ったとしたら、糞だろ。
そういう消極的な観点からも、戻り値がBOOLのAPIで0、1以外を返すのは
糞仕様なわけ。お前らがif( ret == TRUE )と書かないのと全く同じ理由で、
逆にMS側はif( ret == TRUE )と書かれている糞コードでもクラッシュしないように勤めるの。
可能な限り無意味なトラブルを避けるのは、使う側もMSも同じ。

548 名前:デフォルトの名無しさん mailto:sage [2015/06/01(月) 20:21:09.10 ID:4i959FGz.net]
長いよハゲ

549 名前:デフォルトの名無しさん mailto:sage [2015/06/01(月) 23:10:00.30 ID:cqscK3va.net]
週刊報道Bizストリート

550 名前:デフォルトの名無しさん mailto:sage [2015/06/02(火) 00:48:43.31 ID:opKMSndu.net]
BOOLもあれだがそれよりも、いまだに戻り値がintで成功時に0を返すなどという
糞仕様の関数書く奴をどうにかしてくれ。



551 名前:デフォルトの名無しさん mailto:sage [2015/06/02(火) 03:23:52.68 ID:B/m18j7i.net]
保存ダイアログ出そうと思ってコード拾ってきたんですが、
一番下のよくわからない2行がないとダイアログが出ないんですけどそういうモンなんですかね・・・
普通に動いているからまぁ良いんだけど謎すぎて・・

char InBuf[256];
OPENFILENAME ofn;

memset(&ofn, 0, sizeof(OPENFILENAME));
ofn.lStructSize = sizeof(OPENFILENAME);
ofn.hwndOwner = (HWND)

552 名前:frame->getSystemWindow();
ofn.lpstrFilter = "Preset File {*.aaa}\0*.aaa\0\0\0";
ofn.lpstrFile = InBuf;
ofn.nMaxFile = MAX_PATH;
ofn.nMaxFileTitle = MAX_PATH;
ofn.lpstrDefExt = "aaa";
ofn.lpstrInitialDir = (char *)((VstPlugin*)effect)->preset_dir.c_str();
ofn.Flags = OFN_OVERWRITEPROMPT;
if (GetSaveFileName(&ofn)) ((VstPlugin*)effect)->export_preset(InBuf);

char buf[256];  //なぜかこれが無いとダイアログが出ない
sprintf(buf, "%s", ofn.lpstrFile);  //なぜかこれが無いとダイアログが出ない
[]
[ここ壊れてます]

553 名前:デフォルトの名無しさん mailto:sage [2015/06/02(火) 04:27:05.27 ID:GiY1la32.net]
試してないけどだいたい原因になりそうなのは想像付くよ

>lpstrFile
>「ファイル名」エディットコントロールを初期化するのに使用されるファイル名を格納したバッファのアドレスを指定します。初期化が必要ない場合には、バッファの先頭にヌル文字を格納しておきます。

これに従ってInBufを初期化してください
あとMAX_PATHは260バイトなのでInBufをその分確保してください

554 名前:デフォルトの名無しさん mailto:sage [2015/06/02(火) 04:54:10.97 ID:B/m18j7i.net]
>>541
おおほんとだ。char InBuf[256]; → char InBuf[MAX_PATH] = { NULL }; に変えたら最後の2行消してもダイアログ出たw
これで安心して使えるよありがとう

555 名前:デフォルトの名無しさん mailto:sage [2015/06/02(火) 07:37:04.28 ID:3K9K5nvj.net]
>>542の作ったアプリのユーザーは安心して使えないだろうが

556 名前:デフォルトの名無しさん mailto:sage [2015/06/02(火) 07:57:16.19 ID:grfnvhLc.net]
ワロタ

557 名前:デフォルトの名無しさん [2015/06/02(火) 08:13:50.44 ID:a3qlL/7f.net]
馬鹿には無理

558 名前:デフォルトの名無しさん mailto:sage [2015/06/02(火) 08:16:29.73 ID:a3qlL/7f.net]
>>539
strcmp

559 名前:デフォルトの名無しさん mailto:sage [2015/06/02(火) 08:17:37.90 ID:a3qlL/7f.net]
>>539
main もあったわ

560 名前:デフォルトの名無しさん mailto:sage [2015/06/02(火) 08:18:11.25 ID:23FH/Mb/.net]
ここって質問スレだよな
いつから素人が駆け出しを叩くスレになったんだ



561 名前:デフォルトの名無しさん mailto:sage [2015/06/02(火) 08:34:51.25 ID:grfnvhLc.net]
質問スレに戻ったのは最近のことで
Part90あたりからPart110くらいまでは
「知らないならレスしないでください。ウザイだけです」
に代表される、煽りと罵倒のスレでしたよ

562 名前:デフォルトの名無しさん mailto:sage [2015/06/02(火) 10:33:03.90 ID:c7PbY7Ns.net]
ウィンドプロシージャとWinMainって別々のファイルに分けた方が見やすいよね?

563 名前:デフォルトの名無しさん mailto:sage [2015/06/02(火) 10:49:58.79 ID:qFTxEdTq.net]
好きにしろ

564 名前:デフォルトの名無しさん mailto:sage [2015/06/02(火) 10:51:25.21 ID:QEt0ogBL.net]
いや、ウインドウが幾つになろうと一つのソースにまとめるべき

565 名前:デフォルトの名無しさん mailto:sage [2015/06/02(火) 11:25:48.48 ID:4AmpqNUq.net]
オレの .cpp には _tWinMain しかない

566 名前:デフォルトの名無しさん mailto:sage [2015/06/02(火) 12:17:09.92 ID:O9gETs5A.net]
>>546
一致が成功って決まってる訳じゃなかろ

567 名前:デフォルトの名無しさん mailto:sage [2015/06/02(火) 12:21:29.62 ID:Y5fGC49j.net]
この続きは言語スレでやれ

568 名前:デフォルトの名無しさん mailto:sage [2015/06/02(火) 12:26:28.11 ID:4q1LDLUC.net]
>>554
負論理だとFalseが成功ってこともある罠

569 名前:デフォルトの名無しさん [2015/06/02(火) 17:20:53.79 ID:d2/EM2sA.net]
>539
ir9.jp/prog/ayu/win32err.htm

570 名前:デフォルトの名無しさん mailto:sage [2015/06/02(火) 18:40:52.51 ID:csi1IGCv.net]
int型関数で戻り値で成功か失敗かを
返すなら
0 成功
1 失敗
でいいんじゃないか?
失敗の場合の色んな情報を返すなら
0〜FFFFまで自分で好きなようにエラーコードを割り当てればいいんじゃないか?



571 名前:デフォルトの名無しさん mailto:sage [2015/06/02(火) 18:45:05.41 ID:eq8fi9nB.net]
0以上が成功0未満が失敗で

572 名前:デフォルトの名無しさん mailto:sage [2015/06/02(火) 18:48:01.13 ID:csi1IGCv.net]
成功か失敗かを返すなら
成功は0だろ。

573 名前:デフォルトの名無しさん mailto:sage [2015/06/02(火) 19:17:58.20 ID:grfnvhLc.net]
もういいよハゲ

574 名前:デフォルトの名無しさん [2015/06/02(火) 19:20:11.22 ID:d2/EM2sA.net]
Windows用のドライバやってたころ、カーネルからのエラーコードを
戻り値にしてたから成功は0、失敗はエラーコードとかよくやってた

575 名前:デフォルトの名無しさん [2015/06/02(火) 20:18:08.17 ID:w3C6933l.net]
負論理つーてもIOL>IOHなわけでもねえんだが今どきは

576 名前:デフォルトの名無しさん [2015/06/03(水) 09:32:03.99 ID:fBuP9Jsx.net]
>>558
天才 ktkr

577 名前:デフォルトの名無しさん [2015/06/03(水) 09:32:48.88 ID:fBuP9Jsx.net]
>>560
その通り
成功に理由はいらない

578 名前:デフォルトの名無しさん mailto:sage [2015/06/03(水) 09:49:05.70 ID:Q+LF6TWf.net]
僕の関数が失敗した5つの理由

579 名前:デフォルトの名無しさん mailto:sage [2015/06/03(水) 10:05:48.60 ID:4f4dm0TI.net]
新書のタイトルみたいだな

580 名前:デフォルトの名無しさん mailto:sage [2015/06/03(水) 10:11:25.13 ID:Mg6w8zFx.net]
>>565-566
色々勉強になったわ
ありがとう
seiko-forever.seesaa.net/article/406028395.html
https://www.youtube.com/watch?v=KJa9ViwcLtc



581 名前:デフォルトの名無しさん mailto:sage [2015/06/03(水) 10:16:58.19 ID:Mg6w8zFx.net]
ごめん1個目のリンクはゴミです

582 名前:デフォルトの名無しさん mailto:sage [2015/06/03(水) 14:01:43.28 ID:oCZofESS.net]
これじゃね
uchidak.cocolog-nifty.com/blog/2011/04/post-f092.html

583 名前:デフォルトの名無しさん mailto:sage [2015/06/03(水) 14:16:15.93 ID:u1dB80rd.net]
>>569
2個めもゴミだろがハゲ

584 名前:デフォルトの名無しさん mailto:sage [2015/06/03(水) 14:28:37.02 ID:oCZofESS.net]
Failure makes success.

585 名前:デフォルトの名無しさん mailto:sage [2015/06/05(金) 15:36:47.82 ID:Cf1vS3sG.net]
COPYRECT

586 名前:デフォルトの名無しさん mailto:sage [2015/06/06(土) 02:46:17.61 ID:GYjDajMQ.net]
C言語Win32APIだけで乱数
geoserver.sak ura.ne.jp/blog/c%e8%a8%80%e8%aa%9e/c%e8%a8%80%e8%aa%9ewin32api%e3%81%a0%e3%81%91%e3%81%a7%e4%b9%b1%e6%95%b0/


これを使って短時間で乱数量産するとエラーで止まるから、プログラムの最初で初期化
CryptAcquireContext(&hProv, NULL, NULL, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT);

して、プログラムの最後で解放
CryptReleaseContext(hProv, NULL);

しようと思ったんですが、こういうのって初期化〜解放の間隔が何日何週間とかになっても大丈夫なんですかね

587 名前:デフォルトの名無しさん mailto:sage [2015/06/06(土) 10:21:43.72 ID:selLq9/m.net]
質問があります。

特定の範囲に収まるフォントサイズを逆算するAPIってありますか?

あるならその関数名称を教えていただきたいですが…

うまく探しきれなくて、申し訳ありません。

588 名前:デフォルトの名無しさん mailto:sage [2015/06/06(土) 10:51:01.18 ID:DXSt7rl7.net]
つGetFontSizeInRect()

589 名前:デフォルトの名無しさん mailto:sage [2015/06/06(土) 10:57:49.54 ID:0CBA8Axe.net]
>>575
高さはすぐに計算できるけど、可変ピッチなフォントだと同じフォントでも文字の幅が違うから、
DT_CALCRECTをつけたDrawText()をフォントサイズ変えてforなりwhileでぶんまわして、
特定の範囲(RECT)に収まるかどうかチェックすれば?

590 名前:デフォルトの名無しさん mailto:sage [2015/06/06(土) 11:06:52.77 ID:selLq9/m.net]
>>577
ありがとうございます。

やはり、範囲内に収まるかチェックするんですね…



591 名前:デフォルトの名無しさん mailto:sage [2015/06/06(土) 11:24:04.60 ID:selLq9/m.net]
ナウレッジになんかあったー

皆様ありがとう
https://support.microsoft.com/en-us/kb/200262

592 名前:デフォルトの名無しさん mailto:sage [2015/06/06(土) 11:32:09.11 ID:9TAyXKx2.net]
>>574
というか毎回hProvを初期化しなければ止まらなくなるの?
もしそうならエントロピープールをシードにしか使ってないんだろうか…
Crypt系関数って詳しい仕様をぜんぜん公開してないから疑わしく見えて仕方がない

ちなみに俺の環境だと256bitで4000万回実行しても止まらなかったので再現は諦めた
Win7 x64

593 名前:デフォルトの名無しさん mailto:sage [2015/06/06(土) 11:55:27.98 ID:xKO3x+L2.net]
>>574
最初に与

594 名前:えられた事実は真実と錯覚していないか?
俺もこの現象に遭遇したことがないな
[]
[ここ壊れてます]

595 名前:デフォルトの名無しさん mailto:sage [2015/06/06(土) 14:56:55.03 ID:GYjDajMQ.net]
>>580-581
コメントアウトしてたのを戻してもっかいやってみたら今度は再現しませんでした
何かの偶然だったという事にしようと思います・・・
仕様が公開されてないなら判断しようが無いですね。。

596 名前:デフォルトの名無しさん mailto:sage [2015/06/08(月) 23:35:39.81 ID:DpcdWlc7.net]
ディスプレイの物理サイズを正確に調べる方法ってありますか?GetDeviceCaps関連でしょうか?
Windows8とかだとスケーリングとか任意で設定できるっぽいので、スケーリングの値など、関連する情報を取得できる方法が知りたいです。

597 名前:デフォルトの名無しさん mailto:sage [2015/06/08(月) 23:42:21.16 ID:nfC7C2fa.net]
GetSystemMetric

598 名前:デフォルトの名無しさん mailto:sage [2015/06/09(火) 00:24:50.62 ID:jnEs2kjX.net]
自己解決
こっちで書いてあった。
https://social.msdn.microsoft.com/Forums/ja-JP/97b142ce-f394-4c4b-ae8b-28dc9b547520?forum=vcgeneralja

Windows8.1API
GetDPIForMonitor

599 名前:デフォルトの名無しさん mailto:sage [2015/06/09(火) 00:36:54.36 ID:BYQG69VH.net]
物理サイズを調べるならモノサシ

600 名前:デフォルトの名無しさん mailto:sage [2015/06/09(火) 08:36:21.58 ID:yWuzViB0.net]
このさゆりってアカウント
よく見かけるな



601 名前:デフォルトの名無しさん mailto:sage [2015/06/09(火) 20:05:19.25 ID:L65shhvt.net]
EnumWindows の成功とは、
コールバック関数が FALSE を返さずに全トップレベルウィンドウの列挙を終えるという意味でしょうか?

602 名前:デフォルトの名無しさん mailto:sage [2015/06/09(火) 20:17:50.75 ID:BYQG69VH.net]
コールバック関数にウィンドウのハンドルとLPARAM値を渡した時点で成功だろう

603 名前:デフォルトの名無しさん mailto:sage [2015/06/09(火) 20:22:30.18 ID:M4GdbwfJ.net]
英語版にはEnumWindowsProcが0を返すとEnumWindowsも0を返すって書いてあるな
その場合はSetLastErrorで理由を示しなさいだって
大抵は自分自身でEnumWindowsProc書いてるだろうから不要な気がするがなあ

604 名前:デフォルトの名無しさん mailto:sage [2015/06/09(火) 20:32:16.40 ID:D/MCT83A.net]
>>590
それはEnumWindowsの呼び出し側とEnumWindowsProcは違うから、
EnumWindowsProcでの列挙の中止をEnumWindows 呼び出し側に伝えるためのものでしょ。

自分で実装するならエラー(列挙の中止)の理由ぐらい分かるだろってのは分かるけど。

605 名前:587 mailto:sage [2015/06/09(火) 20:44:33.10 ID:L65shhvt.net]
>>589-591
ありがとうございます
確かに英語版の方がもう少し踏み込んで書いてましたね
読んだつもりだったのですが・・・

EnumWindows でウィンドウを探して、
見付けたらコールバック関数で FALSE を返して打ち切ってたんですが、
見付けた場合に戻り値が FALSE になってて、小一時間悩んでました
「列挙する関数だから、途中で終了したら失敗」
って言われたら納得はできるんですが、いまいち曖昧ですね・・・

606 名前:デフォルトの名無しさん mailto:sage [2015/06/09(火) 21:03:00.42 ID:D/MCT83A.net]
途中で終了したら失敗というよりかは「失敗か中止」で0が返るって感じじゃないかな。

EnumWindowsProcが0を返す以外では EnumWindows は 0 を返さない(失敗とならない)っていうなら別だけど。
おそらくEnumWindowsProcが0を返す以外にも EnumWindows が失敗することはあるはずだから。
で、0が返ってきた原因として、関数が失敗したのかユーザコードによって中止されたのかは GetLastError で判断してねって。

607 名前:デフォルトの名無しさん mailto:sage [2015/06/11(木) 00:31:56.40 ID:9SjF1U/3.net]
画面の解像度をユーザーが変更した場合、解像度の変化を取得する方法ってありませんか?
タイマーなどでデスクトップのウインドサイズの変化を常に監視する以外のやり方が知りたいです。
通知メッセージってなにかあるのでしょうか?

608 名前:デフォルトの名無しさん mailto:sage [2015/06/11(木) 00:39:09.69 ID:b7rcev9j.net]
WM_DISPLAYCHANGE
LPARAMに解像度

609 名前:デフォルトの名無しさん mailto:sage [2015/06/11(木) 01:47:20.43 ID:9SjF1U/3.net]
>>595
感謝です。

610 名前:デフォルトの名無しさん mailto:sage [2015/06/11(木) 08:44:41.69 ID:tkWwvfmc.net]
こう言うのは探しにくいよな
メッセージ名が分かれば探せるが、目的からの逆引きは、辞書から言葉を探す行為
全ページ読んでも無かったりする



611 名前:デフォルトの名無しさん mailto:sage [2015/06/12(金) 00:23:50.34 ID:vn7j7Ubu.net]
二つのwindowがあって片方のwindowはもう片方のwindowの常に前面に配置するってどうすればいいでしょうか?

612 名前:デフォルトの名無しさん mailto:sage [2015/06/12(金) 00:31:00.20 ID:VFN7XLRp.net]
>>598
SetWindowPosで、HWND_TOPかHWND_TOPMOSTを設定
必要なら、CreateWindowEx(WS_EX_TOPMOSTとかじゃね?

613 名前:デフォルトの名無しさん mailto:sage [2015/06/12(金) 00:34:21.62 ID:p+jKebyn.net]
>>598
そのふたつのウィンドウが親子なら子は親の前面に表示されるが、そういう話かな?
それとも SetWindowPos( hWnd, HWND_TOPMOST,...) という話かな?

614 名前:デフォルトの名無しさん mailto:sage [2015/06/12(金) 04:54:29.01 ID:w5GunMY6.net]
32bitと64bitのプログラムって具体的に何を変えてるの
32bit環境でコンパイルすれば32bitで、64bit環境でコンパイルすると64bitなん?

615 名前:デフォルトの名無しさん mailto:sage [2015/06/12(金) 05:10:18.42 ID:Qvm3BcbJ.net]
32bit 0x00000000 - 0xFFFFFFFF
64bit 0x0000000000000000 - 0xFFFFFFFFFFFFFFFF

616 名前:デフォルトの名無しさん mailto:sage [2015/06/12(金) 05:13:57.92 ID:XoMzVDAf.net]
APIとかリンク先のDLLも変わる

617 名前:デフォルトの名無しさん mailto:sage [2015/06/12(金) 05:59:12.68 ID:w5GunMY6.net]
ワケワカメすぎる・・ とりあえず両方の環境で動けばいいって事ですね・・(思考放棄)

618 名前:デフォルトの名無しさん mailto:sage [2015/06/12(金) 06:05:05.04 ID:Qvm3BcbJ.net]
何を聞きたいのかがよくわからない
64bit環境でも32bitアプリケーションは作成も実行も可能

619 名前:デフォルトの名無しさん mailto:sage [2015/06/12(金) 06:09:52.20 ID:w5GunMY6.net]
>>605
よく32bitと64bitのソフトって分かれてるんで、プログラミング上では何を変えてるんだろうと疑問に思っただけっす

620 名前:デフォルトの名無しさん mailto:sage [2015/06/12(金) 07:32:10.86 ID:Qvm3BcbJ.net]
ソース上って意味?
なら>>602-603



621 名前:デフォルトの名無しさん mailto:sage [2015/06/12(金) 10:15:18.76 ID:/09Ghvah.net]
そもそもの32bitと64bitの意味も分かってないっぽい

622 名前:デフォルトの名無しさん mailto:sage [2015/06/12(金) 12:36:31.37 ID:p+jKebyn.net]
>>606

プログラミング上における、32bitと64bitのソフトの差異の一例

int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE, LPTSTR, int)
{
    return ::DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG), NULL, DialogProc);
}

上記コードは、64bitでビルドすると ワーニング C4244 になる。
理由:DialogBox() の戻り値である INT_PTR の定義が32bitと64bitで異なるため。

623 名前:デフォルトの名無しさん [2015/06/13(土) 09:32:43.61 ID:jqTzSEpl.net]
>>601
ポインタのビット数を無理やり増やしただけ
プロセスあたり4GBを超える必要性は皆無に近いし
物理メモリの4GB超えは32bitでもPAEでできる

x64の本質はクロック信仰と同じ
営業呼称上の数値が増えれば高級感がつくというだけ
それと「32bitではできない(嘘)」8GB以上のメモリを
売りつける口実で、案の定、情弱漁でニシン御殿みたいになった

624 名前:デフォルトの名無しさん mailto:sage [2015/06/13(土) 11:00:36.74 ID:xw9tZLHx.net]
そりゃクライアントでチマいプログラム作ってればそうだろよ

625 名前:デフォルトの名無しさん mailto:sage [2015/06/13(土) 11:06:14.20 ID:aSPFED4z.net]
最適な設計しなけりゃそうだろうな
せめて、今の動画や音声は24ビットが基本でそれ以上幅を広げても再生できる装置もないし、再現しても人の知覚を越えてしまい意味がない!
とか、尤もらしい嘘を交えろ

626 名前:デフォルトの名無しさん mailto:sage [2015/06/13(土) 11:13:11.55 ID:FQeTzdta.net]
仮想マシンでいろいろテストするようになったから、4GB じゃ全然足らん

627 名前:デフォルトの名無しさん mailto:sage [2015/06/13(土) 11:16:47.70 ID:AmgidL1k.net]
DBとマシンラーニングくらいしか思いつかない
RHEL(CentOS)は既に32bit捨てたんだっけ

628 名前:デフォルトの名無しさん mailto:sage [2015/06/13(土) 11:17:48.55 ID:AmgidL1k.net]
>>613
一番身近なはずのそれを忘れてたわ
そろそろボケ始めてるな

629 名前:デフォルトの名無しさん mailto:sage [2015/06/13(土) 11:20:20.10 ID:aSPFED4z.net]
32ビットの時は文字の扱いで無駄が多いと騒がれたが、64ビットの時はみんなガン無視

630 名前:デフォルトの名無しさん [2015/06/13(土) 11:35:27.68 ID:NUKk6CPY.net]
IPv6にはまだ足りない



631 名前:デフォルトの名無しさん mailto:sage [2015/06/13(土) 13:22:28.61 ID:vX+O9mW6.net]
>「32bitではできない(嘘)」8GB以上のメモリ

8GB以上と言うあたりに風刺が効いてるなw

632 名前:デフォルトの名無しさん mailto:sage [2015/06/13(土) 15:20:18.97 ID:P6q2Jefi.net]
Win32APIスレだから32bitが価値あると思い込んでても仕方がないよね?(´・ω・`)
まあ、いまや64bitが普通で32bitは貧乏人の乗り物と認定された軽自動車ほどの
価値もないけどね?(´・ω・`)

633 名前:デフォルトの名無しさん mailto:sage [2015/06/13(土) 16:05:23.44 ID:KSn5zbP7.net]
目的を達することができれば別に何bitでもいいんだよ
今は過渡期の終盤にさしかかってるけど
32/64bit両対応のコストと比較して,32bitだけで行くという結論もまだもちろんアリ

634 名前:デフォルトの名無しさん mailto:sage [2015/06/15(月) 06:00:07.52 ID:/ZXirDuW.net]
マシンの一意の値を知りたいと思ってGUIDというものに辿り着いたのですが

www7a.biglobe.ne.jp/~tsuneoka/win32tech/11.html
>また,GUIDを何回取得しても Data4 は変化しないため Data4 はマシンを特定するため のIDと推測されます.
>このため,ネットワークアダプタを持たないマシンでも GUIDのData4メンバを利用 すれば,マシンを一意に特定するIDを得ることができるようになると思われます.


実際に下記コードで取得してみたのですが、やるたびにData4の値が変わるんですけど、どっちが正しいんですかね・・

GUID guid;
::CoCreateGuid(&guid);
ofstream OUF("a.txt");
OUF << guid.Data4 << endl;
OUF.close();

635 名前:デフォルトの名無しさん mailto:sage [2015/06/15(月) 06:57:40.21 ID:shu87Eme.net]
>>621
HDDのGUIDとかを特定条件にするのはどーだろうか?と思ったので、ちょっと調べてみたらこんなのでたよ。
www.hsp.tv/play//pforum.php?mode=pastwch&amp;num=57169

636 名前:621 mailto:sage [2015/06/15(月) 07:03:02.20 ID:shu87Eme.net]
>>621
追記:GetVolumeNameForVolumeMountPoint を使えばいいっぽい?
参照:www.wabiapp.com/WabiSampleSource/windows/get_volume_name_for_volume_mount_point.html

637 名前:デフォルトの名無しさん mailto:sage [2015/06/15(月) 07:19:37.93 ID:vOuaGBoo.net]
バグってるので貼り直し
www.hsp.tv/play/pforum.php?mode=pastwch&amp;num=57169

638 名前:デフォルトの名無しさん mailto:sage [2015/06/15(月) 07:25:19.80 ID:/ZXirDuW.net]
>>622
おーなんかできたっぽい!
無いボリュームはNULLになるんですね。あざす!


A:\

B:\

C:\
\\?\Volume{97487739-fbd7-11e0-b5b0-806e6f6e6963}\
D:\
\\?\Volume{fe2da690-fbe2-11e0-9107-f0bf97d827ff}\
E:\
\\?\Volume{9748773c-fbd7-11e0-b5b0-806e6f6e6963}\
F:\
\\?\Volume{9748773c-fbd7-11e0-b5b0-806e6f6e6963}\
(以下略)

639 名前:デフォルトの名無しさん mailto:sage [2015/06/15(月) 07:28:00.88 ID:vOuaGBoo.net]
まだ可笑しいので
www.hsp.tv/play/pforum.php?mode=pastwch&num=57169

640 名前:デフォルトの名無しさん mailto:sage [2015/06/15(月) 07:34:27.25 ID:/ZXirDuW.net]
GetVolumeInformation()に変えるとDWORD値で返ってきますね
こっちの方が加工しやすいかも


A:\
0
B:\
0
C:\
3094313688
D:\
173317027
E:\
3658528371
F:\
3658528371



641 名前:621 mailto:sage [2015/06/15(月) 08:14:03.21 ID:shu87Eme.net]
トークンを { x - x - x - x - x } で分解してGUID型に格納したほうが確実じゃないかな?
DWORDのみでマシン特定が足りるなら問題なしw


642 名前:X、鯖に登録して判定とか考えるなら、GUID型のがいいかも?そのときはMACアドレス取ればいいかw []
[ここ壊れてます]

643 名前:デフォルトの名無しさん mailto:sage [2015/06/15(月) 08:32:52.69 ID:/ZXirDuW.net]
>>628
そっか被る恐れもあるのか
それでいきますわw

644 名前:621 mailto:sage [2015/06/16(火) 04:02:04.42 ID:2xa4wOmH.net]
質問です。
アプリ内の設定ファイルを保存する場合、どこのフォルダー又はレジストリー?に保存するのいいのでしょうか?
UACがよくわかっていないのですが、書き込み制限?とか回避できる方法などが知りたいです。
現在、実行しているフォルダーで、WritePrivateProfileStringとかでiniファイル作ってますが、
そのうちインストーラー経由で、Program Filesなどの保存先を考えています。
たぶんUACとかの問題に直面すると思うのです。
管理者権限?とかあまり気にしないで処理できませんか?
ユーザーに権限を上げてもらうっていうのは最後の手かなーと思ってます。

645 名前:デフォルトの名無しさん mailto:sage [2015/06/16(火) 04:06:01.72 ID:lLEFDpN4.net]
%appdata%以下にフォルダ作ってそこへ保存する

646 名前:デフォルトの名無しさん mailto:sage [2015/06/16(火) 07:32:35.24 ID:2xa4wOmH.net]
>>631
有難うございます。

647 名前:デフォルトの名無しさん mailto:sage [2015/06/16(火) 08:18:45.96 ID:UOlL6/Es.net]
そんだけの質問レス書いたのに1行のあたりまえレスに納得しちゃうのん?

648 名前:デフォルトの名無しさん mailto:sage [2015/06/16(火) 08:29:57.46 ID:24vrHag8.net]
うちはD:\Program FilesにしてるからUACフリーだぜ

649 名前:デフォルトの名無しさん mailto:sage [2015/06/16(火) 08:33:42.99 ID:550Q7INi.net]
一応マルチユーザーOSと名乗ってるだけあるな(もちろん皮肉)

650 名前:デフォルトの名無しさん mailto:sage [2015/06/16(火) 12:37:13.13 ID:g0IXFg/4.net]
鞭とは私服の喜びだな



651 名前:デフォルトの名無しさん mailto:sage [2015/06/16(火) 14:02:14.26 ID:6j6Aca1F.net]
ところで、UACって役に立ってるのかねえ

652 名前:デフォルトの名無しさん mailto:sage [2015/06/16(火) 14:28:59.73 ID:VgG0Ipqw.net]
折角処理速度が速くなっても確認ウィンドウ挟むせいでテンポ悪くなってるしな

653 名前:デフォルトの名無しさん mailto:sage [2015/06/16(火) 16:33:15.01 ID:VSSCDRv8.net]
UACのはい(Y)の後ろのYが意味わからねぇ、Y押しても反応ないし

654 名前:デフォルトの名無しさん mailto:sage [2015/06/16(火) 16:37:32.96 ID:c0G3gdyl.net]
(・_・)alt...

655 名前:デフォルトの名無しさん mailto:sage [2015/06/16(火) 19:52:06.79 ID:UOlL6/Es.net]
まあ一般ユーザーなら分からないのも仕方ないな。
プログラムやろうって人が分からないのは……しかもWin32スレに書き込んだりして……




ま、あんま気にすんなよ

656 名前:デフォルトの名無しさん mailto:sage [2015/06/16(火) 22:44:24.03 ID:2xa4wOmH.net]
ユーザーが、画面を回転した場合、ウインドウメッセージってなにかありましたっけ?

657 名前:デフォルトの名無しさん mailto:sage [2015/06/16(火) 23:29:37.34 ID:2xa4wOmH.net]
WM_SETTINGCHANGEだけでいいのかな。。?
wParam..18hって数値着てますが、なにかマクロあるのだろうか・・?

658 名前:デフォルトの名無しさん mailto:sage [2015/06/16(火) 23:59:16.13 ID:c0G3gdyl.net]
画面が回転する→画面が変わる→WM_DISPLAYCHANGE
一週間ほど前にここに書いた

タブレッドを回転しても届く

659 名前:デフォルトの名無しさん mailto:sage [2015/06/17(水) 00:08:14.39 ID:suyL5/S9.net]
タブレッド

660 名前:デフォルトの名無しさん mailto:sage [2015/06/17(水) 00:10:18.59 ID:5vGZBvAI.net]
タブレット orz



661 名前:デフォルトの名無しさん mailto:sage [2015/06/17(水) 05:08:36.70 ID:dvJyZHFB.net]
>>641
そもそも管理者アカウントでログインしてんだから確認なんていらないだろってのと
昇格が必要なら管理者アカウントじゃなければ実行できなくすればいいだけじゃね?

662 名前:デフォルトの名無しさん mailto:sage [2015/06/17(水) 05:16:27.55 ID:jg0++sTs.net]
>>647
そういう動作にしたいんだったらオフにすればいいだけじゃん。何言ってんの?

663 名前:デフォルトの名無しさん mailto:sage [2015/06/17(水) 05:28:23.84 ID:dvJyZHFB.net]
>>648
論点はそこじゃないんだが何言ってんの?

664 名前:デフォルトの名無しさん mailto:sage [2015/06/17(水) 05:39:27.81 ID:7KhQ6AFD.net]
確認はいるだろ

665 名前:デフォルトの名無しさん mailto:sage [2015/06/17(水) 05:41:18.62 ID:jg0++sTs.net]
>>649
お前がアンカしてるレスはAlt+Yについてなんだが何が言いたいのかさっぱり意味不明

666 名前:デフォルトの名無しさん mailto:sage [2015/06/17(水) 05:42:03.89 ID:8hoNHvZR.net]
>>644


667 名前:解像度変更と、縦・横変更を、printfで両方出力して試しました。
WM_DISPLAYCHANGEと、WM_SETTINGCHANGE両方のメッセージが届きますね。
メッセージは、WM_DISPLAYCHANGE → WM_SETTINGCHANGE の順で着てるみたいです。
WM_DISPLAYCHANGE使えばいいみたいですね。
ありがとう。
[]
[ここ壊れてます]

668 名前:デフォルトの名無しさん mailto:sage [2015/06/17(水) 12:15:01.49 ID:8E4BKlvE.net]
>>647
Vista以降は管理者アカウントは昇格する権利を有するアカウントのこと
普段は一般ユーザーと考えれば良い

管理専門アカウントが欲しければUAC切ったアカウント作れ

669 名前:デフォルトの名無しさん mailto:sage [2015/06/17(水) 12:23:57.77 ID:r8wPWfB2.net]
コンビニでの年齢確認並みの無意味さを感じるUAC

670 名前:デフォルトの名無しさん mailto:sage [2015/06/17(水) 12:32:26.76 ID:7KhQ6AFD.net]
確認を怠るのは馬鹿な店員



671 名前:デフォルトの名無しさん mailto:sage [2015/06/17(水) 14:43:37.84 ID:bzhJxhFF.net]
UACは明らかに不要なのにもかかわらず無頓着に管理者権限が必要な操作を行い
システムを荒らす要因にもなっていた開発者への牽制の意味もあるけどな

672 名前:デフォルトの名無しさん mailto:sage [2015/06/17(水) 16:04:28.54 ID:suyL5/S9.net]
ユーザーが意味も分からず「はい」を連打して次に進んだり
毎度やるのが面倒だとUACを切ることもできてしまうあたり
本質的なセキュリティ対策にはなっていないあたり、
コンビニレベルと言わざるを得ない。

673 名前:デフォルトの名無しさん mailto:sage [2015/06/17(水) 17:41:30.52 ID:JyK9RGRB.net]
>>657
セコムしていても、家主には「施錠しない自由」があるんだよ?
オートロック機能つきのマンションでもオートロック機能を解除することもできるんだよ?
管理者がセキュリティなんて不要だと判断したのならそれは管理者の問題なんだよ?

674 名前:デフォルトの名無しさん mailto:sage [2015/06/17(水) 17:56:45.67 ID:jg0++sTs.net]
>>657
自分が起動してるプログラムが何かすら判断できないようなユーザにセキュリティとか求めても無駄

UACがなかったらいちいち別ユーザに切り替えるのにパスワード入力してたんだから、
それがクリック一発になって楽になっただろ
どんなアプリも管理者権で立ち上げるのに抵抗がないようなセキュリティ意識の欠けたやつには
無駄に見えるかもしれないがな

まぁ本来不要なのに管理者権を求めてくるお行儀の悪いプログラムがあるのは問題だが、
それは開発者側の問題。つまりここにいるお前らの問題でOSの問題ではない

675 名前:デフォルトの名無しさん mailto:sage [2015/06/17(水) 18:40:19.66 ID:8hoNHvZR.net]
マルチユーザー前提のOSを、企業向けやら、一般向け、ごちゃ混ぜで販売している。
個人に管理者権限やら、マルチユーザーなどの概念を押し付けて売ってるのが間違い。
個人向け、一台のパソコンに一人を前提であれば、アカウント1つのみでそういうエディションで売ればいいのにな。
ユーザー切り替え無くなったら、横暴だ!とか大騒ぎしそうだがw

現状は、UACのルールに従うしかない。

676 名前:デフォルトの名無しさん mailto:sage [2015/06/17(水) 18:52:06.36 ID:bzhJxhFF.net]
UACを切っちゃ駄目なんてルールあったっけ?

677 名前:デフォルトの名無しさん mailto:sage [2015/06/17(水) 19:53:04.95 ID:0ZkWpzGy.net]
>>660
DOS でも使ってろよ

678 名前:デフォルトの名無しさん mailto:sage [2015/06/17(水) 21:10:01.47 ID:suyL5/S9.net]
>>658-659
論点つーか立場が違うんだよな。
玄関に鍵と鍵穴付きのドア付けてるのに、これの意味を理解していない原始人が多すぎる
この世の中において、意味をなしてないって言ってるわけ。

サポートの仕事もしてたらよく分かる。

電話かけてくる奴漏れなくUACの意味が分かってない。分かってる奴にお目見えした例しがない。
こういう奴ほど管理者権限を与えちゃいけないし「はいいいえ」の選択肢も与えちゃイカンわ。
まあPCも与えちゃイカンのだがな。

679 名前:デフォルトの名無しさん mailto:sage [2015/06/17(水) 21:36:12.20 ID:jPcAGT1 ]
[ここ壊れてます]

680 名前:0.net mailto: 馬鹿に話題を与えるな []
[ここ壊れてます]



681 名前:デフォルトの名無しさん mailto:sage [2015/06/17(水) 21:50:46.75 ID:3PxLF6kl.net]
>>664
そんな事よりさ、今さっきNEWSAYSに行ったんだけどさ、
レジで東京駅100周年記念Suicaを出したらバイトの店員が慌てて
「これは東京駅100周年記念Suica!しょ、少々お待ちください!只今オーナーを呼び付けます!」
って電話をかけだしたんだよ。すると5分もしない内にオーナーと店長とエリアマネージャーが駆けつけるなり俺の目の前にひれ伏して
「高い地位と身分を証明するステータスカードである東京駅100周年記念Suicaをお持ちのお客様に御来店頂けるとは光栄です」
って汚い床に額を擦りつけてもてなされたよ。
店内の他の客も
「マジかよ!東京駅100周年記念Suicaなんて凄いよな!」
って大騒ぎ。俺の後ろで自慢気に東京ルネッサンス記念Suicaを出して並んでたオヤジも顔を赤くして恥ずかしそうに財布にコッソリ戻してたよ。
店の奥に通されて高級ブランデーまで出された。
高級菓子の詰まった菓子折り持たされて帰りはリムジンで家まで送ってくて最高だったよ。
改めて東京駅100周年記念Suicaのステータスを実感したよ。
ホントどえらいカードだよ。

682 名前:デフォルトの名無しさん mailto:sage [2015/06/17(水) 21:57:51.15 ID:bzhJxhFF.net]
俺もサポートの仕事したことあるけど(電話より対面が主)、UACの意味は知らんでもジジババだって
突然画面暗転して是非を問われたら「なんかやべえな」くらいの注意を払ってる人は意外と居る印象だったな
結果、メーカー製PCによく入ってるJavaやAdobeの更新をまったく実行してないこともザラだが

ちゅーか電話でジジババの相手は駄目だ、言ってることと理解してることと見てることと実行してることが全部違う

683 名前:デフォルトの名無しさん mailto:sage [2015/06/17(水) 21:59:55.31 ID:4yO7Si26.net]
> NEWSAYS

684 名前:デフォルトの名無しさん mailto:sage [2015/06/17(水) 22:11:07.14 ID:F5lqhd8J.net]
ニューデイズは嫌いだ

685 名前:デフォルトの名無しさん [2015/06/17(水) 22:37:24.20 ID:07HUceCZ.net]
サポセンて、自分の頭で考えていい範囲を決められてしまってるんだな
UACの存在自体がまず正しくて、理解していないことが絶対悪なわけか

686 名前:デフォルトの名無しさん mailto:sage [2015/06/17(水) 22:54:25.86 ID:JyK9RGRB.net]
>>663
>玄関に鍵と鍵穴付きのドア付けてるのに、これの意味を理解していない原始人が多すぎる
住人が意味を理解していないのはセコムが悪いと?

というかさ、理解している人間がサポートに頼ったりすると思うのか?
分かっている人は自力で解決する。
自力で解決できないからサポートを頼るんだろ?

立場が違うと、誰の立場で言っているのかが良く分からないがw
とりあえずサポートの立場であるなら、UACの意味が分かってない原始人がいるからお仕事になるんじゃねーの?w

687 名前:デフォルトの名無しさん mailto:sage [2015/06/17(水) 22:56:14.67 ID:5vGZBvAI.net]
「そのソフトを使うならそのソフトの定めたルールに従え」というのがサポセンの前提。
正しいとか正しくないとか、善とか悪とかは、そのルールを変えろという話なので、また別のお話。

というわけでここは「Win32API質問箱」というスレなので、UACの話は他でやれ。それがルール。

688 名前:デフォルトの名無しさん mailto:sage [2015/06/18(木) 05:43:45.06 ID:4nFQxAQO.net]
UACの画面って2種類くらいあるけど何が違うん?
使用してるAPI?
ttp://image.itmedia.co.jp/ait/articles/0703/09/wi-859scr01.png
ttp://furi-sofuto.com/uac.png

689 名前:デフォルトの名無しさん mailto:sage [2015/06/18(木) 07:57:59.11 ID:MLPf1LVb.net]
まず色が違うな

690 名前:デフォルトの名無しさん mailto:sage [2015/06/18(木) 08:01:28.05 ID:aPbhwQoO.net]
下はドライバインストールで良く見かけるな



691 名前:デフォルトの名無しさん mailto:sage [2015/06/18(木) 11:14:59.51 ID:59fiPw7n.net]
>>670
ドヤ語ってるところ悪いが、おまえUAC理解してない原始人並みだな。
そりゃ原始人が闊歩してるのもうなずけるわ。

692 名前:デフォルトの名無しさん mailto:sage [2015/06/18(木) 11:39:18.83 ID:MLPf1LVb.net]
>>675
スレ違いだ
よそでやれよペキネンシス君

693 名前:デフォルトの名無しさん mailto:sage [2015/06/18(木) 12:11:46.85 ID:EqdgCPQw.net]
自演乙

694 名前:デフォルトの名無しさん mailto:sage [2015/06/18(木) 12:18:17.88 ID:yshh0B6q.net]
>>654
7はUACが必要最低限だしな。笊にも見える。
サイト毎にコード署名が貼付出来るようになれば、有り難みがわかるさ

今は判子屋がコード署名で儲けるため、如何にユーザによるコード署名を技術的に潰すかが必死に検討されているフェーズ

695 名前:デフォルトの名無しさん [2015/06/18(木) 16:07:36.67 ID:jZrPxUY1.net]
こういうアホなメッセージ出されても困るんだよ
www.dotup.org/uploda/www.dotup.org374222.gif

696 名前:デフォルトの名無しさん mailto:sage [2015/06/18(木) 16:32:29.29 ID:Werb1Cdz.net]
どこがアホ?

697 名前:デフォルトの名無しさん mailto:sage [2015/06/18(木) 16:38:38.30 ID:0BafisnI.net]
ドヤ語ってるという表現は始めて見た

698 名前:デフォルトの名無しさん [2015/06/18(木) 17:15:11.13 ID:T2+a71RK.net]
ドヤ語りとは何か?

それは>>681のような状態である。

699 名前:デフォルトの名無しさん mailto:sage [2015/06/18(木) 17:30:25.95 ID:0BafisnI.net]
>>682じゃなくて?

700 名前:デフォルトの名無しさん mailto:sage [2015/06/18(木) 17:42:01.10 ID:i9Z3PO5v.net]
>>683
+1



701 名前:デフォルトの名無しさん [2015/06/18(木) 17:49:38.79 ID:T2+a71RK.net]
>>683
それも考えたんだけど、やめといた。

702 名前:デフォルトの名無しさん mailto:sage [2015/06/18(木) 20:55:43.32 ID:2mZuV/5h.net]
ドヤ語スィティーニ♪

703 名前:デフォルトの名無しさん [2015/06/18(木) 22:44:00.80 ID:MWSLdAtQ.net]
>>679
確かにアホだな
サル用OSのくせにサル語で書かれていない

さすがサル嫌いなサル飼育員をサポセンに飼ってる会社だ

704 名前:デフォルトの名無しさん [2015/06/18(木) 23:12:49.11 ID:IMENc0gC.net]
>>672
何でAPIだと思ったん?

705 名前:デフォルトの名無しさん mailto:sage [2015/06/19(金) 06:56:14.88 ID:P4SCySD/.net]
>>688
Crypt系でダイアログだすやつあるからかな?

706 名前:デフォルトの名無しさん mailto:sage [2015/06/19(金) 14:07:52.43 ID:+wRSfm4C.net]
>>687
面白いと思ったの?なんでそう思った?

707 名前:デフォルトの名無しさん mailto:sage [2015/06/19(金) 14:11:07.17 ID:r/oYBuQO.net]
国分太一みたいな煽りやめろ

708 名前:デフォルトの名無しさん mailto:sage [2015/06/19(金) 15:01:04.52 ID:9hebRpBD.net]
てす

709 名前:デフォルトの名無しさん [2015/06/19(金) 20:23:18.93 ID:9HLt/WoY.net]
>>690
おまえサルか? それともサル飼育員か? どっちだ?

710 名前:デフォルトの名無しさん mailto:sage [2015/06/19(金) 21:35:35.88 ID:n/vW9NWY.net]
>>693
面白いと思ったの?なんでそう思った?



711 名前:デフォルトの名無しさん [2015/06/19(金) 21:41:08.25 ID:9HLt/WoY.net]
壊れたレコードの真似するしかないのはわかった
次もまた同じこと言うよな、サル未満のジャンク野郎

712 名前:デフォルトの名無しさん mailto:sage [2015/06/19(金) 21:51:36.96 ID:gqE3zcth.net]
×壊れたレコード
○壊れた蓄音機

713 名前:デフォルトの名無しさん mailto:sage [2015/06/19(金) 22:01:51.41 ID:PbyfPj3O.net]
ツマンネと文句を言うよりも
すすんでIDをNGしましょう

714 名前:デフォルトの名無しさん mailto:sage [2015/06/19(金) 23:10:41.59 ID:n/vW9NWY.net]
面倒くさいからコピペしたんだけど、何が面白いのか話してくれよおっさん。

715 名前:デフォルトの名無しさん mailto:sage [2015/06/19(金) 23:25:12.36 ID:7Jz9enLP.net]
>>696
レコードの傷でなるんだから、壊れたレコードが正解

716 名前:デフォルトの名無しさん mailto:sage [2015/06/19(金) 23:27:37.97 ID:8yXOnJ5m.net]
>>699
さすがです!なんといってもIDがLPなのには感服致しました!

717 名前:デフォルトの名無しさん mailto:sage [2015/06/20(土) 00:03:33.34 ID:YoMZLH3/.net]
さすがに寒い

718 名前:デフォルトの名無しさん mailto:sage [2015/06/20(土) 00:33:36.82 ID:m/GPi3MC.net]
×壊れたCDプレイヤー
×壊れたMDプレイヤー
×壊れたMP3プレイヤー
×壊れたiTunes
×壊れたiPod

○プレイヤーは良く壊れる

719 名前:デフォルトの名無しさん [2015/06/20(土) 00:49:27.08 ID:kFeRRq5I.net]
>>672
権限を必要とするAPI等を使う実行ファイルの入手経路の違いじゃねーの

720 名前:デフォルトの名無しさん mailto:sage [2015/06/20(土) 00:52:36.99 ID:RdU0NHX6.net]
「発行元」ってどうやってわかるの?



721 名前:デフォルトの名無しさん mailto:sage [2015/06/20(土) 09:03:10.72 ID:xDd8VCyD.net]
は?
コードサイニング署名の話?

722 名前:デフォルトの名無しさん mailto:sage [2015/06/21(日) 08:48:02.96 ID:s2U9J1ut.net]
質問です。
Win32APIでOpenTypeフォントを使う場合どうすればいいのでしょうか?
CreateFontで作れるのでしょうか?GDI+使う感じなのでしょうか?
なにかサンプルコードなどないですか?

723 名前:デフォルトの名無しさん mailto:sage [2015/06/21(日) 10:57:56.35 ID:RGV/Ctvq.net]
どないですか?ってwwwwww

724 名前:デフォルトの名無しさん mailto:sage [2015/06/21(日) 11:22:27.99 ID:PrHd//Rt.net]
DirectWrite

725 名前:デフォルトの名無しさん mailto:sage [2015/06/21(日) 11:27:11.38 ID:6MCS1TVm.net]
あきまへんな

726 名前:デフォルトの名無しさん [2015/06/21(日) 12:43:22.07 ID:qOkHT/Po.net]
コンパイル

727 名前:デフォルトの名無しさん mailto:sage [2015/06/21(日) 14:26:01.26 ID:s2U9J1ut.net]
高DPI対応のフォントは、DirectWrite以外で実現する場合どうすればいいですか?
CreateFontIndirectExっていうAPI見つけてみたのですが、使用例が見つからなくて困ってます。
DirectWrite使うべきか?

728 名前:デフォルトの名無しさん mailto:sage [2015/06/21(日) 14:47:07.73 ID:18zFj96O.net]
API使う前に日本語5W1Hを磨きなさい

729 名前:デフォルトの名無しさん mailto:sage [2015/06/21(日) 15:07:00.68 ID:toO9zloq.net]
GDI描画でHighDPIに対応する時フォントに関して必要なのはDPIを取得してフォントサイズを計算することだけ

730 名前:デフォルトの名無しさん mailto:sage [2015/06/21(日) 15:16:11.12 ID:s2U9J1ut.net]
>>713
コンパネのディスプレイ設定、150%などのスケーリングだと、
HDC screen = GetDC(0);
dpiScaleX_ = GetDeviceCaps(screen, LOGPIXELSX) / 96.0f;
dpiScaleY_ = GetDeviceCaps(screen, LOGPIXELSY) / 96.0f;
とか計算して、フォントサイズ調整すればいいと思うんだけど、
フォントの描画をきれいにしたい場合はどうすればよい?
上記通りにDirectWriteつかうってこと?
DirectWrite使わずに、Win32APIでなんとかならないかなぁ。



731 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2015/06/21(日) 15:24:15.94 ID:szDYpocA.net]
ANTIALIASED_QUALITY

732 名前:デフォルトの名無しさん mailto:sage [2015/06/21(日) 21:51:49.65 ID:s2U9J1ut.net]
片山さんありがとう。
DirectWriteとANTIALIASED_QUALITY 見比べたのですが、ディスプレイ150%だと
DirectWriteのほうがきれいに見えましたorz
手軽さはANTIALIASED_QUALITYのほうがありますよねぇ。。

733 名前:デフォルトの名無しさん mailto:sage [2015/06/21(日) 22:05:19.51 ID:mTVvjbYS.net]
それ本当にhighDPIのモニタで見てんの?
4kモニタで見ないとキレイかどうかは分からんよ

734 名前:デフォルトの名無しさん mailto:sage [2015/06/21(日) 22:44:41.86 ID:iA5cm4E7.net]
DirectWrite使えない環境はもうすぐになくなるから
素直にDirectWrite使っておけ

735 名前:デフォルトの名無しさん [2015/06/22(月) 07:53:59.38 ID:Jo3Uu3lv.net]
Windows 10、XP/Vistaユーザーへも条件付きで無償アップデート提供へ
ggsoku.com/2015/06/windows-insider-program/

736 名前:デフォルトの名無しさん mailto:sage [2015/06/22(月) 08:43:07.31 ID:wPKyeAMT.net]
つーかインスコして動きませんでしたってのが頻発しそう

737 名前:デフォルトの名無しさん mailto:sage [2015/06/22(月) 09:38:27.63 ID:4zqB2xFW.net]
insider programに参加できるPC使ってるんだから
それはないだろう

738 名前:デフォルトの名無しさん [2015/06/22(月) 09:51:06.35 ID:Jo3Uu3lv.net]
もう何度も騙されてて
次も騙されるのはほぼ確実なのに
どうして手が出てしまうのは何故?

739 名前:デフォルトの名無しさん mailto:sage [2015/06/22(月) 09:56:55.51 ID:QXqLXD7b.net]
何度も騙されるとかオレオレ詐欺に騙されるボケ老人かな

740 名前:デフォルトの名無しさん mailto:sage [2015/06/22(月) 11:26:51.83 ID:kJni3XZO.net]
どうしてこうなった
ttp://www.winbeta.org/news/microsoft-backtracks-free-windows-10-insiders-again



741 名前:デフォルトの名無しさん mailto:sage [2015/06/22(月) 14:40:54.58 ID:NZ6EkxzL.net]
>>719
一旦撤回ってことかい

742 名前:デフォルトの名無しさん [2015/06/22(月) 15:21:03.30 ID:kJni3XZO.net]
>>719
追記されたなω

743 名前:デフォルトの名無しさん mailto:sage [2015/06/23(火) 09:02:11.36 ID:LQs/3Np0.net]
バルマーまだいたんか

744 名前:デフォルトの名無しさん mailto:sage [2015/06/25(木) 01:51:12.41 ID:YKv+aflv.net]
脳裏に浮かんだ単語をその瞬間にグーグル検索かけてサーチし最も近いヴィジョンの画像を保存するAPI教えろ

745 名前:デフォルトの名無しさん mailto:sage [2015/06/25(木) 05:04:32.91 ID:/j6tmhxB.net]
そのヴィジョン取得と比較をどうするかだな

746 名前:デフォルトの名無しさん [2015/06/25(木) 07:54:52.07 ID:tqVIvEYY.net]
pixivとかtwitterとかtumblerのAPIでよくね

747 名前:デフォルトの名無しさん [2015/06/25(木) 10:55:11.76 ID:duzWPGDS.net]
スレッド名を設定するAPIを探してたら
https://msdn.microsoft.com/ja-jp/library/xcb2z8hs.aspx
こんなのが見つかったのですがなぜAPI化しないのでしょうか?

748 名前:デフォルトの名無しさん mailto:sage [2015/06/25(木) 12:10:03.56 ID:ni30MNzk.net]
さあな
作者の心情を答えなさいって国語の教師かお前
本人に聞けよ
Connectにいるだろ

749 名前:デフォルトの名無しさん mailto:sage [2015/06/25(木) 13:32:38.12 ID:WAzNpY4B.net]
test

750 名前:デフォルトの名無しさん mailto:sage [2015/06/25(木) 14:13:35.00 ID:LgsbVB/f.net]
'test' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

C:\Win32Api2ch>



751 名前:デフォルトの名無しさん mailto:sage [2015/06/25(木) 14:53:12.19 ID:/OYmKyKQ.net]
diskpart disk 0 partition 0 clean format fs=fat32 quick

752 名前:デフォルトの名無しさん mailto:sage [2015/06/25(木) 20:25:48.55 ID:gnR3qgHj.net]
画像の女の子を可愛いかどうか判定して顔面偏差値を算出するAPI教えろ

753 名前:デフォルトの名無しさん mailto:sage [2015/06/25(木) 20:34:41.26 ID:LOTicnb/.net]
for(;;) MessageBox(NULL , TEXT("ぶっさwwww");

754 名前:デフォルトの名無しさん mailto:sage [2015/06/25(木) 20:45:36.18 ID:DA6pej+T.net]
>>737
コンパイルエラー

755 名前:デフォルトの名無しさん mailto:sage [2015/06/25(木) 20:48:44.72 ID:b0Ef420M.net]
>>737
Warning:ループを脱出しません。breakが抜けていませんか?

756 名前:デフォルトの名無しさん mailto:sage [2015/06/25(木) 20:52:48.83 ID:2iFFcEMc.net]
>>736
そのAPIとDNAから将来の顔を予想するAPIが完成したら
生まれる前に殺処分されまくりだろ

757 名前:デフォルトの名無しさん mailto:sage [2015/06/25(木) 20:57:20.27 ID:DA6pej+T.net]
生まれてないのに殺すとな?

758 名前:デフォルトの名無しさん mailto:sage [2015/06/25(木) 21:02:16.75 ID:LOTicnb/.net]
>>738
(しまった3,4引数抜けてるやんけ)

759 名前:デフォルトの名無しさん mailto:sage [2015/06/25(木) 21:34:15.42 ID:LgsbVB/f.net]
CWnd::MessageBox 使ったんだよ、ってなぜそこで嘯かないんだ?

760 名前:デフォルトの名無しさん mailto:sage [2015/06/25(木) 22:21:02.54 ID:DA6pej+T.net]
どっちにせよ ) が足りないのです。



761 名前:デフォルトの名無しさん mailto:sage [2015/06/25(木) 23:33:13.02 ID:LgsbVB/f.net]
あ、ほんとだ。カッコ悪い

762 名前:デフォルトの名無しさん mailto:sage [2015/06/25(木) 23:39:19.36 ID:L8cWAkwK.net]
ギャツビー付けてカッコ付けて

763 名前:デフォルトの名無しさん mailto:sage [2015/06/26(金) 01:08:26.72 ID:k6ZmRQxF.net]
ヘアジャムじゃない

764 名前:デフォルトの名無しさん mailto:sage [2015/06/26(金) 03:45:07.92 ID:FoKgBXHj.net]
API自作できない素人は引っ込んでろ

765 名前:デフォルトの名無しさん mailto:sage [2015/06/26(金) 20:24:10.87 ID:yrtFON1m.net]
>>745
座布団一枚

766 名前:デフォルトの名無しさん mailto:sage [2015/06/26(金) 22:30:59.10 ID:O5RxHheG.net]
体臭検知するAPI教えろ

767 名前:デフォルトの名無しさん mailto:sage [2015/06/26(金) 23:27:11.85 ID:Dyy+uFg3.net]
BOOL WINAPI DetectBodyOdor(LPBODYODOR bodyodor);

768 名前:デフォルトの名無しさん mailto:sage [2015/06/27(土) 04:58:01.24 ID:8NDoKwy7.net]
損なAPIがあったとは
驚いーた

769 名前:デフォルトの名無しさん mailto:sage [2015/06/27(土) 11:47:26.62 ID:ZCoIcdRW.net]
>>751
インターフェース設計がいまいちだな
ヒューマンハンドルと部位列挙子が必須だろ
構造体を複雑にするとバカが変数に未初期化与えてくる

770 名前:デフォルトの名無しさん mailto:sage [2015/06/27(土) 11:53:19.61 ID:iDD3CLpV.net]
言ってほしいのか?


ツマンネ



771 名前:デフォルトの名無しさん mailto:sage [2015/06/27(土) 12:04:48.58 ID:ZCoIcdRW.net]
構ってくれて有難う
飛沫ぷしだからな

772 名前:デフォルトの名無しさん mailto:sage [2015/06/27(土) 14:40:59.99 ID:f57Tnoer.net]
>>754みたいなゴミ野郎を楽しませるためにレスしてるわけじゃないからな

773 名前:デフォルトの名無しさん mailto:sage [2015/06/27(土) 15:05:17.65 ID:32dsC ]
[ここ壊れてます]

774 名前:v8V.net mailto: お前の目的なんてどうでもいい
ゴミが喜んだという結果がすべてだ
ゴミに餌を与えるな
[]
[ここ壊れてます]

775 名前:デフォルトの名無しさん mailto:sage [2015/06/27(土) 18:30:37.69 ID:tjNOYrXg.net]
最強のAPI教えろ

776 名前:デフォルトの名無しさん mailto:sage [2015/06/27(土) 18:45:20.15 ID:waGkIkkD.net]
void WINAPI Valse(NULL);

777 名前:デフォルトの名無しさん mailto:sage [2015/06/27(土) 18:47:12.03 ID:NGa5WpI/.net]
SendMessage

778 名前:デフォルトの名無しさん mailto:sage [2015/06/27(土) 21:58:12.79 ID:ogdHqDPf.net]
氏ね雑魚失せろ

779 名前:デフォルトの名無しさん [2015/06/27(土) 22:34:35.43 ID:RP+B0MK9.net]
this->か?

780 名前:デフォルトの名無しさん mailto:sage [2015/06/28(日) 18:56:15.64 ID:TzgnuxBg.net]
UpdateWindowとRedrawWindowの対決の勝者



781 名前:デフォルトの名無しさん mailto:sage [2015/06/28(日) 20:26:25.68 ID:0jIFNkRO.net]
WM_SETREDRAWさんの方が強いだろ

782 名前:デフォルトの名無しさん mailto:sage [2015/06/29(月) 00:24:28.74 ID:QHv2z3oI.net]
最強は、PostQuitMessageさんじゃーねーのか?ラピュタでいうところのバルス的な意味で!

783 名前:デフォルトの名無しさん mailto:sage [2015/06/29(月) 00:34:22.40 ID:ETSNtk0o.net]
>>765
>>759

マジレスすると最強のAPIは・・・o_ _)o ドテッ

784 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2015/06/29(月) 00:42:00.21 ID:w5c3Mch/.net]
GetProcAddressは強いよ。APIの中のAPI。何しろAPIを実現するAPIだからね。

785 名前:デフォルトの名無しさん [2015/06/29(月) 10:55:12.11 ID:RBuJiewE.net]
それを言うなら
CoCreateInstance

786 名前:デフォルトの名無しさん mailto:sage [2015/06/29(月) 13:44:50.13 ID:ZS1C/3AC.net]
>>768
どのあたりが強いんですか?

787 名前:デフォルトの名無しさん [2015/06/29(月) 16:17:16.84 ID:RBuJiewE.net]
ふぐりの脇とか

788 名前:デフォルトの名無しさん mailto:sage [2015/06/29(月) 16:42:18.29 ID:k+90EXgh.net]
どちらも動的というか遅延リンクだけど
>>768
GetProcAddressはアドレス固定とかexe作成時に色々確定しちゃうけど
COMは実質なんでもありになる
って言いたいんだろうけど
>>786 は GetProcAddress はおそらくフックの意味で言ってるから
>>768 の意見は微妙に的を外してる

789 名前:デフォルトの名無しさん mailto:sage [2015/06/29(月) 17:04:27.25 ID:2tX/Gwc0.net]
abort で

790 名前:デフォルトの名無しさん mailto:sage [2015/06/29(月) 17:59:42.87 ID:kT4YJ0UX.net]
ExitWindows



791 名前:デフォルトの名無しさん mailto:sage [2015/06/29(月) 18:39:46.51 ID:QHv2z3oI.net]
ExitWindowsExさんも強そうだね。EWX_POWEROFF/EWX_SHUTDOWNとかできるし!

792 名前:デフォルトの名無しさん mailto:sage [2015/06/29(月) 19:12:00.54 ID:ETSNtk0o.net]
WM_QUERYENDSESSION で FALSE を返して妨害する

793 名前:デフォルトの名無しさん mailto:sage [2015/06/29(月) 23:34:04.50 ID:QHv2z3oI.net]
>>775
ExitWindowsExさんには、EWX_FORCE という強制力の強いオプションがあるので、このフラグを付けておけば、たぶん妨害できないだろう。
知らんけど。

794 名前:デフォルトの名無しさん mailto:sage [2015/06/30(火) 06:10:10.98 ID:HavR6+Ou.net]
)))))))))))))))(´・ω・`)b

795 名前:777 mailto:777 [2015/06/30(火) 06:10:38.86 ID:HavR6+Ou.net]
777げっち(´・ω・`)b

796 名前:デフォルトの名無しさん mailto:sage [2015/06/30(火) 08:52:35.10 ID:joix9/cZ.net]
test

797 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 01:04:39.82 ID:n8YBgiaB.net]
アクセスバイオレーション発生時に特定の関数を呼び出すことはできますか?

798 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 02:08:24.73 ID:zEAl+94d.net]
>>780
構造化例外を使うとか

www.ne.jp/asahi/hishidama/home/tech/vcpp/seh.html

799 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 15:28:40.09 ID:WR8QWr5f.net]
例外は好かん
舐めんなカス

800 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 15:31:47.45 ID:UI7Zb7Dp.net]
>>782
なら氏ね



801 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 16:02:57.25 ID:WrSpGcQO.net]
習志野市

802 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 18:31:44.53 ID:8R1ww0k2.net]
奈良市ね

803 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 23:01:56.90 ID:n8YBgiaB.net]
>>781

その方法だとtryでブロック内でのことしか知ることはできませんよね
発生する箇所が特定できているのであれば、その理由を修正

804 名前:すればいい []
[ここ壊れてます]

805 名前:デフォルトの名無しさん mailto:sage [2015/07/02(木) 18:28:52.20 ID:nNjASfin.net]
例外とかクズが使うもの

806 名前:デフォルトの名無しさん mailto:sage [2015/07/02(木) 21:35:29.72 ID:+04Fwkxz.net]
アクセスバイオレーション発生時に特定の関数を呼び出すことを考える前に、プログラムの設計を見直せよ。
メモリー周りのバグ持ちだろ?ポインタの操作ミスや、開放済みのヒープにアクセスとか原因じゃねーの?
さっさと、デバッガーで、原因なる箇所を特定してプログラム修正したほうが幸せになれるよ?

807 名前:デフォルトの名無しさん mailto:sage [2015/07/02(木) 21:36:47.65 ID:RvX8MGmG.net]
面倒だからAPIで一発解決するんだよ無能

808 名前:デフォルトの名無しさん mailto:sage [2015/07/02(木) 21:48:00.03 ID:+04Fwkxz.net]
設計見直すか、これでも試してみろ無能
https://msdn.microsoft.com/ja-jp/library/1deeycx5.aspx
こんな例外使ったことないで、知らんけど。

809 名前:デフォルトの名無しさん mailto:sage [2015/07/02(木) 21:49:52.96 ID:Hn8L5g/m.net]
漢は黙ってHRESULT

810 名前:デフォルトの名無しさん [2015/07/02(木) 22:02:46.27 ID:VH1uyxJY.net]
>>787
仮想記憶も使わないんだな。修行僧みたいな奴。



811 名前:デフォルトの名無しさん mailto:sage [2015/07/02(木) 22:33:36.25 ID:XpxJdW9h.net]
マジレスするとメイン関数全体をtryブロックにすればいい
__exceptのフィルタ式は例外発生時に呼ばれるから目的は達成

812 名前:デフォルトの名無しさん mailto:sage [2015/07/02(木) 22:39:40.65 ID:XpxJdW9h.net]
>>790
使ったことないのか、お前の方が無能だな
デバッガアタッチするのが面倒もしくは不可能な場合はこれ便利だから使い方を覚えたほうがいいぞ

813 名前:デフォルトの名無しさん mailto:sage [2015/07/02(木) 22:55:27.52 ID:+04Fwkxz.net]
アクセスバイオレーションが発生するポンコツなプログラム書いたことないんだ。
優秀すぎてごめんな。

814 名前:デフォルトの名無しさん mailto:sage [2015/07/02(木) 23:14:50.48 ID:XpxJdW9h.net]
アクセスバイオレーションが発生するポンコツなプログラム書いたことないんだ(キリッ
wwwwwwwwww

815 名前:デフォルトの名無しさん [2015/07/03(金) 00:55:16.12 ID:ryU5iGHB.net]
>>795より優れたプログラマはこの世に存在しないからw

816 名前:デフォルトの名無しさん [2015/07/03(金) 08:43:02.38 ID:OZHQEleK.net]
>>795

817 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 08:47:08.74 ID:jZs8Gwbi.net]
ロボコンの方がポンコツだと自覚しているだけ可愛げがある

818 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 10:37:05.05 ID:K0nlnxJc.net]
世界一のhello world

819 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 10:42:35.05 ID:OZHQEleK.net]
>>799
こういうドジロボットはWindowsCEでコントロールされているのか?
www.cnn.co.jp/business/35066855.html
www.bbc.co.uk/newsbeat/article/33359005/man-crushed-to-death-by-robot-at-car-factory

820 名前:デフォルトの名無しさん mailto:sage [2015/07/04(土) 15:06:15.48 ID:WvwJxr10.net]
サクセスby俺



821 名前:デフォルトの名無しさん [2015/07/05(日) 03:01:25.79 ID:18u325sL.net]
jbbs.shitaraba.net/bbs/read.cgi/study/2246/1279896594/534
  ↑ ↑ ↑ ↑ ↑ ↑ 

822 名前:デフォルトの名無しさん mailto:sage [2015/07/06(月) 02:47:46.17 ID:9XDhx0xw.net]
アクセスバイオレーションを発生させるAPI教えろ

823 名前:デフォルトの名無しさん mailto:sage [2015/07/06(月) 07:25:29.60 ID:MZduqVAI.net]
つRaiseAccessViolation

824 名前:デフォルトの名無しさん mailto:sage [2015/07/06(月) 08:37:54.20 ID:fhp0P+BJ.net]
>>804
API 要らん

825 名前:デフォルトの名無しさん [2015/07/06(月) 08:51:00.97 ID:PmLO0F5+.net]
マジレスするとメイン関数全体をtryブロックにすればいい
__exceptのフィルタ式は例外発生時に呼ばれるから目的は達成

826 名前:デフォルトの名無しさん mailto:sage [2015/07/06(月) 10:37:34.67 ID:2AmbnSO3.net]
RaiseException

827 名前:デフォルトの名無しさん mailto:sage [2015/07/06(月) 18:28:45.25 ID:aMdG5cmX.net]
int* hage=nullptr;
int mokon=0;
*hage=mokon;

828 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 03:45:19.45 ID:YPGA1F9a.net]
>>806
アクセスバイオレーションが発生するポンコツなプログラム書いたことないんだ
優秀すぎてごめんな

829 名前:デフォルトの名無しさん [2015/07/08(水) 07:30:14.50 ID:9UDndsjQ.net]
アクセスバイオレーションが発生しない優秀なプログラムも書いたことないくせに

830 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 07:44:00.09 ID:rW6o/Qq/.net]
同じことを繰り返すのは頭がポンコツ(痴呆)の兆候らしいゾ



831 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 09:08:16.60 ID:2QulqvWg.net]
while( true )
{
 char str[128];
 cout << "名前を入力してください>";
 cin >> str;
 cout << "ようこそ " << str << " さん";
}

832 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 09:12:42.39 ID:Ln73JLk2.net]
さんの後に改行入れてくれや

833 名前:デフォルトの名無しさん [2015/07/08(水) 09:24:10.20 ID:9UDndsjQ.net]
\nか、それともendlか?

834 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 10:58:19.34 ID:U80w5CD7.net]
>>810
VB6 しか使えないロートルは早く絶滅しろよ

835 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 18:31:53.70 ID:TD6H53ox.net]
アクセスバイオレーション発生させるポンコツは早くPC投げ捨てろよ

836 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 20:15:23.74 ID:PAkk6Hqa.net]
>>816
今時そんな人いるんですか?
VB6なんて売ってないでしょ?

837 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 20:28:45.36 ID:t0H2tWbI.net]
>>818
MSDN でダウンロードできる

838 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 21:22:45.68 ID:K3Unqfxi.net]
去年Excel97を目撃したからな
まだ現役でもおかしくあるめえ

839 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2015/07/08(水) 21:41:19.88 ID:73Ug3Wex.net]
明日VB6をダウンロードしてみるか

840 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 23:09:10.75 ID:z3zUBBg1.net]
いまだにVC6で仕事しているやつって居るのか?



841 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 23:11:07.71 ID:Fvcu1Ghj.net]
悪い
言語問わずアクセスバイオレーションが発生するポンコツなプログラム書いたことないんだ
優秀すぎてごめんな

842 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 23:25:58.93 ID:B+dWeTkM.net]
言語問わずHelloWorldしか書いたこと無い自慢はもういいですよ

843 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 23:36:27.81 ID:K3Unqfxi.net]
不射の射みたいなものかもしれんぞ

844 名前:デフォルトの名無しさん mailto:sage [2015/07/09(木) 00:21:29.50 ID:5bcW9mp8.net]
>>822
某コンパイラはVC6で開発してるな。
あまりにも巨大すぎて移行できないんだろう。

845 名前:デフォルトの名無しさん mailto:sage [2015/07/09(木) 01:53:20.78 ID:g6fEFdH+.net]
>>824
頭悪いやつ馬鹿にしてごめんな

846 名前:デフォルトの名無しさん mailto:sage [2015/07/09(木) 07:02:04.30 ID:yvZx6GXv.net]
>>826
どのコンパイラですか?

847 名前:デフォルトの名無しさん mailto:sage [2015/07/09(木) 12:07:18.75 ID:p7UoE0Xe.net]
vc6 mfcつこうとるで

848 名前:デフォルトの名無しさん [2015/07/09(木) 12:11:44.20 ID:7g9w6aL6.net]
スレチ

849 名前:デフォルトの名無しさん mailto:sage [2015/07/09(木) 17:47:18.76 ID:c0tzkZ6m.net]
のびーるのびーるすとっぷ

850 名前:デフォルトの名無しさん [2015/07/09(木) 17:50:42.34 ID:7g9w6aL6.net]
オタワ
マイクロソフトは「スマホ」から撤退するのか -製造販売部門の大リストラを発表-
toyokeizai.net/articles/-/76331



851 名前:デフォルトの名無しさん mailto:sage [2015/07/09(木) 19:56:26.49 ID:n0IdOdTN.net]
>>822
保守とかならいるかも
でも C++ はバージョンアップ重ねてるから大抵の Visual Studio に移行してると思う
VB6 はいきなり切られたから、VB.NET/C# についていけない >>823 みたいなロートルが泣きながら仕事しているらしい w

852 名前:デフォルトの名無しさん mailto:sage [2015/07/09(木) 19:56:55.97 ID:yvZx6GXv.net]
>>829
何でvs2013使わないんですか?タダなのに。

853 名前:デフォルトの名無しさん mailto:sage [2015/07/09(木) 20:16:09.51 ID:vgLfGCMi.net]
VC6は20年前のマシン向けなので超軽快
最新のを使っても利点を生かせなければクソ重いだけ

854 名前:デフォルトの名無しさん mailto:sage [2015/07/09(木) 20:19:49.88 ID:yvZx6GXv.net]
>>835
なるほど。
ちなみにですが、主にどんなアプリ作っているんですか?

855 名前:デフォルトの名無しさん mailto:sage [2015/07/09(木) 20:24:14.04 ID:f3titK1c.net]
>>835
20年前のマシン使ってんならそうだろうが
現行のマシンなら重いとかなくね 

856 名前:デフォルトの名無しさん mailto:sage [2015/07/09(木) 20:27:35.85 ID:aXzlg7or.net]
VC6ってサービスパックあてていくと
突然ルートディレクトリに大量にファイル作りやがる

857 名前:デフォルトの名無しさん mailto:sage [2015/07/09(木) 23:45:09.30 ID:iEWXCywy.net]
2010だかもそうだったような
%TMP%くらい満足に使いこなして欲しいな

858 名前:デフォルトの名無しさん mailto:sage [2015/07/10(金) 18:08:59.61 ID:LUw9Kp5I.net]
女にモテなくなるAPI教えろ
女が寄って来てうざい

859 名前:デフォルトの名無しさん mailto:sage [2015/07/10(金) 18:42:14.59 ID:Yv19xyy0.net]
if文の実装部はいいからさ‥

860 名前:デフォルトの名無しさん mailto:sage [2015/07/10(金) 19:25:51.10 ID:k4W3SF84.net]
VOID WINAPI AsYouAre(VOID);



861 名前:デフォルトの名無しさん mailto:sage [2015/07/10(金) 19:30:08.09 ID:DCa/3nZ3.net]
VOID WINAPI LetItBeNaked(VOID);

862 名前:デフォルトの名無しさん mailto:sage [2015/07/11(土) 14:56:24.84 ID:jgnuth+z.net]
脳波を読み取って、読み取った脳派から、画面上にその人好みのエロ画像を表示するAPIを教えろ

863 名前:デフォルトの名無しさん mailto:sage [2015/07/11(土) 15:45:07.97 ID:wDiLgvvw.net]
BOOL WINAPI BakahaKiero(VOID);

864 名前:デフォルトの名無しさん mailto:sage [2015/07/11(土) 16:29:04.41 ID:Vyaa6yc0.net]
面白いと思って続けてるんですかねえ?

865 名前:デフォルトの名無しさん mailto:sage [2015/07/11(土) 16:44:46.30 ID:uKki+Yew.net]
年を取るとオヤジギャグを言いたくなる傾向と同じなのだろうか

866 名前:デフォルトの名無しさん mailto:sage [2015/07/11(土) 16:53:35.40 ID:jgnuth+z.net]
脳裏に浮かんだのがブスだったら消去するAPI教えろ

867 名前:デフォルトの名無しさん mailto:sage [2015/07/11(土) 19:30:31.76 ID:SvdcMd32.net]
VOID Kill(>>848, Forced, Immediate)

868 名前:デフォルトの名無しさん [2015/07/11(土) 20:17:46.31 ID:coKbQ2xf.net]
BAN(>>849);
hehe(^^);

869 名前:デフォルトの名無しさん mailto:sage [2015/07/12(日) 00:47:29.54 ID:ijGXRf9p.net]
ImmortalObject()

870 名前:デフォルトの名無しさん mailto:sage [2015/07/12(日) 01:14:26.18 ID:FRFJl4lk.net]
APIを作るAPI下さい



871 名前:デフォルトの名無しさん mailto:sage [2015/07/12(日) 01:58:25.70 ID:bNKEejS1.net]
おとこわります

872 名前:デフォルトの名無しさん [2015/07/13(月) 09:21:30.26 ID:JZVSQPVK.net]
>>852-853
www.unchi-time.com/variety

873 名前:デフォルトの名無しさん [2015/07/13(月) 14:45:24.72 ID:vELytWdS.net]
HANDLE型を返す関数が失敗した場合に
INVALID_HANDLE_VALUEを返すものとNULLを返すものがあって
分かりづらいのでどちらかに統一して欲しいのですが。

874 名前:デフォルトの名無しさん mailto:sage [2015/07/13(月) 16:14:06.02 ID:VD4KavgG.net]
>>855
もう手遅れです

875 名前:デフォルトの名無しさん [2015/07/13(月) 17:38:08.57 ID:UxTEJ+9t.net]
GetLastError()

876 名前:デフォルトの名無しさん mailto:sage [2015/07/13(月) 18:19:23.97 ID:FYGRXR4u.net]
エラーを調べるには関数を使います。

877 名前:デフォルトの名無しさん mailto:sage [2015/07/13(月) 20:02:07.71 ID:A8Ot3jfM.net]
GetLastErrorOfGetLastError()

878 名前:デフォルトの名無しさん mailto:sage [2015/07/13(月) 21:43:44.20 ID:c4ofviqJ.net]
>>855
NULL なんて返す奴あったっけ?
そもそもポインタじゃないし
まあ、MS のやることだからあっても不思議はないか w

879 名前:デフォルトの名無しさん mailto:sage [2015/07/13(月) 22:04:33.05 ID:009JjLRI.net]
むしろ極めてまれに INVALID_HANDLE_VALUE が出てきてやられるというイメージだが

880 名前:デフォルトの名無しさん mailto:sage [2015/07/13(月) 22:45:48.63 ID:oy7UoxZD.net]
むしろ
SetLastError()



881 名前:デフォルトの名無しさん mailto:sage [2015/07/13(月) 23:11:16.60 ID:cxTds9wU.net]
>>862
APIフック

882 名前:デフォルトの名無しさん mailto:sage [2015/07/14(火) 03:29:01.99 ID:/TaTU2Zl.net]
>>860
確かあったな、メモリマップトファイルとかじゃなかったか?

883 名前:デフォルトの名無しさん [2015/07/14(火) 03:29:10.64 ID:myrBvFFH.net]
>>858
それな

884 名前:デフォルトの名無しさん mailto:sage [2015/07/14(火) 10:02:05.35 ID:aQ7CHF0E.net]
>>857がエラーチェックにGetLastError使ってそう

885 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2015/07/14(火) 18:13:59.16 ID:2KYZ+h7+.net]
WM_TIMERってマルチスレッドになってるのかな

886 名前:デフォルトの名無しさん mailto:sage [2015/07/14(火) 22:13:11.77 ID:HOS5JxSe.net]
>>864
おお、ほんとだ
CreateFileMapping( ) とかは NULL を返すんだな
しかも第一引数も HANDLE 型で INVALID_HANDLE_VALUE 云々とか...
何をどう考えたらこんな設計になるんだろう?

887 名前:デフォルトの名無しさん mailto:sage [2015/07/15(水) 08:52:22.07 ID:RUlladwo.net]
その手の謎は大抵Old New Thingsで説明されてる
blogs.msdn.com/b/oldnewthing/archive/2004/03/02/82639.aspx

888 名前:デフォルトの名無しさん mailto:sage [2015/07/15(水) 12:43:05.08 ID:87IId9CT.net]
>>868
mallocに合わせたんじゃね

889 名前:デフォルトの名無しさん mailto:sage [2015/07/15(水) 19:06:29.05 ID:TqiY1lgM.net]
せやな

890 名前:デフォルトの名無しさん mailto:sage [2015/07/15(水) 20:31:28.97 ID:GwyaNqFE.net]
せやろか



891 名前:デフォルトの名無しさん mailto:sage [2015/07/15(水) 20:37:32.89 ID:KRGDXVVB.net]
せやせや

892 名前:デフォルトの名無しさん mailto:sage [2015/07/15(水) 21:29:18.71 ID:2t4VwR8U.net]
>>870
malloc( ) が返すのはポインタだからねぇ

893 名前:デフォルトの名無しさん mailto:sage [2015/07/15(水) 21:40:45.35 ID:GwyaNqFE.net]
GlobalAlloc

894 名前:デフォルトの名無しさん [2015/07/21(火) 10:02:35.99 ID:tCWoA/Ex.net]
ウィンドウが最小化されるときにSetWindowPosで設定される位置(-32000,-32000)になんか意味あんの?

895 名前:デフォルトの名無しさん mailto:sage [2015/07/21(火) 11:04:01.49 ID:CRPPOL9n.net]
風来のシレンでエーテルデビルの肉を食ったときみたいな感じ?

896 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2015/07/21(火) 16:40:23.46 ID:PRXZAEwH.net]
>>876
2バイト整数で小さい数を選んだだけとちゃう?
実際、その位置にあったら見えないし

897 名前:デフォルトの名無しさん mailto:sage [2015/07/21(火) 21:18:04.44 ID:MZjkxTxw.net]
4Kディスプレイを10枚横に並べて、それらを
メインディスプレイの左側に配置したらどうなるんだろうね。
最小化したはずのウィンドウが、-32000に集まって表示されてたら笑えるんだが。
というかその前に4Kディスプレイを横に10枚並べると、
short int の範囲を超えるわけだが、Windows的にはどうなるんだろう。

898 名前:デフォルトの名無しさん mailto:sage [2015/07/22(水) 02:37:38.64 ID:wwLVthBa.net]
新しい問題になりそうな
そういえば、bitmapのファイルフォーマットとかも縦横のサイズが2バイトしかとられてなかったな

899 名前:デフォルトの名無しさん mailto:sage [2015/07/22(水) 04:20:59.50 ID:drU6njtJ.net]
-32000は今内部でそうなっているというだけで
APIを使う側でマジックナンバーとして用いられる物ではないので
変えようと思えばいつでも変えられる数字だ
またビットマップのサイズはLONGだ

900 名前:デフォルトの名無しさん mailto:sage [2015/07/22(水) 07:20:55.54 ID:gO2ya5VL.net]
bmpのヘッダー内のサイズがshortなのは古い形式みたいだな



901 名前:デフォルトの名無しさん mailto:sage [2015/07/22(水) 09:51:46.52 ID:FCe8t7wt.net]
Windows 2.xとかOS/2 1.xで使われてたヘッダね
Windows 9xは最小化時に3000,3000に配置されるので最小化されたウィンドウが見えたりする
blogs.msdn.com/b/oldnewthing/archive/2004/10/28/249044.aspx
メッセージとかでサイズや座標を16ビットで扱ってるところがいっぱいあるから問題になるとすればそっちだが

902 名前:デフォルトの名無しさん mailto:sage [2015/07/22(水) 16:52:16.53 ID:DzvVxqVc.net]
ビットマップのサイズじゃなくて、ウィンドウサイズのほうが問題。
GET_X_LPARAMとかの引数のlParamは32bitで、
これを二つに分けて使っているので、16bit幅しかない。

903 名前:デフォルトの名無しさん mailto:sage [2015/07/22(水) 18:10:35.27 ID:gO2ya5VL.net]
64bit環境では64bitだけど互換性なくなるしな

904 名前:デフォルトの名無しさん mailto:sage [2015/07/26(日) 23:34:20.25 ID:m4Er4LcO.net]
WS_EX_ACCEPTFILESを設定して、spy++で設定されていることが確認できてるのに
dropしようとしても、カーソルが進入禁止のままってなんでですか?

ほかになにか必要ですか?

905 名前:デフォルトの名無しさん mailto:sage [2015/07/26(日) 23:40:25.43 ID:gM3hZclC.net]
>>886
ない

906 名前:デフォルトの名無しさん mailto:sage [2015/07/26(日) 23:42:53.64 ID:kbQtFiQ+.net]
DragAcceptFilesは試してみた?

907 名前:デフォルトの名無しさん mailto:sage [2015/07/26(日) 23:49:49.06 ID:nMu2ki+q.net]
>>886
>>888だけでWS_EX_ACCEPTFILEXいらんで

908 名前:デフォルトの名無しさん mailto:sage [2015/07/28(火) 11:48:08.72 ID:+s6a8TfC.net]
エスパーするとドラッグ元と先のプログラムの権限が違う

909 名前:デフォルトの名無しさん mailto:sage [2015/07/28(火) 20:58:01.70 ID:+BTdJW4u.net]
>>886
www.geocities.jp/midorinopage/Beginner/beginner24.html
case WM_CREATE:

910 名前:
DragAcceptFiles(hWnd,TRUE); // D&D を許可する
[]
[ここ壊れてます]



911 名前:デフォルトの名無しさん mailto:sage [2015/07/28(火) 21:26:09.25 ID:sFAhL5HY.net]
そんなクソAPIは
至高のRegisterDragDrop様に跪くべきだよね?

912 名前:デフォルトの名無しさん mailto:sage [2015/07/28(火) 22:03:28.60 ID:iGgxwEKd.net]
API一つで済むならそれに越したことはない
まあIDropTarget実装しないとドラッグイメージすら描けないけど

913 名前:デフォルトの名無しさん mailto:sage [2015/07/28(火) 23:02:51.80 ID:dCM9/1ij.net]
IDropTargetってメモリリークしない?
RevokeDragDrop呼んでも、参照カウンタが-1されないんだが。
鬱陶しいんで、強制的にdeleteしている。

914 名前:デフォルトの名無しさん mailto:sage [2015/07/29(水) 02:56:54.02 ID:m35CSydP.net]
は? しねーよカス低能失せろ

915 名前:デフォルトの名無しさん mailto:sage [2015/07/29(水) 06:10:32.63 ID:ozMfiNSe.net]
ちゃんとデータオブジェクトをReleaseしないとだめよ

916 名前:デフォルトの名無しさん mailto:sage [2015/07/29(水) 08:37:39.33 ID:yPzqCl4K.net]
>>891
WS_EX_ACCEPTFILESを指定すればDragAcceptFilesの呼び出しは不要
逆にDragAcceptFilesを呼ぶならWS_EX_ACCEPTFILESは不要
つまりそのサイトの記述は間違い

917 名前:デフォルトの名無しさん mailto:sage [2015/07/29(水) 09:00:30.59 ID:yPzqCl4K.net]
よく見たらそのページ

> TCHAR szDropFile[MAX_PATH + 1];

MAX_PATHに+1してるのもおかしいし

> if((lstrcmp(PathFindExtension(szDropFile),TEXT(".bmp")) == 0) ||
> (lstrcmp(PathFindExtension(szDropFile),TEXT(".BMP")) == 0))

なぜlstrcmpiを使わないのか…
.Bmpとかだったらどうなるのかと

918 名前:デフォルトの名無しさん mailto:sage [2015/07/29(水) 09:41:27.14 ID:2NWQ7kCA.net]
Windows 10 SDKってまだ?

919 名前:デフォルトの名無しさん mailto:sage [2015/07/29(水) 10:23:44.49 ID:c3o2n8R7.net]
>>898
+1するといけないのか?

920 名前:デフォルトの名無しさん mailto:sage [2015/07/29(水) 10:39:41.59 ID:r60oeVP/.net]
俺様の流儀に反するコードはすべてクソです



921 名前:デフォルトの名無しさん mailto:sage [2015/07/29(水) 11:11:35.12 ID:GXftD+7W.net]
+1はどうせ\0の分を考慮してるんだろうが、MAX_PATHには既に含まれている。

922 名前:デフォルトの名無しさん mailto:sage [2015/07/29(水) 11:17:29.49 ID:5YdTwoj1.net]
パスの最大長って、本当にMAX_PATHで良いんでしょうかね。
パスの頭に\\?\か何か付け加えると、32000文字までOKとか言うのもあるし。
MAX_PATHを超えるパスを持つファイルは、コマンドラインとかからだと作れるし。
でも、そういうファイルはエクスプローラだとバグるんで、やっぱり気にする必要ないんですかね。

923 名前:デフォルトの名無しさん mailto:sage [2015/07/29(水) 11:18:48.72 ID:RzPhPosx.net]
仕様をちゃんと読んでないんだなあということで信用度-1

924 名前:デフォルトの名無しさん mailto:sage [2015/07/29(水) 11:24:29.52 ID:RzPhPosx.net]
>>903
https://msdn.microsoft.com/en-us/library/windows/desktop/aa365247(v=vs.85).aspx

925 名前:デフォルトの名無しさん mailto:sage [2015/07/29(水) 11:31:46.27 ID:5YdTwoj1.net]
てことは、他所のパソコンの共有ファイルなんかにアクセスする可能性も考えると、
MAX_PATHでは不十分ってこと?

926 名前:デフォルトの名無しさん mailto:sage [2015/07/29(水) 13:42:05.84 ID:c3o2n8R7.net]
>>903
俺は用心深いのでパス格納用の領域は毎回mallocで必要サイズを確保するぞ。

927 名前:デフォルトの名無しさん mailto:sage [2015/07/29(水) 14:55:59.27 ID:xy7GgrmF.net]
>>901
大文字小文字を考慮してるのにもかかわらず全ての可能性までは考慮していないクソコード

>>907
用心深いと言う事は
p = malloc()
if(p == NULL)
と毎回やってるのか確保用関数でも作ってんのか

928 名前:デフォルトの名無しさん mailto:sage [2015/07/29(水) 14:57:19.72 ID:c3o2n8R7.net]
>>908
>p = malloc()
>if(p == NULL)
>と毎回やってるの
はい。

929 名前:デフォルトの名無しさん mailto:sage [2015/07/29(水) 14:57:28.73 ID:xy7GgrmF.net]
>>898
TCHAR, TEXT("")使ってんのにlstrcmpもおかしいよな
_tcscmpにしろと

930 名前:デフォルトの名無しさん mailto:sage [2015/07/29(水) 15:00:49.43 ID:xy7GgrmF.net]
>>909
そんなあなた



931 名前:
try {
p1 = NULL
p2 = NULL
p1 = new
p2 = new
p3 = new
}
catch(const std::bad_alloc &) {
// 失敗時の処理
delete p2;
delete p1;
}
[]
[ここ壊れてます]

932 名前:デフォルトの名無しさん mailto:sage [2015/07/29(水) 15:04:45.93 ID:c3o2n8R7.net]
>>911
俺だったらdeleteしたあとNULL代入するよ。

933 名前:デフォルトの名無しさん mailto:sage [2015/07/29(水) 15:06:23.98 ID:RzPhPosx.net]
std::vector<TCHAR>でいいやん
VS2013以降ならstd::stringもバッファとして使用できる

934 名前:デフォルトの名無しさん mailto:sage [2015/07/29(水) 15:20:39.60 ID:xy7GgrmF.net]
>>912
deleteを重複させるような事になるならそうだな

935 名前:デフォルトの名無しさん mailto:sage [2015/07/29(水) 15:28:15.78 ID:eAAheHcV.net]
ものすげえ低レベルな会話してんな…
昨日今日C++を知ったのか?

936 名前:デフォルトの名無しさん mailto:sage [2015/07/29(水) 15:31:21.63 ID:c3o2n8R7.net]
>>915
じゃあ高レベルなネタを頼む。退屈なんで。

937 名前:デフォルトの名無しさん mailto:sage [2015/07/29(水) 15:34:08.72 ID:KIQD62Zp.net]
Direct2Dの質問ってどこで聞けばいい?

938 名前:デフォルトの名無しさん [2015/07/29(水) 16:57:48.19 ID:1zEW+9y+.net]
>>916
このスレでやることじゃない

939 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2015/07/29(水) 17:24:26.11 ID:8zhTwlQ7.net]
>>917
こっちだよ

【C++】 DirectX初心者質問スレ Part39 【C】 [転載禁止]・2ch.net
peace.2ch.net/test/read.cgi/tech/1418438785/

940 名前:デフォルトの名無しさん mailto:sage [2015/07/29(水) 19:38:49.56 ID:5YdTwoj1.net]
ファイルオープンダイアログに渡す、
結果を返してもらうためのバッファってどれぐらい必要なんですかね。
やっぱ32000?それともMAX_PATHで十分?



941 名前:デフォルトの名無しさん mailto:sage [2015/07/29(水) 19:48:44.80 ID:7PHxXKam.net]
バッファサイズを指定するフィールドがある時点で察しろよ
最低256文字、上限は不定だ
嫌ならWindowsでプログラム書くのやめろ

942 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2015/07/29(水) 19:58:16.70 ID:8zhTwlQ7.net]
複数選択可の場合は相当大きくしないと全部開けないだろうな。
いっぺんに100個のファイルを開くユーザーも居るだろうし。

943 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2015/07/29(水) 20:02:43.21 ID:8zhTwlQ7.net]
アプリ側があらかじめ確保した固定バッファを使う仕様はWin32の欠陥だろうな。
OS側が動的に確保するのが理想的。

944 名前:デフォルトの名無しさん mailto:sage [2015/07/29(水) 20:09:20.43 ID:ozMfiNSe.net]
なんでパス文字列前提なんだよ
石器時代かよ
IShellItemArrayとかで返すんだろ

945 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2015/07/29(水) 20:37:50.03 ID:8zhTwlQ7.net]
ここかな?
www.codeproject.com/Articles/16678/Vista-Goodies-in-C-Using-the-New-Vista-File-Dialog

946 名前:デフォルトの名無しさん mailto:sage [2015/07/29(水) 20:56:41.63 ID:7PHxXKam.net]
GetOpenFileNameなんてwin3.1からあるわけで

947 名前:デフォルトの名無しさん mailto:sage [2015/07/29(水) 23:12:05.83 ID:CRqVMe5R.net]
4096にしてる
256ではとても足りない
SUSIEとか古いアプリがパス長すぎると死ぬるのが辛い

948 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2015/07/29(水) 23:20:24.49 ID:8zhTwlQ7.net]
Susieってあの画像関係の? 古いよ古すぎるよ。Windows95時代じゃね?
いい加減代わりのものを誰かが新しく作り直さないと。

949 名前:デフォルトの名無しさん mailto:sage [2015/07/29(水) 23:27:16.85 ID:eAAheHcV.net]
MagickWandでも使えば
死ぬほど対応形式多いぞ

950 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2015/07/29(水) 23:44:49.69 ID:8zhTwlQ7.net]
基本設計が間違っているプロジェクトは長続きしない。



951 名前:デフォルトの名無しさん mailto:sage [2015/07/30(木) 23:04:49.15 ID:3aeaJx+C.net]
Windowsの基本設計は完璧だから長続きしてるんだよね。

952 名前:デフォルトの名無しさん mailto:sage [2015/07/31(金) 16:20:53.11 ID:Dkg4afbG.net]
プロセス間通信やVirtualAlloc辺りの仕様が変わってないのが助かる
パス名とか固定長データ型扱うAPIは仕方ないんじゃないかな

953 名前:デフォルトの名無しさん mailto:sage [2015/07/31(金) 20:36:22.17 ID:ueomFH8Y.net]
パス操作系のAPIって、文字列の長さがMAX_PATHを超えたら
エラーになるもんな。

954 名前:デフォルトの名無しさん mailto:sage [2015/07/31(金) 20:46:29.01 ID:fRz1WIXA.net]
>>931
APIは「〜Ex」で建て増しだらけなわけだが...

955 名前:デフォルトの名無しさん mailto:sage [2015/07/31(金) 21:21:12.37 ID:D+nD3a7O.net]
COMも

IFoo
IFoo2
IFoo3
...

とかあるもんな
拡張してるなーとか思ってたらあっさり新OSでサポートなくなるかもよー?とか警告されたり
実際にサポートぶち切られるのはあんまり聞かないけど

956 名前:デフォルトの名無しさん mailto:sage [2015/07/31(金) 21:22:00.27 ID:D+nD3a7O.net]
サポートは切られなくても
E_NOTIMPLが帰ってきたりはするか

957 名前:デフォルトの名無しさん mailto:sage [2015/08/01(土) 09:44:31.69 ID:406fNIXp.net]
人口知能に使えるapi教えろ

958 名前:デフォルトの名無しさん [2015/08/01(土) 10:17:58.43 ID:ofIED9A/.net]
CreateFile

959 名前:デフォルトの名無しさん mailto:sage [2015/08/01(土) 11:08:26.38 ID:ejRhEGfZ.net]
bluetooth通信できますか

960 名前:デフォルトの名無しさん mailto:sage [2015/08/01(土) 13:20:33.78 ID:/YTF1HLD.net]
>>924
その手のCOMは、必要十分なメソッドがなかったりするからな

少し外れたことをやるには、結局ネイティブAPIに落とすことになる。
パワーシェルを使うシステム担当が使うもので、真面目にソフトウェアを開発するから、ネイティブを使った方がテストが楽で、保証できる品質も最低限までは向上できる。

使い捨てのソフトウェア用



961 名前:デフォルトの名無しさん mailto:sage [2015/08/01(土) 14:00:35.06 ID:oNQPgTQj.net]
APIを極めたい
APIの作り方を教えろ

962 名前:デフォルトの名無しさん mailto:sage [2015/08/01(土) 14:14:02.06 ID:N1liDq/U.net]
まずMicrosoftに入社します

963 名前:デフォルトの名無しさん mailto:sage [2015/08/01(土) 15:49:52.69 ID:4mrxGYsr.net]
作り方って言ってんだろカス

964 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2015/08/01(土) 16:09:14.50 ID:EYue673y.net]
DLLの作り方を学べ。

965 名前:デフォルトの名無しさん mailto:sage [2015/08/01(土) 16:32:09.71 ID:4mrxGYsr.net]
うるせーなAPI作れればそれでいいんだよ
余計なもん学んでる暇はない
俺は最短コースでAPIを作る必要迫られてる

966 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2015/08/01(土) 16:52:17.88 ID:/RIOF0J6.net]
Win32 APIのほとんどがDLLで出来ている。
Web API作りたいならJavaScriptを勉強しろ。

967 名前:デフォルトの名無しさん mailto:sage [2015/08/01(土) 19:45:44.71 ID:waGA91Tw.net]
javascriptでWin32APIを叩きたい

968 名前:デフォルトの名無しさん mailto:sage [2015/08/01(土) 19:48:30.36 ID:4mrxGYsr.net]
JavaScriptとかガキのお遊びだろ
学ぶ気にならんな

969 名前:デフォルトの名無しさん mailto:sage [2015/08/01(土) 19:50:05.26 ID:4FytA4pZ.net]
俺達は最短コースでお前ををおちょくる必要に迫られてるんだ

970 名前:デフォルトの名無しさん mailto:sage [2015/08/01(土) 20:27:07.14 ID:aojbSuUF.net]
イタリア人の知人が2・3年前にMSのIEチームに就職したそうな
今頃どうなってるんだろうな



971 名前:デフォルトの名無しさん mailto:sage [2015/08/01(土) 20:30:46.58 ID:4mrxGYsr.net]
オブジェクト指向とかガキのお遊びに興味はないんだ

972 名前:デフォルトの名無しさん mailto:sage [2015/08/02(日) 18:42:33.69 ID:Q52Atkvt.net]
おいおい、Windows10でVerifyVersionInfoがおかしな値を返してこないか?

973 名前:デフォルトの名無しさん mailto:sage [2015/08/02(日) 18:48:15.13 ID:q/ikqjRA.net]
マニフェストいじらないとダメだってさ

VerifyVersionInfo is deprecated for Windows 10
https://msdn.microsoft.com/en-us/library/windows/desktop/ms725492(v=vs.85).aspx

974 名前:デフォルトの名無しさん [2015/08/02(日) 19:07:18.07 ID:dTRZmQiN.net]
さすが最後のバージョンだけあるな

975 名前:デフォルトの名無しさん mailto:sage [2015/08/02(日) 19:36:54.84 ID:USeAoY49.net]
Win64APIにスレタイ改名しろや
32bit使ってる化石はしね

976 名前:デフォルトの名無しさん mailto:sage [2015/08/02(日) 20:16:26.16 ID:SLv/zRdd.net]
win64 で HWND も HINSTANCE も 8バイトになったの?

977 名前:デフォルトの名無しさん mailto:sage [2015/08/02(日) 20:29:42.24 ID:5wrdjVlg.net]
うるせえな
お前は口答えせず言われたことをやってりゃいいんだよ

978 名前:デフォルトの名無しさん mailto:sage [2015/08/02(日) 21:06:23.41 ID:ROYi8F/F.net]
デスクトップレコーディングのソフトを作りたいんですけど、
音声のキャプチャに、サウンドカードのステレオミックスを使用しない方法って何かないでしょうか?

979 名前:デフォルトの名無しさん mailto:sage [2015/08/02(日) 21:48:15.72 ID:MF9TQU9s.net]
音関係はDTM関係で調べればバイパスするツールが沢山あると思う

980 名前:デフォルトの名無しさん mailto:sage [2015/08/02(日) 22:20:13.59 ID:HOry/lAS.net]
>>956
なったけど上位4バイトは空なんじゃなかったっけ



981 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2015/08/02(日) 23:14:37.59 ID:/jG0U/Tz.net]
Win32 APIで暗号化仮想ドライブの作り方を教えて下され、お願いぴょん☆

982 名前:デフォルトの名無しさん [2015/08/03(月) 02:43:55.92 ID:TVbEWMpV.net]
どんな暗号化でも復号化については

1.暗号復号のアルゴリズムがわかること
2.鍵がわかること

の両方が破られることが条件

AESは「1.をわざわざ公開してる」ということが問題
つまり鍵をしらみつぶしで総当たりすればいつかは解けることが保証される

本来の暗号のキモは「1.が不明であること」なんだよな

983 名前:デフォルトの名無しさん mailto:sage [2015/08/03(月) 02:45:31.44 ID:fJ/F2Qaa.net]
お前最高にアホだろ

984 名前:デフォルトの名無しさん mailto:sage [2015/08/03(月) 05:58:38.44 ID:vbPvRk2A.net]
>本来の暗号のキモは「1.が不明であること」
今まで考案されてきた暗号の中には,
暗号鍵がわからなくても簡単に解かれてしまう
場合があった.オレオレ似非暗号を排除するため
あえて暗号方法を公開して検証のフィルタを通している.

運用において AES をつかっているとか towfish, RC5 とか
そういうのを公開しないことは,ありだとうは思うが
まあそういうのを秘密にする努力を払う必要もない

鍵だけ秘密にすれば十分

985 名前:デフォルトの名無しさん mailto:sage [2015/08/03(月) 08:58:18.55 ID:j8uLMTyN.net]
独自アルゴリズムに拘る奴ってこういう思考をしてたのか
なるほど、話が通じないわけだ

986 名前:デフォルトの名無しさん mailto:sage [2015/08/03(月) 10:10:35.22 ID:r+fa7m6A.net]
頭悪い奴って話通じないって言葉好きだよね

987 名前:デフォルトの名無しさん mailto:sage [2015/08/03(月) 11:34:59.16 ID:scYGV4Wn.net]
何かトラウマでもほじくられましたか?

988 名前:デフォルトの名無しさん mailto:sage [2015/08/03(月) 12:14:33.23 ID:TzOErtto.net]
喰い付き良杉

989 名前:デフォルトの名無しさん mailto:sage [2015/08/03(月) 15:19:46.84 ID:Q+4RHReL.net]
>>967
何かトラウマでもほじくられましたか?

990 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2015/08/03(月) 17:38:55.94 ID:/P0N0OgP.net]
TypicalWindowsApp --- a template project of Win32 Window application
https://github.com/katahiromz/TypicalWindowsApp

よろしくね!!!



991 名前:デフォルトの名無しさん mailto:sage [2015/08/03(月) 22:43:42.64 ID:9Adfwx+a.net]
OutputDebugStringがスレッドセーフでないようなのですが…。
自分で排他制御しなきゃならんのでしょうか?

992 名前:デフォルトの名無しさん mailto:sage [2015/08/03(月) 22:52:59.42 ID:PIBA7Cur.net]
>>971
んなアホな!

993 名前:デフォルトの名無しさん mailto:sage [2015/08/03(月) 22:59:06.61 ID:VaWxuZf6.net]
>>971
どう呼んだらどう出力されたかね
(スレッドセーフでないバッファ/ポインタを渡しちゃったりしてないかね)

994 名前:デフォルトの名無しさん mailto:sage [2015/08/03(月) 23:43:45.56 ID:9Adfwx+a.net]
すいませんアホでした。
OutputDebugStringを拡張して書式文字列版を自作してたのですが
そこで使ってる一

995 名前:档oッファが原因でした。 []
[ここ壊れてます]

996 名前:デフォルトの名無しさん mailto:sage [2015/08/03(月) 23:58:25.28 ID:PIBA7Cur.net]
>>974
俺も昔同じ失敗したよ。
文字列長に応じてmallocする作戦で対応したわ。毎回malloc/freeって言うのもなんだけどなあ。

997 名前:デフォルトの名無しさん mailto:sage [2015/08/04(火) 00:14:42.86 ID:G/ht5QpM.net]
>>971
何を見てスレッドセーフでないと判断したんだ?
(まあ、だいたい想像できるけど w)

998 名前:デフォルトの名無しさん mailto:sage [2015/08/04(火) 08:12:33.10 ID:FXpRAemv.net]
>>976
何かトラウマでもほじくられましたか?

999 名前:デフォルトの名無しさん mailto:sage [2015/08/04(火) 10:55:07.29 ID:3xU88wGi.net]
>OutputDebugString
ってどうしてprintfと同じ可変引数関数にしなかったんだろう?
そっちのほうが使い易いと思う。

1000 名前:デフォルトの名無しさん mailto:sage [2015/08/04(火) 11:19:14.05 ID:TW35b31Y.net]
可変長引数は、WINAPIじゃ無理なんで、よろしく



1001 名前:デフォルトの名無しさん mailto:sage [2015/08/04(火) 14:58:01.68 ID:U/H7c7WN.net]
PC固有情報としてMACアドレスを取得するため、GetIfTable を使って情報を取得しました。
MACアドレス(ネットワークアダプタ)は複数あるので、その中から有線LANアダプタを調べるべく
MIB_IFROW の各値から以下の条件で絞り込みました。
 dwType == MIB_IF_TYPE_ETHERNET
 dwMtu == 1500
 dwSpeed == 10 で割り切れる値

おおよそ期待できる結果になったのですが、VMwareの仮想ネットワークアダプタも引っかかってしまいます。
何かいい方法はないでしょうか?

1002 名前:デフォルトの名無しさん mailto:sage [2015/08/04(火) 15:07:56.61 ID:U/H7c7WN.net]
連投失礼。

Win7以降(?)のネットワークと共有センターで表示される「ネットワーク」と
「識別されていないネットワーク」というのがありますが、この後者に
VMwareのアダプタが表示されていますので、意図した動作を得るためには
この情報が取れたらいいような気はしています。

先の書き込みでは有線LANアダプタとは書きましたが、それが存在しないで
他の手段でインターネットに接続しているケースもあるでしょうから、
なおさら先述の情報が取れた方がいいような気がします。

この情報はどこから取れるでしょうか?

1003 名前:デフォルトの名無しさん mailto:sage [2015/08/04(火) 18:20:31.80 ID:wPc1LIE6.net]
dwMtuなんて決め打ちしちゃってええのか?ええのか?

1004 名前:デフォルトの名無しさん mailto:sage [2015/08/04(火) 19:09:04.41 ID:XYxgq3dx.net]
質問に質問で返すなやハゲ
いいからはよ答えろ

1005 名前:デフォルトの名無しさん mailto:sage [2015/08/04(火) 19:49:12.54 ID:U/H7c7WN.net]
>>982
ええんです。今のところは。
>981の情報が取れたら MTU での判定は無くせそうかなと。

>>983
ハゲ

1006 名前:デフォルトの名無しさん [2015/08/04(火) 20:01:25.12 ID:B++mZrPl.net]
>>979
Win16のPASCALのことをいいたいのか
そうだとしても、wsprintfはあったのだが

1007 名前:デフォルトの名無しさん mailto:sage [2015/08/04(火) 20:20:56.35 ID:wPc1LIE6.net]
名前でVMWareってあったら除外すればいいんじゃね?

1008 名前:デフォルトの名無しさん mailto:sage [2015/08/04(火) 20:22:48.18 ID:TW35b31Y.net]
wsprintfはランタイムライブラリでゲス
OutputDebugStringはAPIでゲズ

1009 名前:デフォルトの名無しさん mailto:sage [2015/08/04(火) 20:26:49.69 ID:mWLd8l1I.net]
次スレは

1010 名前:デフォルトの名無しさん mailto:sage [2015/08/04(火) 20:47:15.53 ID:U/H7c7WN.net]
>>986
最悪はそうしようかと思いますが、よりいい方法があれば。



1011 名前:デフォルトの名無しさん mailto:sage [2015/08/04(火) 21:07:11.36 ID:g8Wyj7Bw.net]
>>981
お前980踏んどいて逃走かよ。はやく次スレ立てろ

1012 名前:デフォルトの名無しさん mailto:sage [2015/08/04(火) 22:33:26.18 ID:U/H7c7WN.net]
無理でした。他の方お願いします。

Win32APIについての質問はこちらへどうぞ。

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

■過去スレ
Win32API質問箱 Build120
peace.2ch.net/test/read.cgi/tech/1428570962/

1013 名前:デフォルトの名無しさん mailto:sage [2015/08/04(火) 22:35:24.51 ID:tKzV+rUu.net]
次スレ
Win32API質問箱 Build121
peace.2ch.net/test/read.cgi/tech/1438695290/

1014 名前:デフォルトの名無しさん mailto:sage [2015/08/05(水) 07:11:26.39 ID:8R5fikiq.net]
>>992
乙乙

1015 名前:デフォルトの名無しさん mailto:sage [2015/08/05(水) 09:45:04.30 ID:nxXw/daG.net]
wsprintfだけcdeclで定義してんだっけ
安易な発想だ

1016 名前:デフォルトの名無しさん mailto:sage [2015/08/05(水) 11:08:15.36 ID:QXzoL0Ts.net]
>>991-992
よくやった。ほめてやろう

1017 名前:デフォルトの名無しさん mailto:sage [2015/08/05(水) 12:11:14.99 ID:bXDjutxr.net]
細かいことだがテンプレがAdvenced Windowsになってるな。
次立てるとき覚えてたら直してや。

1018 名前:デフォルトの名無しさん mailto:sage [2015/08/06(木) 00:38:14.88 ID:a5tvGPbj.net]
うめうめ

1019 名前:デフォルトの名無しさん mailto:sage [2015/08/06(木) 08:10:35.31 ID:OUOpOK/l.net]
うめめ

1020 名前:デフォルトの名無しさん mailto:sage [2015/08/06(木) 11:54:36.84 ID:FEpHvzaw.net]
めめこ



1021 名前:デフォルトの名無しさん mailto:sage [2015/08/06(木) 17:18:54.97 ID:4xD13DN7.net]
梅沢

1022 名前:デフォルトの名無しさん mailto:sage [2015/08/06(木) 17:19:41.20 ID:4xD13DN7.net]
とどめを刺す!

1023 名前:1001 [Over 1000 Thread.net]
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

1024 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<246KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef