トップページ⇒tech
1001コメント304KB

Win32API質問箱 Build118

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん2014/08/03(日) 04:02:03.38ID:T59meZIw
Win32APIについての質問はこちらへどうぞ。

■過去スレ
Win32API質問箱 Build117
http://peace.2ch.net/test/read.cgi/tech/1394156278/

■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。
 英語版( http://msdn.microsoft.com/en-us/library/ )の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで
0002デフォルトの名無しさん2014/08/03(日) 04:04:04.93ID:T59meZIw
日本マイクロソフト、統合開発環境ツール「Visual Studio 2013」を提供開始 [2013/10/30]
http://news.mynavi.jp/news/2013/10/30/266/
日本マイクロソフトは30日、統合開発環境ツール「Microsoft Visual Studio 2013」
(Visual Studio 2013) の提供を、11月1日より開始すると発表した。
11月1日よりボリュームライセンスの販売を、11月29日よりパッケージ製品の販売を開始する。

「Visual Studio 2013」の主な新機能として、CodeLends機能を搭載。
ソースコード内の表示をクリックすることでTeam Foundation Serverと連携し、
情報をポップアウトして表示できるため、編集履歴やテスト結果などのチームの作業状況を、
画面を切り替えることなくコード内で見ることができる。
Team Foundation Serverに接続できない状況においても、参照している関数の情報をコード内で表示可能。

また、MicrosoftアカウントにサインインしてVisual Studioを使用すると、作業環境が自動的に同期されるため、
別のマシンで作業を行う場合にも、キーボード ショートカットや見た目のデザインなどを同じ環境で使用できる。

そのほか、Windows 8.1のデスクトップアプリとWindowsストアアプリの開発を行うことができ、
XAMLアプリのコード化されたUIテストがサポートされたことで、自動テストが可能になった。

Visual Studio 2013の製品製品ファミリーには、
「Visual Studio Ultimate 2013 with MSDN」や
「Visual Studio Premium 2013 with MSDN」など数種類あり、
参考価格として、
「Visual Studio Ultimate 2013 with MSDN」はボリュームライセンス Open License (SA 2年) が201万円、
リテール版(パッケージ製品)が159万円、
「Visual Studio Premium 2013 with MSDN」はボリュームライセンス Open License (SA 2年) が92万1000円で、
リテール版(パッケージ製品)が72万9000円となっている(いずれも税別)。

http://www.microsoft.com/visualstudio/jpn 日本語版
http://www.microsoft.com/visualstudio/eng 英語版

※ Visual Studio 2013 Update 1
http://www.microsoft.com/ja-jp/download/details.aspx?id=41650
0003デフォルトの名無しさん2014/08/03(日) 04:09:21.67ID:T59meZIw
Visual Studio 2013 Update 3 RC
http://www.microsoft.com/ja-jp/download/details.aspx?id=43398

Visual Studio 2013 part4
http://peace.2ch.net/test/read.cgi/tech/1404333757/
0004デフォルトの名無しさん2014/08/03(日) 04:15:42.40ID:T59meZIw
http://blogs.msdn.com/b/vcblog/archive/2014/06/10/the-great-crt-refactoring.aspx
VC++ Team「リリースごとにバージョン番号付けたC/C++ランタイムDLL止めるわ(msvcrt.dllを使うとは言っていない)」
0005デフォルトの名無しさん2014/08/03(日) 06:49:56.64ID:Qqzbedo3
http://www.buzzword.jp/img/face10.png
0006デフォルトの名無しさん2014/08/03(日) 07:16:03.87ID:zU4sk6Ng
               ノ      ゚.ノヽ  , /}      ...
            ,,イ`"     、-'   `;_' '    ..::::::::::::::...
   ,-、  _.._   (        (,(~ヽ'~     ..:::::::::::::::::::::::
 )'~  レー'  〉   ヽ       i`'}       .:::::::::::::::::::::::
 ~つ     '-ー、  i       | i'     ...:::::::::::::::::::::::
 /       <  /     。/   !  ......:::::::::::::::::::::::::    これは>>1乙じゃなくて
/         ~^´     /},-'' ,●::::::::::::::::::::::::::::::::::::
i、        ,i' _,,...,-‐-、/    i  ::::::::  .:::::::::::::
..ゝ        <,,-==、   ,,-,/      .:::::::::::            放射能がうんたら
 )       {~''~>`v-''`ー゙`'~       ..:::::::::                          ........::.
 {        レ_ノ            ..::::::::.                         ......:::::::::
ノ         ''           ..:::::::                        ...::.:...:::::::::
                     .:::::::::                     ...:......:::::::::::: .
                    .:::::::::::.        .....      ..  ..::::::::::::::::::::::::   :::.
                    ::::::::::::::::.::::::....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.. ::  ::..
                    .:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::    ::.
                    ::::::::::::::::: :::::::::::::::::::::::::::::: :::::
                          .::    ::.  :::
0007デフォルトの名無しさん2014/08/03(日) 07:45:16.92ID:zU4sk6Ng
Win32API でアプリ作りたい人向け free 開発ツール

Tiny C Compiler
http://bellard.org/tcc/

D
http://dlang.org/
D for Win32
http://wiki.dlang.org/D_for_Win32
Win32 DLLs in D
http://wiki.dlang.org/Win32_DLLs_in_D

ネイティブアプリ終了にとどめを刺すかと思われた Atom が自身のネイティブアプリ化とはね
Atom
https://atom.io/
GitHubの各種言語対応コーディング用テキストエディタAtomが完全にオープンソース化
http://jp.techcrunch.com/2014/05/07/20140506github-open-sources-its-atom-text-editor/
GitHub、テキストエディター「Atom」のWindows版を公開
http://www.forest.impress.co.jp/docs/news/20140710_657321.html
0008デフォルトの名無しさん2014/08/03(日) 08:56:52.31ID:zU4sk6Ng
3〜4年前に Win32API で書いて tcc でコンパイルした exe が
Win7 では正常に動いてたのに
Win8 だと表示が可笑しくなってることが判明

GDI+ とか使ってなくて互換性の問題もないと思ってたのにな
Win8 でもう一度コンパイルしなおせば治るかな
0009デフォルトの名無しさん2014/08/03(日) 18:39:11.47ID:Bq+noHxE
tccってコンパイル時のOSに依存するコード吐くか?
元々存在していた不具合が顕在化しただけじゃね?
0010デフォルトの名無しさん2014/08/03(日) 19:40:42.26ID:T59meZIw
dwmapi.dll って何するやつだっけ
0011デフォルトの名無しさん2014/08/03(日) 20:09:46.96ID:+KLBY5j7
http://ja.wikipedia.org/wiki/Desktop_Window_Manager
0012デフォルトの名無しさん2014/08/03(日) 20:42:40.95ID:T59meZIw
有賀豚
0013デフォルトの名無しさん2014/08/04(月) 11:07:19.35ID:VkhvqJe+
>>9
Win8 上で tcc でコンパイル&リンクし直したらちゃんと動いた

もともとあった(と思ってた) exe がなんか変らしいので
MSVC++ でもコンパイル出来たけど
こっちのバージョンを実行すると同じ症状が出た

なので VC++ でコンパイルした exe について
>元々存在していた不具合が顕在化しただけじゃね?
の可能性が高いです
0014デフォルトの名無しさん2014/08/04(月) 14:25:23.52ID:4x8QxR6V
messagebox()にradiobuttonを追加出来ますか?
0015デフォルトの名無しさん2014/08/04(月) 14:44:46.57ID:LgeiXwf0
>>14
no
0016デフォルトの名無しさん2014/08/04(月) 14:49:24.10ID:vzBGIwJJ
サブクラス化出来ない?
0017デフォルトの名無しさん2014/08/04(月) 17:52:15.72ID:RWktXGOp
>>13
乙。
TCCはバージョンや実行環境であんまり結果が変わらない気がしてたから意外だ。
Win7とWin8で挙動が違って、尚且つTCCの状態でも挙動が変わるとは…
0018デフォルトの名無しさん2014/08/06(水) 16:42:02.30ID:1ZJY0Rwz
>気がしてたから
ロクな知識もないカスの予測が外れたとかブログに書いてろ
2chとブログの区別すらつかないやつがプログラミングやってんのか
0019デフォルトの名無しさん2014/08/06(水) 21:03:49.48ID:bTvhocPH
え、死ねよ
0020デフォルトの名無しさん2014/08/06(水) 23:54:56.09ID:Rc+eyo3S
WinMainの戻り値は
メッセージループ前は0
メッセージループ後はwParam
って書いてるけど
GetMessageがエラーで-1を返した時はどうすればいい?
0021デフォルトの名無しさん2014/08/07(木) 02:42:20.95ID:wjsl2rFX
一応メッセージループ後ってことで、
エラー終了を表す終了コードを返しておけば良いんじゃないか?

ただ、メッセージループ無しのWindowsアプリは常に0を返すのか、という話もあったりする訳で。
http://social.msdn.microsoft.com/Forums/ja-JP/d00c0833-2c50-41f4-a7bc-640c35957862/winmain-return-code-how-important-is-it?forum=windowssdk
個人的には、メッセージループに拘らず正常終了かどうかを返しておけば良いと考えている。
VC++のCRTソースでも、WinMainの戻り値での特別な対応はしていないみたいだし。
0022デフォルトの名無しさん2014/08/07(木) 12:37:06.77ID:lSdy2QFw
>>19は自殺教唆。

自殺教唆で有罪になるとどれくらいの刑罰が課されるか知ってるよね?
お前が逮捕されたらお前の親や家族が近所の人からどういう扱いされてるか分かってる?
0023デフォルトの名無しさん2014/08/07(木) 12:50:09.93ID:DXKkY0VC
だから何だ
死ね
0024デフォルトの名無しさん2014/08/08(金) 15:00:16.31ID:/ih7tkBD
WindowsのC++アプリでウインドウを
最前面に持ってきたい(=そのウインドウのタイトルバーをマウスクリックした時と同じ状態)
のですが、
SetForegroundWindow(hwnd);
や
BringWindowToTop(hwnd);
を試したのですが、確かに他のウインドウより上には来ますが、その状態でタイトルバーをクリック
すると、タイトルバーの色が変わりそれでようやく最前面に来たことが分ります。
ということは、上記の関数を実行しただけでは最前面には来ていないようなのですが、
マウスクリックしたのと同じ意味での最前面に持ってくる方法はありますか?
Dobonさんの.NETの例でも
http://dobon.net/vb/dotnet/process/appactivate.html
なかなか難しそうなのですが、それのC++版みたいなの有りましたら教えて下さい。
0025デフォルトの名無しさん2014/08/08(金) 15:03:29.50ID:NYRFXe49
topmost
0026デフォルトの名無しさん2014/08/08(金) 17:02:30.80ID:HZkP1SQ9
>>24
Vistaから、SetForegroundWindowで最前面にできるのは
アクティブなウインドウを持っているスレッドからだけになった。
勝手にキーボードフォーカス奪うのは迷惑だからね。

そういう迷惑な動作を今でもやりたいというなら、
AttachThreadInputしてからSetForegroundWindowすれば可能。
0027デフォルトの名無しさん2014/08/08(金) 17:49:34.31ID:aPdADbjs
最前面にしたいだけなら定番のやつ
::SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
::SetWindowPos(hWnd, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
0028デフォルトの名無しさん2014/08/08(金) 17:53:21.61ID:aPdADbjs
こんときタイトルバーやウィンドウそのものが作業領域の外だったらSWP_NOMOVEはずして作業領域の内側に移動するのもよくある親切設計
0029デフォルトの名無しさん2014/08/08(金) 18:50:55.09ID:1UU7vf/D
Vista 以上だと画面領域外にはみ出すと勝手にスナップインしてサイズを変えてくれる親切設計
0030デフォルトの名無しさん2014/08/08(金) 20:35:40.08ID:/ih7tkBD
>>25,26,27
みなさんありがとうございました。
SetWindowPosの方法で出来ました。
>>28,29
どこかにサンプルありませんか?参考にしたいのですが。
0031デフォルトの名無しさん2014/08/08(金) 21:00:50.44ID:aPdADbjs
>>30
ぐぐれ
モニタをNearestで検索してHMONITOR取得、そのモニタをWorkingAreaを取得するAPIに渡してごにょごにょ計算
0032デフォルトの名無しさん2014/08/08(金) 22:49:47.51ID:P41P+0nG
GetMessageは戻り値がBOOLなのに
0,-1,それ以外の返ってくるふざけた仕様なのは何故なの?

あとMSDNにはこの理由で
while(GetMessage(...)){}
みたいにするのはやめろって書いてあるのに
でもサンプルコードやVC++が生成するコードは殆どこの形になってるし

どっちにすればいいんだよ?
0033デフォルトの名無しさん2014/08/08(金) 23:04:01.16ID:wnc8sFJe
たぶん歴史的経緯とかあるんだろうな
0034デフォルトの名無しさん2014/08/08(金) 23:31:52.49ID:bmONrCzR
>>23逮捕されるかな
記念カキコ

自殺教唆って殺人の次くらいに重い罪だからな
0035デフォルトの名無しさん2014/08/09(土) 00:26:11.47ID:XnzTvHrT
おーーーっ、基地外降臨だーーー
0036デフォルトの名無しさん2014/08/09(土) 11:49:34.27ID:AK3HkfPS
>>32
while(GetMessage(...) > 0){} にしとくのが手軽かな
英語版の方にはちゃんとした例が載っているがそこまでやる必要があるかどうかは自分で判断してくれ
http://msdn.microsoft.com/ja-jp/library/windows/desktop/ms644936.aspx
0037デフォルトの名無しさん2014/08/09(土) 13:09:08.91ID:hpE++uRf
・0
・-1
・それ以外

ということだから
0以上と判定するのは危険じゃないか?
0038デフォルトの名無しさん2014/08/09(土) 13:14:15.95ID:cMAC0zr6
-2以下は存在しない
0039デフォルトの名無しさん2014/08/09(土) 13:32:03.58ID:+T7xdrkU
>>37
お手軽に だから
0040デフォルトの名無しさん2014/08/10(日) 03:39:03.41ID:eHhQsmny
・0抜ける
・-1エラー終了
・それ以外ループ
でいいだろ
0041デフォルトの名無しさん2014/08/10(日) 09:33:41.95ID:zo9IFsz+
なに当たり前のことをドヤが...
0042デフォルトの名無しさん2014/08/10(日) 11:53:09.79ID:4XcXObsW
GetMessageの戻り値をBOOLにした奴が主犯。
0043デフォルトの名無しさん2014/08/10(日) 11:57:28.50ID:WSpuTRJM
そいつのおかげでメソッドチェーンが出来なくなった
0044デフォルトの名無しさん2014/08/10(日) 14:50:08.86ID:Lw+4BltM
GetMessage() で-1が返るのは、引数が不正の場合だけと聞いたことがある
だとするとプログラマのミスだから、Debug版では必要でもRelease版では不要ってことになるね
GetMessage() の-1をチェックするなら、例えば UpdateWindow() とかでも律儀に戻り値をチェックする必要があるだろうね
0045デフォルトの名無しさん2014/08/11(月) 22:27:17.86ID:mcGVsp2U
ちょっと質問なんですが。

やりたいことは呼び出し元ウインドウを WindowA 呼び出されるダイアログウインドウを DialogB として、

1)WindowA 側で処理をして DialogB に渡す
2)DialogBで確認メッセージを表示、ユーザが処理を選択
3)DialogBを消すことなくWindowAに処理を戻す
4)WindowAでの処理が終わったらDialogBに結果を表示
5)DialogBを閉じることができるようになる

ShowModal でやるといったんウインドウが閉じてしまうのを抑止させたいんですよね。
自前でメッセージループを回せばと思ったんですが、

#define WM_DIALOGCLOSE WM_USER+1
----
WindowA->Enabled = false;
while(GetMessage(&msg , NULL , 0 , 0)) {
if(msg.message==WM_DIALOGCLOSE) break;
TranslateMessage(&msg);
DispatchMessage(&msg);
}
WindowA->Enabled = true;

こんなコードでも形上は問題ないものでしょうか。

異なるスレッドならイベントなどで待機させれば簡単なんですけど
同じスレッド上で待機させるにはどうしたらいいのかと。

それともこんな糞コードよりコールバック関数を用意して DialogB 側で呼び出すほうがいいのでしょうか。
0046デフォルトの名無しさん2014/08/11(月) 23:16:51.61ID:OSKN4xqh
WindowA、DialogB別スレッドにしてそれぞれの作画処理に専念させるかな
あと処理スレッドも別
進捗に応じて処理スレッドからWindowAやDialogBにSendMessageして状態変更
あと処理スレッド用のメッセージキューみたいなのも作ってDialogBと同期
0047デフォルトの名無しさん2014/08/11(月) 23:24:51.81ID:OSKN4xqh
CreateWindowでHWND_MESSAGE指定して処理スレッドをHiddenWindowにしてSendMessageでやりとりして同期とるのもあり
0048デフォルトの名無しさん2014/08/12(火) 08:03:40.73ID:Q0VF6C/s
普通にモーダルダイアログで良くないか?
DialogB上のボタンが押されたときに、
WindowAにWM_COMMANDでも送ってやれば済む話のような。
0049デフォルトの名無しさん2014/08/12(火) 11:11:31.10ID:SHzkP4WO
ID:OSKN4xqh さん、ID:Q0VF6C/s さん
相談に乗っていただきありがとうございました。
あれからいろいろ探したところ MsgWaitForMultipleObjects という関数を見つけました。
イベントオブジェクトと組み合わせることである程度目的のことができるようになりましたので
お礼を兼ねて報告させていただきます。
0050デフォルトの名無しさん2014/08/12(火) 22:02:39.21ID:EsDtZ9Jx
SelectClipRgnで(0, 0)から(99, 99)の長方形をクリッピングすると(0, 0)から
(98, 98)までしか描画できません。
これであっていますか?
98までしか描画できないなら、なぜ0が描画できるのか理解できません。

(0, 0)から(99, 99)の長方形を10個描画。
背景のウィンドウが(0, 0)(99, 99)の長方形でクリッピング。
小さいウィンドウが(0, 0)(100, 100)の長方形でクリッピング。

http://www.dotup.org/uploda/www.dotup.org5249528.png
0051デフォルトの名無しさん2014/08/12(火) 22:09:29.74ID:EsDtZ9Jx
もしかしてこれは
http://peace.2ch.net/test/read.cgi/tech/1403567676/945
が関係ありますか?
0052デフォルトの名無しさん2014/08/12(火) 22:32:26.33ID:SHzkP4WO
>>50
座標指定の問題で左上の座標は含む、右下の座標は含まないというのがあるようです。
どこで見たのかちょっと思い出せないですけど。
0053デフォルトの名無しさん2014/08/12(火) 22:40:12.11ID:EsDtZ9Jx
>>52
そうだったのですか。
図形って難しいですね。
0054デフォルトの名無しさん2014/08/12(火) 23:16:46.01ID:wFJQwqXA
バウンディングボックスでggr
0055デフォルトの名無しさん2014/08/12(火) 23:56:58.70ID:Q0VF6C/s
終点は始点からの距離と考えた方が分かり易い。
(0,0)から縦横に100px描画したいなら、
(0+100,0+100)=(100,100)って感じ。
本当はピクセルを囲む云々なのだろうけど考えるの鬱陶しいし。
0056デフォルトの名無しさん2014/08/13(水) 02:44:02.27ID:ZHko1bcf
>>54-55
Bingって見たけどさっぱりなので、ペゾルド見たら載ってました。
どこ探せばいいのかさっぱりですね。
0057デフォルトの名無しさん2014/08/13(水) 10:43:27.02ID:YdrUmIgN
じだいおくれのゴミんAPI
0058デフォルトの名無しさん2014/08/14(木) 10:03:54.67ID:2mcL5RK2
APIとライブラリーは違うことを念頭に置かなければならない
ドットネットはライブラリーだ
OSが存在する限りAPIは必要になる
0059デフォルトの名無しさん2014/08/14(木) 10:40:08.43ID:UYnglolm
C#でおk
0060デフォルトの名無しさん2014/08/14(木) 10:43:55.92ID:U3xT73aa
.netってdllもまともに作れないんだろ
ゴミじゃん
0061デフォルトの名無しさん2014/08/14(木) 10:53:31.51ID:ztsop+v9
とゴミが申してます
0062デフォルトの名無しさん2014/08/14(木) 21:42:33.94ID:IoeJUH1C
仮想マシンで動かす環境だからDLLみたいな環境依存ものは
作れないけど、それは仕様。まあJavaと同じで成功してるとは
言えないけど。
0063デフォルトの名無しさん2014/08/14(木) 21:51:59.12ID:8EuqiR5k
DLLに何を求めてんのか知らんがCLIなDLLは作れるやん
0064デフォルトの名無しさん2014/08/14(木) 21:53:20.91ID:8EuqiR5k
つかWin32APIスレだから.netの話題ふるなよ
0065デフォルトの名無しさん2014/08/14(木) 21:54:10.27ID:UYnglolm
時代はC#
はい論破
0066デフォルトの名無しさん2014/08/14(木) 22:22:46.72ID:wROGfWf+
.netでdllもまともに作れない?とんちですか?
0067デフォルトの名無しさん2014/08/14(木) 22:27:49.15ID:KTikXAiC
AllocConsole()を調べていて
このページ
http://7ujm.net/C++/Console.html
にある _printf 関数で、AllocConsoleしたコンソールに無事に出力出来たのですが、
こんな関数使わずに、stdio.hの printf 関数でこのコンソールに出力する方法は
無いでしょうか?
0068デフォルトの名無しさん2014/08/14(木) 22:39:57.60ID:8EuqiR5k
::AllocConsole();
freopen("CONOUT$", "w", stdout);

printf("test");
0069デフォルトの名無しさん2014/08/14(木) 22:40:19.53ID:UYnglolm
ありません
0070デフォルトの名無しさん2014/08/14(木) 22:53:59.57ID:KTikXAiC
レスありがとうございます。
>>68
>stdout
が見つからないと出るんですが。
>>69
やはり無理ですか。どうにかして出来ませんか?
0071デフォルトの名無しさん2014/08/14(木) 23:09:56.51ID:8EuqiR5k
>>70
#include <stdio.h>
しろ
0072デフォルトの名無しさん2014/08/14(木) 23:12:37.27ID:8EuqiR5k
>>70
君の居場所はこっちかな
【初心者歓迎】C/C++室 Ver.92【環境依存OK】
http://peace.2ch.net/test/read.cgi/tech/1406801653/
0073デフォルトの名無しさん2014/08/14(木) 23:41:32.44ID:KTikXAiC
>>71
こんなエラーが出ました。
> error C4996: 'freopen': This function or variable may be unsafe.
> Consider using freopen_s instead.
0074デフォルトの名無しさん2014/08/15(金) 00:04:16.31ID:dqHjjjVM
警告をエラーとして扱うをオフにするか
言われた通りfreopen_sつかえばいいやん
0075デフォルトの名無しさん2014/08/15(金) 00:10:46.07ID:ZUc984rO
>>74
http://d.hatena.ne.jp/xcrux/20060323
に書いてある通りにしたら、無事に出ました。
皆さん有難うございました。
0076デフォルトの名無しさん2014/08/15(金) 00:48:40.61ID:LCoKxw/X
つまんね
0077デフォルトの名無しさん2014/08/15(金) 02:56:07.95ID:OYLuvNRz
ヒント:夏休み
0078デフォルトの名無しさん2014/08/15(金) 03:22:16.53ID:LCoKxw/X
ドカタのことか
0079デフォルトの名無しさん2014/08/15(金) 07:45:59.59ID:6TAlsDwK
>>66
>>62 には、だろ。
面倒だからスルーしとけ。
0080デフォルトの名無しさん2014/08/15(金) 12:26:25.59ID:Lne+Px+X
MSさん何かやらかしたみたいね

Microsoft Updateしたらageるスレ 95
http://peace.2ch.net/test/read.cgi/win/1406163127/
Microsoft Updateしたらageるスレ 96
http://peace.2ch.net/test/read.cgi/win/1408018992/
Microsoft Update失敗したらageるスレ 33
http://peace.2ch.net/test/read.cgi/win/1399463544/
8月14日のアップデートで再起動に問題起こるケースがあるらしいので注意
http://jisakutech.blog.jp/archives/11301930.html
https://twitter.com/ALiPaPa333/status/500038635790409728
0081デフォルトの名無しさん2014/08/15(金) 14:35:17.58ID:LCoKxw/X
落ち目のMSさん
0082デフォルトの名無しさん2014/08/15(金) 16:54:10.20ID:06IqYKhN
iPhoneでoutlook.comのメール受信も数日前から出来なくなってる。
0083デフォルトの名無しさん2014/08/16(土) 02:08:16.46ID:nQiWsyll
うんこAPIでコードを組んでも動作しないんですね
わかります
0084デフォルトの名無しさん2014/08/16(土) 08:30:07.63ID:5flrnqyZ
質問です。
XPを使っているんですが。
XPより後バージョンにしかないAPIを抽出して実装するのと、
VC++2010になくて、gccやC11にある関数を抽出して実装するのはどうやればいいですか。
0085デフォルトの名無しさん2014/08/16(土) 08:59:56.50ID:qYMP3/07
#if と
#ifdef 使え
0086デフォルトの名無しさん2014/08/16(土) 09:51:19.24ID:0XKtKnUw
1. ヘッダから prototype とか typedef とか拾って来る
2. 必要なライブラリをリンクする
0087デフォルトの名無しさん2014/08/16(土) 09:56:58.87ID:4+vOhLId
XP上で動くかどうかは問題外?
0088デフォルトの名無しさん2014/08/16(土) 10:50:37.97ID:VKTgsMtd
抽出して実装って自前でDLL作るってことかいな
0089片山博文MZ次期CEO ◆T6xkBnTXz7B0 2014/08/16(土) 12:37:45.65ID:wzxOsEnQ
アンパンマン、新しい顔ができたよ!!!

MZC3_WindowSelector
https://github.com/katahiromz/MZC3_WindowSelector
0090デフォルトの名無しさん2014/08/16(土) 12:52:05.86ID:nQiWsyll
うんこ
0091デフォルトの名無しさん2014/08/16(土) 14:36:07.44ID:nQiWsyll
C#最強伝説
0092842014/08/16(土) 18:46:16.99ID:bOR6T3om
XPで出来るだけ多くのソフトを動作させたいんですが。
合法範囲で手段は問わず、オープンソースで既存コードがあればそれを使って
XPに無い部分の実装だけを集めたいんですが。
どの関数・APIが足りてないか調べる方法と既成品があればそれを使いたいんですがどうしたらできますか。
0093デフォルトの名無しさん2014/08/16(土) 19:30:03.53ID:awmA6BQP
言っている意味が良く分からないんだが。

XPで出来るだけ多くの既存のソフトを動かしたいのか?
              ~~~~~~~
これからすべてをコンパイルしてって意味なら
XP上で作ればむしろ動かないものを作るほうが難しいと思うけど。
もし、出来るだけ多くの既存のソフトを動かしたいっていうなら
そもそもリンクしているDLLなんかの影響があるわけで。
0094デフォルトの名無しさん2014/08/16(土) 19:50:22.70ID:+PvsjeWp
>>92
OSのバージョンチェックしているソフトはどうしたら良いと思う?
0095デフォルトの名無しさん2014/08/16(土) 19:50:54.33ID:Tzb9+P64
>>84>>92
「gccやC11にあるけどVC++2010にない関数」を使ったコードであっても、
gccやclangでXPをターゲットにしてコンパイルすればXPでも普通に動く。
で、「出来るだけ多くのソフトを動作させたい」の「ソフト」ってのは、
ソースコードの状態なのかビルド済みバイナリなのかどっちだ?
ビルド済みバイナリを動かすって話だとするとgccやC11関係ないし、
関数だけ集めても勝手にリンクされるわけじゃないからそれだけじゃ駄目だぞ。

黒翼猫さんの改造Windows2000みたいな事したいのかもしれんけど、
アレは結構な時間と手間と技術が要るしここで聞いてハイ出来たとは行かないぞ?
0096デフォルトの名無しさん2014/08/16(土) 21:27:47.77ID:nQiWsyll
ゴミドタカさんあなたの時代は終わりです
0097デフォルトの名無しさん2014/08/16(土) 21:46:24.25ID:IHy3BkSo
要するにVista以降しか動かせないソフトをXPでも動かしたいんじゃないの
でもってDLLとか作ってXPにない機能の関数インポート部分だまくらかすんだろう


関数の中身未実装で何もせずリターンで動けばいいけどそんな都合よくはいかない
基本無理だと思うよ
0098デフォルトの名無しさん2014/08/16(土) 21:57:31.20ID:jc5hesjA
時間の無駄だな
海でも眺めてた方が有意義だぞ
0099デフォルトの名無しさん2014/08/16(土) 22:42:31.04ID:nQiWsyll
時代遅れコードを素人に自慢してくださいな
0100デフォルトの名無しさん2014/08/17(日) 01:11:39.50ID:sI1u/7Zz
いつまでも古いコードでオナってるおっさんたちを想像すると・・・
泣けてきた
0101デフォルトの名無しさん2014/08/18(月) 14:34:52.22ID:IJ8l4vja
もうXP捨てていいと思うよ
XP時代にWindows95でも動くやつ作りたいって言ってるようなものやで
サポート終わったXP使ってるユーザーなんて金ないくせに
ブーブー文句言うだけやから
相手しても無駄や
0102デフォルトの名無しさん2014/08/18(月) 14:38:55.46ID:1lCgn+a+
サポート終了したXPをインターネットに接続する行為はパブリックエネミーと言って良い
0103デフォルトの名無しさん2014/08/18(月) 14:53:14.54ID:wrymC6Ni
インフルエンザで電車乗るようなもんだ
ほんと死ね
0104デフォルトの名無しさん2014/08/18(月) 23:37:48.28ID:eFDxfYR4
つ 32S
0105デフォルトの名無しさん2014/08/19(火) 00:29:03.09ID:MNYlxzwL
いやだ
0106デフォルトの名無しさん2014/08/19(火) 19:08:39.00ID:PsjEYu92
GetTickCount()ってシステムを起動した後の経過時間とのことだけど
スタンバイやスリープでリセットされる?
もしリセットされないならシステム落とさずにスタンバイやスリープで長期使われてると
場合によっては49.7日の境にGetTickCount()を呼び出すことがあるってことだよね
0107デフォルトの名無しさん2014/08/19(火) 19:17:57.56ID:68cY/vKe
その問題は何年も前に顕在化している。
0108デフォルトの名無しさん2014/08/19(火) 19:32:08.54ID:4oI8t6Hf
Win95/98 の頃は2ヶ月起動しっぱなしだとそのタイミングでハングとかおかしくなるというバグがあったw

ちなみに今は月一回システムアップデートが来て半強制のリブートがかかるから
気にしなくていいかもしんまい
0109デフォルトの名無しさん2014/08/19(火) 19:32:09.06ID:MNYlxzwL
じだいおくれのおっさんちーっす
01101062014/08/19(火) 19:41:21.55ID:PsjEYu92
>>107-108
�d
やっぱダメなんだな
0111デフォルトの名無しさん2014/08/19(火) 21:01:22.43ID:MNYlxzwL
おっさんはC#へGO
0112デフォルトの名無しさん2014/08/19(火) 22:16:18.56ID:ef+5aCFB
ストアだとデフォルトが c#だしなぁ
0113デフォルトの名無しさん2014/08/19(火) 22:40:01.57ID:/HNxszwg
>>106
符号付きで扱って24.855日で問題起こすソフトウェアもたまに居るぞ。
XPはアプデ来なくなったから再起動減るし症例増えてたりするんかな。
0114デフォルトの名無しさん2014/08/19(火) 22:40:45.70ID:MNYlxzwL
で?
0115デフォルトの名無しさん2014/08/19(火) 22:58:09.87ID:MNYlxzwL
いずれ来る未来のパールスレ
0116デフォルトの名無しさん2014/08/20(水) 15:51:07.72ID:cYiGvIKn
GetTickCount()もちゃんとDWORDで扱って差分とってりゃ問題なし
0117デフォルトの名無しさん2014/08/20(水) 17:24:20.59ID:ekRS8u1z
パールスレを知らないのか
0118デフォルトの名無しさん2014/08/20(水) 19:24:08.55ID:f4puTXWO
>>116
ラップして即死しとけ
0119デフォルトの名無しさん2014/08/20(水) 21:08:36.58ID:nfSgOZEi
完全に忘れ去られたGetTickCount64(´・ω・)カワイソス
Vista以降なら32bitでも使えるのに……
0120デフォルトの名無しさん2014/08/20(水) 21:17:56.37ID:cYiGvIKn
もうXP無視していいんだけど去年まではそうもいかなかったからね
それに正しく使ってればGetTickCount使い続けても問題ない
now - save > timeout で比較すればいいだけ
リセットされても正しく動くからこうやって使ってねってMSDNに載ってた
0121デフォルトの名無しさん2014/08/20(水) 22:56:14.16ID:ekRS8u1z
もういいよおっさん・・
0122デフォルトの名無しさん2014/08/20(水) 23:49:18.27ID:nCjpdpG/
>>118は now > save + timeout で比較して即死したようだな
0123デフォルトの名無しさん2014/08/21(木) 00:04:57.33ID:dDCf4AuG
http://msdn.microsoft.com/ja-jp/library/cc429827.aspx
> Example
> 次のサンプルコードは、タイマが 0 に戻る現象に対処する方法を示します。
>
> DWORD dwStart = GetTickCount();
> // 極端に長い時間が経過した場合は、実行を停止する。
> if(GetTickCount() - dwStart>= TIMELIMIT)
>   Cancel();

う・・・ん?
0124デフォルトの名無しさん2014/08/21(木) 01:36:35.82ID:JsL1zQzE
おっさんが描いたコードはもう動きません
時代は変わったんだよ
0125デフォルトの名無しさん2014/08/21(木) 02:03:35.09ID:VHllMRc1
おっさんをあざ笑いたいだけなんだろうけど、おっさんの書いたコードで憤死するのは次の世代だから。
0126デフォルトの名無しさん2014/08/21(木) 02:52:50.15ID:s1HtGAdi
ぎゃふーん
0127デフォルトの名無しさん2014/08/21(木) 04:08:50.38ID:M3w3muWU
QueryPerformanceCounter(); …と思ったが、
http://d.hatena.ne.jp/shiku_otomiya/20100218/p1
を読むとどうも安心して使えないようで。
0128デフォルトの名無しさん2014/08/21(木) 04:12:05.95ID:JsL1zQzE
うっほっほ
0129デフォルトの名無しさん2014/08/21(木) 08:26:54.13ID:QQWyFLQR
>>116,>>120
そんなに放置するなよって話だが前回取得から二周したら経過時間が狂う。
>>127
rdtsc使ってる場合でも、rdtscの値を補正してから返す場合がある。
どういう補正してるかがいまいち分からんから結局狂うのかもしれんけど。
0130デフォルトの名無しさん2014/08/21(木) 11:25:29.99ID:Dozm2kfh
Puppy LinuxのライブCD1枚作っておくといいよ
http://openlab.jp/puppylinux/

USB、ZIPまたはハードディスクに簡単にインストールできる事。
CD(あるいはDVD)から起動しても、CDドライブは他の目的のために使える事。
CD(あるいはDVD)から起動して、CDにすべて保存できる事。
USBフラッシュドライブから起動しても、最小の書込みで寿命を伸ばせる事。
リナックス初心者にも、とてもやさしい事。
一旦起動すると、非常に早い事。
日常必要なすべてのアプリケーションを持っている事。
安定している事。簡単である事。
古いパソコンに新しい命を吹き込む事。
ディスクレスの薄いステーション用に全てRAMへロードして実行できる事。

日本語版はエクストラドライバや日本語環境を追加しますとサイズはちょっと大きくなります。
バージョン4.3.1JPで 119MB
0131デフォルトの名無しさん2014/08/21(木) 17:28:13.11ID:JsL1zQzE
時代はC#
0132デフォルトの名無しさん2014/08/21(木) 19:01:14.06ID:SvY3ZvfG
>>129
GetTickCount()使うのはタイマー系で一番コスト低いからで一秒以下の精度でチェックするときのみだ
50日超えるタイムスパン比較するならtime()で十分
何でもかんでも同じAPI使うんじゃなくてなぜそのAPI使うか考えろよ
0133デフォルトの名無しさん2014/08/21(木) 19:06:28.66ID:JsL1zQzE
ほらね、おっさんはもうダメコードしか書けない
0134デフォルトの名無しさん2014/08/21(木) 19:07:33.65ID:s1HtGAdi
馬鹿は解法ひとつ覚えるので精一杯だから仕方がない
0135デフォルトの名無しさん2014/08/21(木) 21:18:35.59ID:wia61aOo
良コードでも載せてから家
0136デフォルトの名無しさん2014/08/22(金) 00:06:21.76ID:M3NxvgHB
>>132
(GetTickCount使うなら)そんなに放置するなよって話って>>129で書いてあるじゃない。
0137デフォルトの名無しさん2014/08/22(金) 00:27:33.34ID:h4d7Hbqi
32bit符号有り整数しか扱えない上にオーバーフローエラーが発生するんですよ、VB6だと
0138デフォルトの名無しさん2014/08/22(金) 00:28:26.20ID:h4d7Hbqi
C/C++やJavaなら now - save > timeout でもいいんでしょうけどね
0139デフォルトの名無しさん2014/08/22(金) 03:04:11.98ID:kIg4HjrR
おっさんのエラーは今はもうない
0140デフォルトの名無しさん2014/08/22(金) 07:47:43.59ID:XI3TfjPF
int の演算でオーバー風呂やアンダー風呂が発生したときの
例外捕捉って Win32API でどうやるんだっけ?
0141デフォルトの名無しさん2014/08/22(金) 09:02:39.83ID:QbrmR5YT
例外自体発生しないから、捕捉しようが無いというオチ。
コンパイラがチェック用のコードを埋め込めば別だろうけど。
0142デフォルトの名無しさん2014/08/22(金) 09:57:21.03ID:QbrmR5YT
よく考えたら「INT_MIN % -1」とかの例外発生パターンあったわ。
Visual C++的な対応だとこんな感じ?
http://www.ne.jp/asahi/hishidama/home/tech/vcpp/seh.html

.NETならSystem.OverflowExceptionだから楽なんだけどね。
0143デフォルトの名無しさん2014/08/22(金) 10:37:59.45ID:HOJj7S1S
IDragSourceHelper2について
http://eternalwindows.jp/ole/oledrag/oledrag03.html

一週間ほど試行錯誤の結果ようやっと解決
調べても、ほとんど情報が無いのにはまいった。
0144デフォルトの名無しさん2014/08/22(金) 11:22:48.65ID:kIg4HjrR
おっさんのオナニーは臭い
0145デフォルトの名無しさん2014/08/22(金) 12:06:30.86ID:8ZV1VixV
Component Object Modelはただ死んだだけでなく、本当にひどい臭いを放ち始めている
0146デフォルトの名無しさん2014/08/22(金) 14:13:55.01ID:jbIfEIhq
まだまだ現役でお前の知らないところで使われてて新しいインタフェースも増えてる
言語仕様超えてクラスオブジェクトを扱うための仕組み
.Net/CLIもそれを使うことができるから可能性が広がってんだよ
0147デフォルトの名無しさん2014/08/22(金) 14:42:07.77ID:8ZV1VixV
ほうら臭いのが沸いてきた
言ったとおりだろう?
0148デフォルトの名無しさん2014/08/22(金) 16:29:16.86ID:kIg4HjrR
おっさんの願いかなわず
0149デフォルトの名無しさん2014/08/22(金) 16:40:46.28ID:02f6Y5eW
自己紹介はもういいから
0150デフォルトの名無しさん2014/08/22(金) 18:29:47.27ID:M3NxvgHB
COMとCOMDLG混同しながらCOM万能説に走ったゴミの人を思い出すなぁ…
0151デフォルトの名無しさん2014/08/22(金) 18:58:58.69ID:BQk96NY7
COM
http://peace.2ch.net/test/read.cgi/tech/1168427595/
0152デフォルトの名無しさん2014/08/22(金) 20:57:04.38ID:t661hIAd
USB変換機はよく売ってるのに肝心のケーブルが最近売ってない。
15ピンのばっかりだ
0153デフォルトの名無しさん2014/08/22(金) 23:07:40.90ID:U/01L7g8
通信ポートがなんだって?
0154デフォルトの名無しさん2014/08/23(土) 17:55:05.03ID:3EDi1e2F
GetStockObjectで取得したストックオブジェクトってDeleteObjectで削除してもいいの?
MSDNのGetStockObjectのページには
日本語版:DeleteObject 関数を呼び出してストックオブジェクトを削除する必要はありません(削除しても問題はありません)。
英語版 :It is not necessary (but it is not harmful) to delete stock objects by calling DeleteObject.
とあるけど、色々なウェブサイトには削除してはいけないと書いてある
普通ならMSDNを信用すべきだと思うけど削除してはいけないと書いてある所が多くて不安になってきた
0155デフォルトの名無しさん2014/08/23(土) 18:14:28.17ID:rS5gMmQG
MSDNを信じられない信者は破門です。このスレから出ていきなさい!
0156デフォルトの名無しさん2014/08/23(土) 18:30:09.16ID:q/+BPTqG
朝鮮人は出ていけ
0157デフォルトの名無しさん2014/08/23(土) 18:34:29.46ID:q/+BPTqG
時代はC#
0158デフォルトの名無しさん2014/08/23(土) 18:43:43.09ID:ZWPa2xFI
今はそうかもしれないが昔は削除すると影響あったからその名残
する必要のないことをするのするのもおかしい
したらいけないもんだと覚えておいても問題ない
0159デフォルトの名無しさん2014/08/23(土) 19:07:21.62ID:jh8yRGUv
疑問を持つ方向性がおかしいな
> 色々なウェブサイトには削除してはいけないと書いてある
これに対して疑問を抱くべき
なぜ削除してはいけないのか、と
0160デフォルトの名無しさん2014/08/23(土) 19:08:35.67ID:3EDi1e2F
レスありがとう
ストックオブジェクトなのかCreateで作ったものなのか分からないGDIオブジェクトの後始末をしたい時に
DeleteObjectにそのまま入れるべきか、それともまずストックオブジェクトか否かを判別すべきかというケースだった
大人しくストックオブジェクトの代わりに同じ内容のGDIオブジェクトをCreateすることにして一律でDeleteObjectすることにするよ
0161デフォルトの名無しさん2014/08/23(土) 19:28:21.46ID:ZWPa2xFI
そういうのはラッパークラス作って仮想Releseメソッドで
GDIオブジェクト扱う基底クラスではDeleteObject、Stockオブジェクトを扱うサブクラスではNOPにすれば
それかStockオブジェクトはクリーンアップ用リストに登録しないとか
0162デフォルトの名無しさん2014/08/23(土) 19:39:58.43ID:q/+BPTqG
ごみおっさんの解雇スレは不要
0163デフォルトの名無しさん2014/08/23(土) 21:18:34.30ID:ATeOZN34
毎日毎日自己紹介秋田
0164デフォルトの名無しさん2014/08/23(土) 22:17:21.50ID:JJDGD5m1
毎日毎日こんなクソスレ見てんのかよとんでもねえな
0165デフォルトの名無しさん2014/08/23(土) 23:12:03.95ID:q/+BPTqG
とんでもねえよおっさん
未だに古臭いコードでオナニーなんて
0166デフォルトの名無しさん2014/08/24(日) 07:48:58.53ID:js+i7Dus
createprocess について質問です
char cmd[] = "netsh routing ip add filter \"ローカル エリア接続 2\" input 192.168.2.2 255.255.255.255 192.168.1.1 255.255.255.255 tcp 0 22";
PROCESS_INFORMATION pi;
STARTUPINFO si;
ZeroMemory(&si, sizeof(STARTUPINFO));
si.cb = sizeof(STARTUPINFO);
si.dwFlags = STARTF_USESTDHANDLES;
si.hStdOutput = hOutputWrite;
si.hStdInput = hInputRead;
si.hStdError = hErrorWrite;
CreateProcess(NULL, cmd, NULL, NULL, TRUE, CREATE_NO_WINDOW, NULL, NULL, &si, &pi);
エラー処理は省略しましたが実際のプログラムでは書いています
RRASはインストールしてサービスも起動しています
コマンドプロンプトを立ち上げて手でコマンド打ったときは正常動作
(OKと表示される)しています
XPや2003serverのときは正常動作していたのですが
2008serverだと実行結果が

次のコマンドは見つかりませんでした: routing ip add filter "ローカル エリア接続 2" input 192.168.2.2 255.255.255.255 192.168.1.1 255.255.255.255 tcp 0 22
と netsh を除いた残りの文字列だけが表示されます

cmd 文字列の先頭に
cmd /c
を付け加えても同じ結果でした
何が問題?
0167デフォルトの名無しさん2014/08/24(日) 08:03:18.61ID:js+i7Dus
まだ解決してないんだけど
http://stackoverflow.com/questions/8166840/got-the-system-cannot-find-the-file-specified-when-i-run-netsh-from-createproc
ここ見て思ったのは
Win32APIのCreateProcessからnetshを呼ぶと32bit版のnetshが呼ばれて
コマンドプロンプトから手打ちだと64bit版のnetshが呼ばれてて
RRASがインストールされたのは64bit版の方だけとかいうオチかな
CreateProcessで64bit版のnetshを呼ぶ方向で試してみます
0168デフォルトの名無しさん2014/08/24(日) 08:16:49.57ID:js+i7Dus
C:\\Windows\\SysWOW64\\netsh.exe
で置き換えてみたけど結果変わらんな
なんなのこれ
0169デフォルトの名無しさん2014/08/24(日) 08:24:00.60ID:js+i7Dus
Please please please show your full code.
There are lots of parameters to CreateProcess.
Unless you actually make the effort to show us
what they are we simply have to guess at what you have done wrong.
Why are you passing an environment? How did you initialise si?
What is WindRoot? What is CommandLine?
By far the best would be to supply a complete console app
in the form of a single .dpr file that reproduced your problem.
Once you do that I guarantee we'll be able to fix your problem in double quick time. ?
David Heffernan Nov 18 '11 at 11:07

ああこういうことか
精進が足りんな
もちょっと勉強してくる
0170デフォルトの名無しさん2014/08/24(日) 08:24:58.36ID:ZJV6C+Ys
管理者として実行?
0171デフォルトの名無しさん2014/08/24(日) 08:53:40.85ID:js+i7Dus
C:\\Windows\\SysWOW64\\cmd.exe /c C:\\Windows\\SysWOW64\\netsh.exe
これでも同じエラーだった
たぶん>>170
0172デフォルトの名無しさん2014/08/24(日) 09:01:07.65ID:js+i7Dus
だけどexeは管理者アカウントから実行してるのになぁ
CreateProcessで作ったプロセスが勝手に違うアカウントで実行されてる?
0173デフォルトの名無しさん2014/08/24(日) 09:06:50.34ID:ZJV6C+Ys
ShellExecuteでやってみていけたらUAC問題
CreateProcessでは昇格は無理
0174デフォルトの名無しさん2014/08/24(日) 09:44:40.66ID:js+i7Dus
ShellExecuteでやってみた
ShellExecute(NULL, "open", "C:\\Windows\\SysWOW64\\netsh.exe", "routing ip (略)", "C:\\Temp", SW_SHOWNORMAL);
戻り値は2Aで32(10進)よりも大きい値なので成功していると思われるのですが
フィルタは有効になっていませんでしたので結局うまくいっていません
0175デフォルトの名無しさん2014/08/24(日) 09:57:20.71ID:js+i7Dus
DEPの除外リストに入れてもだめでしたので
しばらく休みます
おやすみなさい
0176デフォルトの名無しさん2014/08/24(日) 10:13:54.69ID:ZJV6C+Ys
>>174
昇格の場合openじゃなくてrunas
0177デフォルトの名無しさん2014/08/24(日) 11:28:21.53ID:js+i7Dus
CreateProcess の方だけど
netsh add helper ipmontr.dll
のコマンドを試してみたら

次のヘルパー DLL を読み込めません: IPMONTR.DLL

というエラーが表示された
CreateProcess で起動するとパスが通ってないとかそんなんだろうか?
2003 でうまくいってたのになぁ
UAC かなぁ

>>176
ありがとう
これから試します
0178デフォルトの名無しさん2014/08/24(日) 11:53:39.63ID:js+i7Dus
ShellExecute(NULL, "runas", "C:\\Windows\\SysWOW64\\cmd.exe", "/c C:\\Windows\\SysWOW64\\netsh.exe routing ip (略)", "C:\\Temp", SW_SHOWNORMAL);
戻り値は2A
結果はフィルタ設定追加されず
0179デフォルトの名無しさん2014/08/24(日) 12:19:12.18ID:gxl9aRfR
SysWow64へのリダイレクトは勝手にやってくれるだろ?
つーかC:\Windows\SysWOW64\*.exeって32bitバイナリだけどいいの?
0180デフォルトの名無しさん2014/08/24(日) 12:28:52.67ID:ZJV6C+Ys
>>178
cmd[] = "略";
の所を
cmd[256] = "略"
にしてCreateProcessしたらどうなる?

後はビルドエラー出ると思うけど一応
CreateProcessAが呼ばれてるのかCreateProcessWが呼ばれてるのか確認
0181デフォルトの名無しさん2014/08/24(日) 12:41:36.11ID:EYMdVqe7
西アフリカで、アウトブレイクした潜伏期間延長型エボラの死者・罹患者の数を散布図にし近似曲線を出してみたら
片対数グラフで直線だから既に指数関数的増加だった

2014年に、西アフリカでアウトブレイクした潜伏期間延長型エボラの死者は、2014年8月半ばで1000人。←今ココ
2014年12月上旬で1万人。
この時点で世界規模で空路シャットダウン開始、世界経済大混乱

2015年5月で10万人。
2015年9月で100万人。
この時点で、第二次世界大恐慌発生

2015年大晦日で1000万人。

ちなみに
http://ja.wikipedia.org/wiki/2014%E5%B9%B4%E3%81%AE%E8%A5%BF%E3%82%A2%E3%83%95%E3%83%AA%E3%82%AB%E3%82%A8%E3%83%9C%E3%83%A9%E5%A4%A7%E6%B5%81%E8%A1%8C
:カナダ保健省のサイトでは体内に数個のエボラウィルスエアロゾルが侵入しただけでも発症するとしている
:ハマダラカが、吸血したての人の新鮮血を媒介しているという学説が浮上している

エボラ出血熱は蚊やアブに刺されただけで感染する。

:「この地域には内戦、政府による搾取、テロが長い間続いており、それによって生まれた恐怖、貧困、猜疑心などがある。エボラは耐え難い騒音に付け加えられた一つのざわめきに過ぎない」
現地では

や る 気 は 皆 無
0182デフォルトの名無しさん2014/08/24(日) 12:44:17.38ID:js+i7Dus
CreateProcessでC:\\Windows\\SysWOW64\\cmd.exe /c set
した結果と手動でコマンドラインでsetしたときの結果が違う・・・
前者はPROCESSOR_ARCHITECTURE=x86とか
ProgramFiles=C:\Program Files (x86)
後者はPROCESSOR_ARCHITECTURE=AMD64とか
ProgramFiles=C:\Program Files

なのでUACの問題というより64bitの環境のnetshが呼べてない気がします
0183デフォルトの名無しさん2014/08/24(日) 13:31:03.00ID:js+i7Dus
レジストリのHKLM\Software\Microsoftの中に
NetSh
と
WOW6432Node\Netsh
があって
前者にはipmontr.dllが入ってて
後者には入ってない
ここに無理やりipmontr.dllのデータを作れば動くかも知れないけど
やってもいいのかなぁ
0184デフォルトの名無しさん2014/08/24(日) 13:33:06.03ID:js+i7Dus
間違えた
前者が
HKLM\Software\Microsoft\NetSh
後者が
HKLM\Software\WOW6432Node\Microsoft\NetSh
です
0185デフォルトの名無しさん2014/08/24(日) 13:51:05.29ID:js+i7Dus
CreateProcessから64bitのcmd.exeが使われるようにする方法を検索してて
http://www.kmonos.net/lib/bww.ja.html
こんなのが出てきたけどこれを入れればいいのかな
0186デフォルトの名無しさん2014/08/24(日) 14:13:26.08ID:js+i7Dus
入れてもだめだったorz

どうしても32bitの方が呼ばれてしまう><
0187デフォルトの名無しさん2014/08/24(日) 14:16:55.90ID:ZJV6C+Ys
>>179で既に指摘されてるが
指定してるcmdのpathが32bit
0188デフォルトの名無しさん2014/08/24(日) 14:43:19.45ID:pFdg0X5d
System32 -> Sysnative
0189デフォルトの名無しさん2014/08/24(日) 14:43:21.86ID:jlCuRdJh
おっさんの糞コードはスレを汚すだけなう
0190デフォルトの名無しさん2014/08/24(日) 14:52:17.09ID:nsbGoTTZ
なぜ素直に64ビットアプリを作らないのかしらね
0191デフォルトの名無しさん2014/08/24(日) 14:56:38.20ID:jlCuRdJh
おっさんもうwin32apiなんてやめよう
時代はC#
0192デフォルトの名無しさん2014/08/24(日) 15:25:54.96ID:jFkpkhSs
C#からでもWin32API呼び出すじゃん
0193デフォルトの名無しさん2014/08/24(日) 15:36:21.55ID:gxl9aRfR
C#でSystem.Windows.Forms名前空間使用禁止とか楽しそう
0194デフォルトの名無しさん2014/08/24(日) 15:37:56.27ID:jlCuRdJh
C#最強伝説
0195デフォルトの名無しさん2014/08/24(日) 15:41:21.99ID:jFkpkhSs
だいたいC#は言語仕様でしかなく実態は.NET Frameworkだろ
MSDNを見たって項目分けられているわけだし
0196デフォルトの名無しさん2014/08/24(日) 16:31:39.91ID:qBw4gxKh
標準ユーザーがUACで管理者に昇格してプログラムを実行すると、
プログラムからGetUserNameを使うと、管理者のユーザー名が取れるのですが、
実行した標準ユーザーの名前を取りたいと思っています。

LsaGetLogonSessionDataとかも使ってみたのですが、
やはり管理者のユーザー名しか取れません。
なにか別の方法があるでしょうか?
0197デフォルトの名無しさん2014/08/24(日) 19:09:15.36ID:jlCuRdJh
C#でしか解決できませんが
0198デフォルトの名無しさん2014/08/24(日) 19:18:43.96ID:jlCuRdJh
win32apiは時代遅れ使えない
繰り返すwin32apiは時代遅れ
0199デフォルトの名無しさん2014/08/24(日) 19:20:27.03ID:js+i7Dus
>>188
ありがとうございます
それで上手く行きました

結局 ShellExecute もアカウントの昇格も関係なくて CreateProcess でも上手く行ったのですが
とりあえず
*cmd = "C:\\Windows\\Sysnative\\cmd.exe /c C:\\Windows\\Sysnative\\netsh.exe routing ip (略)";
としたところ
前半の Sysnative\cmd.exe の方で 64bit 化された状態で
Sysnative\netsh.exe を参照することになるので
「指定したパスが見つかりません」と出て失敗しました

なので
*cmd = "C:\\Windows\\Sysnative\\cmd.exe /c C:\\Windows\\System32\\netsh.exe routing ip (略)";
とするか
単に
*cmd = "C:\\Windows\\Sysnative\\netsh.exe routing ip (略)";
とするのが良いようです

以上ご報告です
みんなオラに力を分けてくれてありがとう
0200デフォルトの名無しさん2014/08/24(日) 19:43:42.15ID:js+i7Dus
>>196
explorerに問い合わせると良いらしいです
http://eternalwindows.jp/security/securitycontext/securitycontext09.html
0201デフォルトの名無しさん2014/08/24(日) 20:03:45.13ID:jlCuRdJh
ゴミ質問をしてもおっさんの戯言しか返ってこないよ
0202デフォルトの名無しさん2014/08/24(日) 20:58:52.96ID:fKVcBBaC
なんでこんな必死なの?
お前もおっさんだろうに。
0203デフォルトの名無しさん2014/08/24(日) 21:07:43.49ID:jWy1bnP0
何お前、必死なおじさんに興味があるの?
やめといた方がいいと思うな
0204デフォルトの名無しさん2014/08/24(日) 21:28:31.05ID:jlCuRdJh
必死なのはおっさんのほう
0205デフォルトの名無しさん2014/08/24(日) 22:43:14.74ID:7trTXQ64
ID:jlCuRdJh おっさん、赤くなってきたぞ
0206デフォルトの名無しさん2014/08/25(月) 02:56:42.53ID:5aaZ0ZHF
>>205
http://hissi.org/read.php/tech/20140824/amxDdVJkSmg.html
堂々たる第一位
0207デフォルトの名無しさん2014/08/25(月) 07:42:02.50ID:LIV+GZ8D
前にも連日一位でこんなことしてる奴いたな
0208デフォルトの名無しさん2014/08/25(月) 11:30:04.01ID:FJ9UQc5Q
>>206
おいQZこんなスレまで出張かよ
コテつけてなくてもバレバレなんだな^^
0209デフォルトの名無しさん2014/08/25(月) 11:42:32.63ID:8Sw0Q1jq
わざわざid変えなければもっと順位上行くのに
馬鹿なの
0210デフォルトの名無しさん2014/08/25(月) 15:07:53.34ID:LIV+GZ8D
男ならテッペン取ったれ
0211デフォルトの名無しさん2014/08/25(月) 21:27:24.51ID:ZcBnU/FE
>>200
ありがとうございます!
GetShellWindowとOpenProcessTokenを使ったら取れました。
0212デフォルトの名無しさん2014/08/25(月) 22:15:31.86ID:FJ9UQc5Q
とったり〜
0213デフォルトの名無しさん2014/08/26(火) 11:43:25.59ID:KvwdZ1Dn
GUIを取り扱うライブラリを書こうとしています。
ウィンドウ内に1万個の部品を載せてみると、プログラムは異常な動きをします。
メモリーが破壊されデバッガで追えない状態になるのです。
ちょうど、GDIオブジェクトを1万個作った時のようになります。

思い当たる節は、次のウィンドウ・メッセージを読み取る前にInvalidateRect()を
あるいはWM_PAINTの中でSetViewport()を1万回呼ぶことですが、これはまずいのですか?

それともう一つ、GUIに一万個の部品が載ることは実際の利用状況で有り得ますか?
0214デフォルトの名無しさん2014/08/26(火) 12:07:41.71ID:HrT/idVN
最後に「マジレス希望」をつけないと
0215デフォルトの名無しさん2014/08/26(火) 13:43:23.77ID:9P+s8oWH
「部品」である必要があるのか疑問だな。
人間に一万個の部品を認識させるUIとは?
0216デフォルトの名無しさん2014/08/26(火) 13:43:24.78ID:hvry/qaF
>>213
ごみおっさんの懐古コードを希望したいんですね
0217デフォルトの名無しさん2014/08/26(火) 13:44:13.13ID:9ST+88q4
よう、おっさん!
IDを赤くする日課、さぼんなよ。
0218デフォルトの名無しさん2014/08/26(火) 13:54:04.39ID:KvwdZ1Dn
>>215
たぶん、マインスイーパーとか、音楽関係のソフトとかですかね。
0219デフォルトの名無しさん2014/08/26(火) 14:02:07.54ID:8jv5EL7T
ソースをうpしない限りネタ扱い決定
0220デフォルトの名無しさん2014/08/26(火) 14:07:06.31ID:KvwdZ1Dn
>>219
ソースはGitHubにあって誰でも見れるのですが、名前や連絡先が入っているので、
荒れているスレに出すのはどうしたものかって感じなんですよね。
明らかにプロの人が居るので、見てほしい気持ちはあるんですが。
それと同じ数の狂人もいるじゃないですか。
0221デフォルトの名無しさん2014/08/26(火) 14:09:16.67ID:46MkRGQY
ideoneは?
0222デフォルトの名無しさん2014/08/26(火) 14:13:53.19ID:KvwdZ1Dn
ところで、VSはどんどん進化していますよね。
NuGetとかみんな使っていないみたいだけど、これ世界が変わるくらい良いものですよ。
CoAppが尻切れトンボにならないように、C++でもどんどん使ったらいいんじゃないかと思います。
GitHubに接続すると、プロジェクトやソリューションの共有が楽にできるんじゃないかと思います。
一人でこつこつ勉強しながらやっているので、まだ試せていないんですが。
0223デフォルトの名無しさん2014/08/26(火) 14:18:19.05ID:m1Q2Zmzf
例え #pragma pack(push,n) 付けてても
x64とx86とでは、構造体のメンバ位置も、サイズも変わってしまうんだな・・・・

うかつだった。
0224デフォルトの名無しさん2014/08/26(火) 14:18:53.11ID:KvwdZ1Dn
>>221
2CHで質問するときは、ideoneを良く使っているんですけど、コード量が多くなりすぎちゃって
ちょっと無理です。
あんど
APIの呼び出し回数は関係なかったみたいです。
100万回呼んでも遅くなるだけで普通に処理できました。
ちょうどGDIオブジェクトの限界と数が同じくらいだったので、疑ってしまいました。
単純に、スタックの使いすぎでした。
ダイエットします。
0225デフォルトの名無しさん2014/08/26(火) 14:28:42.42ID:hvry/qaF
うわあああおっさんの大量糞レスキター
臭すぎ
0226デフォルトの名無しさん2014/08/26(火) 14:31:14.27ID:hvry/qaF
おっさんが一人で勝手に懐古レスしてるよ・・・
これだから古い技術に固執する馬鹿は
0227デフォルトの名無しさん2014/08/26(火) 14:45:21.45ID:9P+s8oWH
>>218
たぶんってなんだよー。まあ解決したならよかったね。
一万個も部品があるなら人間も扱いきれないだろうから、GUIって言うほどの
機能を持たせずゲーム的な作り方の方がいいんじゃないかと思ってた。
0228デフォルトの名無しさん2014/08/26(火) 14:59:46.12ID:hvry/qaF
とまあおっさんの助言です笑
0229デフォルトの名無しさん2014/08/26(火) 17:42:29.12ID:mLMy21sd
>>213
GDIリソース足りないんじゃね?コントロール減らせ。
>>218
マインスイーパは複数のボタンコントロールじゃなくて単一のクライアント領域だったり。
0230デフォルトの名無しさん2014/08/26(火) 18:02:23.12ID:hvry/qaF
おっさんの説教入りましたー
0231デフォルトの名無しさん2014/08/26(火) 22:32:31.52ID:8iORGEbW
>>215
♀
0232デフォルトの名無しさん2014/08/26(火) 22:52:40.88ID:M/DKQ9Ao
古くても枯れた技術は良いものだ
0233デフォルトの名無しさん2014/08/26(火) 23:36:56.69ID:pwR8Qra8
枯れた部品は良いが、枯れた技術で新しい部品を作るのは勘弁。
0234デフォルトの名無しさん2014/08/26(火) 23:44:19.23ID:AKSJinfO
古い古いいうけど
Win32APIの代わりって何があるん?
.NET Frameworkだけじゃ出来ることに限界があるし
新しいAPIのセットとかがあるん?Win64APIとか?
0235デフォルトの名無しさん2014/08/27(水) 00:14:34.68ID:sWLZW0su
http://www.atmarkit.co.jp/fdotnet/chushin/win8appdev_01/win8appdev_01_01.gif
http://www.atmarkit.co.jp/fdotnet/chushin/win8appdev_01/win8appdev_01_01.html
0236デフォルトの名無しさん2014/08/27(水) 01:01:26.18ID:pYhzyHuf
おっさんがAPI使って壊すプログラム
0237デフォルトの名無しさん2014/08/27(水) 01:23:58.40ID:D1kHPcdG
古いと言ってるだけで使うなと言ってるわけじゃない
0238デフォルトの名無しさん2014/08/27(水) 03:19:01.30ID:6l9mfgq+
>>234
この板に常駐してるC#しかできないおっさんの言うことだから気にするな
この板の書き込み上位はいつもこのおっさん
0239デフォルトの名無しさん2014/08/27(水) 04:54:40.32ID:fBBDR2vO
つうかWinAPIある程度出来るようになってからだと
.NETに移行する意味がほとんど無い
元々WinAPIやC++,C#ですら使用頻度低くて
デスクトップアプリも作る予定無いのに
CUIベースなら.NETよりもLL使ったほうが全然良い

そうなるとCUIベースのプログラムで、かつOS依存のAPI呼び出しが必要な時にLLから呼び出すだけ
WinAPIか.NETっつったら殆どWinAPI使うけど、そもそもどちらも俺にとっては使用頻度が低い
0240デフォルトの名無しさん2014/08/27(水) 06:38:59.38ID:coh19+fw
たぶんコントロール1万個の人はC#おっさんと同一人物だと思う
0241デフォルトの名無しさん2014/08/27(水) 13:37:35.72ID:pYhzyHuf
という妄想が始まった
わざわざwin32apiで叩いてきんもいプログラム作るなよ
C#で効率的なプログラミングを
0242デフォルトの名無しさん2014/08/27(水) 18:01:55.16ID:WVBb8eJH
Windows API Code Pack for Microsoft .NET Framework
http://blogs.msdn.com/b/windowssdk/archive/2009/06/12/windows-api-code-pack-for-microsoft-net-framework.aspx

これもう無いのか
0243デフォルトの名無しさん2014/08/27(水) 18:54:57.76ID:9wQXWUSl
nugetにあるよ
パッケージマネージャに縁のない人達
0244デフォルトの名無しさん2014/08/27(水) 20:29:09.88ID:pYhzyHuf
いつまでAPIつかって面倒くさいコーディングするんだよ・・・
0245デフォルトの名無しさん2014/08/27(水) 21:58:27.07ID:RqytrRPt
ntapiよりはマシ
0246デフォルトの名無しさん2014/08/28(木) 15:04:34.95ID:jOgRJ1W3
いまかいまかとAPI厨は質問を待ち構えてるよ
0247デフォルトの名無しさん2014/08/28(木) 15:06:15.54ID:0SG1ihpu
nugetにあるWindows API Code Packって一般個人がメンテしてんの?
0248デフォルトの名無しさん2014/08/29(金) 07:42:42.57ID:ZQUCiV5V
nugetから取ってきたDLLって、
ウイルス入ってる心配無いの?
0249デフォルトの名無しさん2014/08/29(金) 08:13:31.41ID:n0j14V44
黴菌が何か言ってやがる
0250デフォルトの名無しさん2014/08/29(金) 13:24:55.53ID:yVhE6NGy
そりゃ直接APIでぺちぺち叩いてるんだもの危ない危ない
0251デフォルトの名無しさん2014/08/29(金) 15:20:35.88ID:78rTFaRl
BASICでも使ってろ
0252デフォルトの名無しさん2014/08/29(金) 19:52:18.10ID:TWxk4Cnt
POKE &H1122,&H34
0253デフォルトの名無しさん2014/08/29(金) 19:55:20.86ID:CrnPa/0p
MON
0254デフォルトの名無しさん2014/08/29(金) 20:25:45.38ID:bEtkhrBk
*L
0255デフォルトの名無しさん2014/08/29(金) 20:26:38.04ID:dUbmOOxH
Wiki
SQL
API ← New !
0256デフォルトの名無しさん2014/08/29(金) 20:35:31.82ID:h1TtGc0O
CALL -151
0257デフォルトの名無しさん2014/08/31(日) 16:00:10.57ID:ji1eVNby
WinSockについて質問です。

マルチキャストの送信側のプログラミングで、
送信ネットワークインターフェースを明示するために、
setsockoptでIP_MULTICAST_IFをinet_addr( "127.0.0.1" )(ローカルホスト)に設定したのですが、
これだと受信側のプログラム(同じPC内)で受信できませんでした。

試に、IP_MULTICAST_IFを0(デフォルトインターフェース?)にしたり、
IP_MULTICAST_IFの設定自体を省略(この場合もデフォルトインターフェース?)したら
受信できるようになりました。

なぜローカルホスト指定ではうまくいかないんでしょうか??
0258デフォルトの名無しさん2014/08/31(日) 16:05:57.90ID:5rh0udnx
promiscous
0259デフォルトの名無しさん2014/08/31(日) 18:58:29.74ID:Y2iyz0hZ
時代遅れですC#を使いましょう
おっさんの古臭いコードは何の役にも立たない
0260デフォルトの名無しさん2014/08/31(日) 20:00:39.57ID:oilNB/q8
>>259
日曜日なのにおせーよ
なにやってんだよ
もしかして出勤かよダセーな奴隷かよ
0261デフォルトの名無しさん2014/08/31(日) 20:23:28.67ID:w1I465vc
もしかしてイケてると思ってた?
0262デフォルトの名無しさん2014/08/31(日) 21:32:02.07ID:UeJAzMTq
>>257
ぶっちゃけ送信できていれば、setsockoptのIP_MULTICAST_LOOPで
明示的に指定しない限り、勝手にループバックされてくる筈なんだけどなあ。
Win8.1/送信側C++/受信側C#で試しに書いてみたけど、
IP_MULTICAST_IFを設定しても普通に受信できてたし。
何かの要因で、sendto自体がエラーになったりしているとかない?
0263デフォルトの名無しさん2014/08/31(日) 21:51:39.39ID:Y2iyz0hZ
C#はC++より優れたオブジェクト指向
0264デフォルトの名無しさん2014/08/31(日) 22:15:10.69ID:qzUDrRrO
OpenGLが使えるようになったらまた声をかけてくれ
0265デフォルトの名無しさん2014/09/03(水) 12:52:08.39ID:MAtMcWe1
1年越しの疑問がやっと解決した
BACKWARD した後は
FORWARD しないといけないんだった
0266デフォルトの名無しさん2014/09/03(水) 14:16:27.71ID:0jmEHP6P
C#なら悩む必要のない問題
0267デフォルトの名無しさん2014/09/03(水) 19:27:46.85ID:7tHdUujr
1)縦横のそれぞれの列に1〜6の数字が1つずつ入ります(ここは数独と同じ)
2)マス目にあらかじめ入っている(数字)は太線で囲まれたブロックに入る数字の合計を表しています
3)太線で囲まれたブロックの中には同じ数字が入ることもあります

┏━━┳━━┳━━┳━━┯━━┳━━┓
┃(3) ┃(4) ┃(13)┃(5) │  ┃(8) ┃
┠──┣━━┫──┣━━┳━━┫──┨
┃  ┃(7) ┃  ┃(1) ┃(7) ┃  ┃
┣━━┫──┃──┣━━┫──┣━━┫
┃(11)┃  ┃  ┃(7) ┃  ┃(6) ┃
┠──┣━━┻━━┫──┣━━┻━━┫
┃  ┃(6) │  ┃  ┃(6) │  ┃
┣━━┻━━┳━━┻━━╋━━┳━━┫
┃(9) │  ┃(6) │  ┃(4) ┃(3) ┃
┣━━┳━━┻━━┳━━┻━━┫──┨
┃(4) ┃(5) │  ┃(11)│  ┃  ┃
┗━━┻━━┷━━┻━━┷━━┻━━┛

これを解くプログラムを Win32API でおながいします
(たぶんずれるので等幅フォントのエディタにコピペで見てください)
0268デフォルトの名無しさん2014/09/03(水) 19:29:58.29ID:qW20Ksi1
>>267
ぐちゃぐちゃだ,やりなおせ
0269デフォルトの名無しさん2014/09/03(水) 19:31:17.92ID:0ir9kNKt
どこをwinapiにしたいのか?
純C/C++ではダメか。
C/C++は使ってはいけないってことか?
0270デフォルトの名無しさん2014/09/03(水) 19:40:12.28ID:7tHdUujr
出来ればGUIで
人間が数字をマスに置くと
その時点での太枠内の合計が(数字)と合ってれば
その太枠内のマスの背景が全部グリーンになるとかいう感じで
思考はコンピュタじゃなくても良いです
0271デフォルトの名無しさん2014/09/03(水) 19:43:48.66ID:7tHdUujr
1)の条件をクリア出来てない時は
背景グリーンだったものを赤にするとか
全部クリア出来たら完了メッセージとかも要る気がします

後出しすみませんでした
0272デフォルトの名無しさん2014/09/03(水) 19:44:29.71ID:S4BzwfjD
そういうパズルが掲載されてる懸賞つきパズル雑誌のページをスキャナで読み取って自動で解答を作ってくれるソフトがいいな俺は
0273デフォルトの名無しさん2014/09/03(水) 19:44:34.16ID:0ir9kNKt
それならwindowsで動くGUIでいいんだろ。
winapiを使わなくても。
C#とかQTとかクロスプラットフォームでも。
0274デフォルトの名無しさん2014/09/03(水) 19:46:15.06ID:7tHdUujr
>>272
ある懸賞付きアンケートの回答はがきの片面に書かれてたパズルなのですが
パズルの正解不正解と懸賞の当選は関係ありませんと明記されていました
0275デフォルトの名無しさん2014/09/03(水) 19:48:19.52ID:7tHdUujr
>>273
言われてみればそうですね
エクセルが一番楽かも
0276デフォルトの名無しさん2014/09/03(水) 19:50:10.11ID:0jmEHP6P
結論:Win32APIは必要なかった笑
0277デフォルトの名無しさん2014/09/03(水) 20:32:20.87ID:Tp7pgW4B
>>275
普通の9x9数独ならすぐできるが
細線太線の位置が可変ならフラグ処理と判定が面倒
0278デフォルトの名無しさん2014/09/04(木) 22:33:05.12ID:gf6bSdzV
升目のグループ化はラベリングでやればいいんじゃね?
0279デフォルトの名無しさん2014/09/05(金) 15:23:08.69ID:JjYqHkIR
>>267
やってみたら普通に簡単だった
コツ掴めばスラスラいける

なんでも人を頼りにしたら
自分で考える力が無くなるぞ
0280デフォルトの名無しさん2014/09/05(金) 15:57:17.04ID:whpFSDGE
APIやらGUIやら書いてるから、HDCにあれこれ書き込む必要があるのは
面倒くさすぎるだろと思ってたんだけど、違ったのか。
0281デフォルトの名無しさん2014/09/05(金) 16:32:30.53ID:p4jkMY4H
またC#erが勝った
0282デフォルトの名無しさん2014/09/07(日) 02:46:05.81ID:qGzfz7wC
【IT】政府、ハッカー採用へ サイバー攻撃対応で15年度めど [9/7]
http://daily.2ch.net/test/read.cgi/newsplus/1410017587/
0283デフォルトの名無しさん2014/09/08(月) 00:13:43.92ID:7YftTWfN
公募でしてどうするんだ、政府のパッパラパーは
0284デフォルトの名無しさん2014/09/08(月) 05:49:35.83ID:K14WNnAR
きみハッカー
おれバッカー
0285デフォルトの名無しさん2014/09/08(月) 06:12:58.56ID:f5Blo0Jc
ばかばっかー
0286デフォルトの名無しさん2014/09/08(月) 12:40:47.95ID:ERkLeGt8
ここのひとは難しい質問には堪えられません
0287デフォルトの名無しさん2014/09/08(月) 17:43:54.35ID:PbRMq4gS
まあね
0288デフォルトの名無しさん2014/09/08(月) 20:25:26.35ID:tIHnYase
たしかに堪えられないな
0289デフォルトの名無しさん2014/09/08(月) 20:53:14.31ID:P9UWnfN6
呼んだ〜
http://image.rakuten.co.jp/auc-amecos/cabinet/cyubacamasks2.jpg
0290デフォルトの名無しさん2014/09/09(火) 22:55:50.01ID:s44xo5mT
すんません、ずっと前にWindwosイベントログやら不正落ちに付いて聞いたものなんですが、
Windowsイベントログにある「障害アドレス」と、SetUnhandledExceptionFilter を使って得られる
EXCEPTION_POINTERS *e の e->ExceptionRecord->ExceptionAddress のアドレスが激しく違うんですけど、
それぞれどういうアドレスなんです?

テスト用に仕込んだ不正落ちコードは変更せずに、
・SetUnhandledExceptionFilter を使わずに普通に不正落ちさせたとき(エラーを捕まえちゃうとイベントログに残らないから)
と、
・SetUnhandledExceptionFilter でエラー捕まえてExceptionAddressの値を見たとき
のアドレスが違いすぎるんです。SetUnhandledExceptionFilterの呼び出し有無とか、それによって呼び出されるコールバック関数の有無があるから多少アドレスが違うのはわかるんだけど...

イベントログに残っている「障害アドレス」は、手元にある map ファイルをもとにして例外発生箇所が容易に分かったけど、
ExceptionAddress の値はベースアドレス 0x400000 に対して一桁二桁大きい値なんでmapに対応関数が載ってないんですよね。どちらの方法でも同じアドレスが取得で生きると思ってたから、意外でした。
02912572014/09/09(火) 23:02:25.46ID:03IzUn3D
>>262
レス遅くなってすみません。
そちらで検証までして下さって、ありがとうございます。

sendtoの戻り値を調べてみましたが、IP_MULTICAST_IFの設定有無に関わらずエラーなし
(SOCKET_ERRORが返ってこない)でした。
でも、IP_MULTICAST_IFを127.0.0.1に設定すると受信側がパケットを受け取れなくなります。

まぁ、設定しなければ受信できるので、実用上は問題ありませんが、
明示的にネットワークインターフェースを指定したほうが作法としては良いとのことだったので、気になりました。
0292デフォルトの名無しさん2014/09/10(水) 01:16:04.99ID:k0fy1qos
C#しらない馬鹿発見
APIでオナニーしても無意味な時代なのにね
0293デフォルトの名無しさん2014/09/10(水) 02:15:16.38ID:9OgYyIpI
もうちょっと頑張れよ。物足りんぞ。
0294デフォルトの名無しさん2014/09/10(水) 09:16:03.19ID:4+0DuQ01
C#覚えると逮捕されます
0295デフォルトの名無しさん2014/09/10(水) 12:39:09.71ID:k0fy1qos
APIがしがしいじるおっさんは解雇
0296デフォルトの名無しさん2014/09/10(水) 22:46:24.17ID:VjIDivsV
\Win2D/ デデン

https://github.com/Microsoft/Win2D
0297デフォルトの名無しさん2014/09/11(木) 02:21:30.28ID:sP1ALdyH
API理解できてて俺カッコイイしてても上は無知なんだから
C#でさくっとコーディングしなよw
0298デフォルトの名無しさん2014/09/11(木) 02:36:34.11ID:K7L/xZ5+
C#でmouse_eventやkeybd_eventみたいなこと出来るんだっけ?
0299デフォルトの名無しさん2014/09/11(木) 03:36:07.10ID:mCCGiMZY
C#でここを煽る自動スクリプトをサクッと書けよ
0300デフォルトの名無しさん2014/09/11(木) 05:18:06.29ID:p9H2bXgo
>>298
http://msdn.microsoft.com/ja-jp/library/aa302340.aspx
mouse_event→System.Windows.Forms.MouseEventArgs、しかし間違ってるとしか…
keybd_event→記載なし

C#からWin32API呼ぶのが一番簡単かもね。
0301デフォルトの名無しさん2014/09/11(木) 07:40:27.92ID:BpRRpzGv
Win32API使うなんていまどき朝日新聞読んでますと言うくらい恥ずかしい
0302デフォルトの名無しさん2014/09/11(木) 13:49:04.59ID:lq0VxCeo
比較対象・方法論がおかしい。やりなおし。
0303デフォルトの名無しさん2014/09/11(木) 20:03:03.26ID:sP1ALdyH
ほらC#から必要なときにWin32APIを呼び出せるんだから
0304デフォルトの名無しさん2014/09/11(木) 20:31:02.53ID:mCCGiMZY
そうですね。必要なときにWin32APIを呼び出すのに必要な知識や方法を話し合うのに、引き続きこのスレを使いましょうね。
0305デフォルトの名無しさん2014/09/12(金) 01:57:45.34ID:JOBfL2F2
2chで他人の悪口を言ってるより、自分が満足すること、他人に自慢できるものを一つでも二つでも増やした方がいいぞ。
実生活でも「2ch悪口シンドローム」が表に出て不満が鬱積し、性格も人生もどんどんすさむぞ。
0306デフォルトの名無しさん2014/09/12(金) 23:12:42.68ID:4QOwGlS9
w

誰に言ってんのw?
0307デフォルトの名無しさん2014/09/12(金) 23:29:59.02ID:lNPeIVql
API厨
0308デフォルトの名無しさん2014/09/13(土) 03:33:11.86ID:JgB/3vdC
「2chで他人の悪口」て書いてるんだから、誰だか分かるよねー
MSDNより簡単でしょー

ほんと煽りのレベルがクソ以下続きなんで、もっと努力して頂戴。
0309デフォルトの名無しさん2014/09/13(土) 13:14:09.04ID:NKTlhTvY
ダイアログウィンドウの中にTreeViewControlを持たせているのですが、
ツリー中の項目をダブルクリックしたことを示すメッセージはどこで受け取ればイイのでしょうか?
親ダイアログのプロシージャでWM_LBUTTONDBLCLKを待ちうけましたが、
ダイアログの何もないところのダブルクリックは拾ったものの、
TreeViewControl中のダブルクリックは拾いませんでした。
0310デフォルトの名無しさん2014/09/13(土) 13:17:37.86ID:EgQD9V/2
WM_NOTIFY じゃね
http://www.nitoyon.com/vc/reference/gui/treeview.htm
03113092014/09/13(土) 13:30:53.39ID:NKTlhTvY
>>310
そのページのやり方で無事きました!
素早いご回答、ありがとうございました!
0312デフォルトの名無しさん2014/09/14(日) 10:26:20.98ID:s0obBkVh
>>303
そんなゴム付けてやるみたいな...
0313デフォルトの名無しさん2014/09/14(日) 10:27:53.12ID:gO6moQCP
毎回生なんて節操無いだろ
0314デフォルトの名無しさん2014/09/15(月) 01:38:32.03ID:PuXt1P2q
.....
0315デフォルトの名無しさん2014/09/15(月) 09:57:59.68ID:xix8OsY4
せめてWin32使うとこはCLIにすればいいのに
0316デフォルトの名無しさん2014/09/15(月) 09:59:53.28ID:e89ZEgqy
CLIってC++/CLI指していってるのか
あんな醜悪なキモ言語持ち出すとかセンスねえな
おめえの顔もよほどキモイんだろう
0317デフォルトの名無しさん2014/09/15(月) 16:53:54.45ID:8laGfvQD
一時はC#なんてキモ言語よりCLI使えとか言われてたが
人によって言うことバラバラだな
宗教戦争は他所でやれ
0318デフォルトの名無しさん2014/09/15(月) 17:28:06.82ID:FKFqjqid
非GUIアプリ同士のプロセス間通信には何を使うのがいいのだろうか?

サーバーサイドのCGIと常駐プロセス間で、数10Kb程度を双方向でやり取りするんだけどさ。
Windowが必要なWM_COPYDATAは使えないし、名前つきパイプは何か色々面倒な感じだしで、
同期オブジェクト使ってメモリマップトファイルでするのがある意味一番簡単なのかな?
0319デフォルトの名無しさん2014/09/15(月) 17:31:25.47ID:MGTym664
非GUIは、GUIでwindow非表示かDOS画面を表示したらいい。
0320デフォルトの名無しさん2014/09/15(月) 17:33:38.08ID:x1p5pPK5
named pipeが面倒とか言っていいのは中学生まで。
0321デフォルトの名無しさん2014/09/15(月) 17:46:35.52ID:xix8OsY4
面倒ならidl書いてmidlでrpc関数自動生成してもらえば?
64<ー>32も同じ呼び出しでいけるし、IPCにパイプ、ソケット使おうがコード変えずに切り替えられる
0322デフォルトの名無しさん2014/09/15(月) 18:03:56.34ID:FKFqjqid
rpcが何か良さそうな感じですね。ありがとうございます。
調べてみます。
idlも10年前ですが、、経験有るのでたぶん分かると思います。
0323デフォルトの名無しさん2014/09/15(月) 19:29:41.68ID:j8xvklWY
名前付きパイプより簡単には見えないw
0324デフォルトの名無しさん2014/09/16(火) 06:59:08.23ID:fwBv28w1
smallってマクロ気にならないですか?
0325デフォルトの名無しさん2014/09/16(火) 07:28:13.82ID:fwBv28w1
small何とかする方法ないですか?
0326デフォルトの名無しさん2014/09/16(火) 17:36:16.63ID:ZvKCu1Jr
何とかする方法と言われてもsmallをどうしたいのかが分からない。
0327デフォルトの名無しさん2014/09/16(火) 17:37:59.00ID:xCICRn64
馬鹿には無理
0328デフォルトの名無しさん2014/09/16(火) 17:45:10.30ID:fwBv28w1
小文字マクロやめてほしいです。
min、maxみたいに抑制する方法が有ればいいのに。
undefするしかないみたい。
0329デフォルトの名無しさん2014/09/16(火) 17:56:55.79ID:ZvKCu1Jr
なんとかなったようですねw
0330デフォルトの名無しさん2014/09/16(火) 18:03:10.46ID:fwBv28w1
Macに変えました。
0331デフォルトの名無しさん2014/09/16(火) 20:05:20.78ID:zuELja3f
small->Macなのか
Win->Macなのか
0332デフォルトの名無しさん2014/09/17(水) 04:31:47.17ID:x9mPq2Oh
Windows.hを読み込むとrpcndr.hが読み込まれ、その中に有る#define small charが
有効になるんですよ。
それでsmallが識別子に使えないんです。
min、maxも同様ですが、こちらはstd::min、std::maxとかぶるので抑制マクロが有る。
小文字のマクロはやめたほうが良いんじゃないかって話です。
なんでtypedefにしないんですか。
min、maxは仕方ないにしてもsmallなんてtypedefで良いじゃないですか。
ということを2chを通してMicrosoftの偉い人に訴えているわけです。
0333デフォルトの名無しさん2014/09/17(水) 04:34:34.24ID:WEhe6VRz
undefすれば?
0334デフォルトの名無しさん2014/09/17(水) 04:45:08.52ID:x9mPq2Oh
イイエダメです。
0335デフォルトの名無しさん2014/09/17(水) 04:48:54.76ID:0GY9a1ZF
良い枝豆です
0336デフォルトの名無しさん2014/09/17(水) 10:20:06.90ID:epONY4U2
アンダーバー付け加えろよ
本当にめんどくさいやつだな
0337デフォルトの名無しさん2014/09/17(水) 14:09:51.63ID:or6PO8CM
毎回震度4以上の地震が来る度に
うちのパソコンのHDDが一つづつ壊れていく・・・
0338デフォルトの名無しさん2014/09/17(水) 14:20:57.64ID:x9mPq2Oh
>>336
めんどくさくありません。

システム標準のフォントサイズを知る方法を教えてください。
0339デフォルトの名無しさん2014/09/17(水) 15:07:33.13ID:W6ysY4L2
BOOL WINAPI GetHowToGetSystemFontSize( SYSTEMFONT* psf, uint uSo );
0340デフォルトの名無しさん2014/09/17(水) 15:23:22.62ID:Sobgjc4e
>>338
http://azumaya.s101.xrea.com/wiki/index.php?%B3%D0%BD%F1%2FWin32%20API%2F%A5%B7%A5%B9%A5%C6%A5%E0%A5%D5%A5%A9%A5%F3%A5%C8%A4%F2%BC%E8%C6%C0
0341デフォルトの名無しさん2014/09/17(水) 15:34:37.64ID:x9mPq2Oh
>>340
どうもです。
0342デフォルトの名無しさん2014/09/17(水) 19:26:29.57ID:YTtw5Lif
俺はいちいち試さないけど WIN32_LEAN_AND_MEAN で解決できるんじゃね
0343デフォルトの名無しさん2014/09/17(水) 19:40:38.52ID:x9mPq2Oh
>>342
どこで定義するか困るですね。
smallを使う前に定義しても、その前にWindows.hを読まれると意味ないから。

2chには右翼が多いと聞いたんですが、クレクレしてもらえませんかね?
街宣車横付けしてsmallてなんやねん!?みたいな。
0344デフォルトの名無しさん2014/09/17(水) 20:14:48.28ID:IO0Y2GXI
-Dだな。
0345デフォルトの名無しさん2014/09/17(水) 23:00:05.43ID:QAlYfKL7
:-D
0346デフォルトの名無しさん2014/09/18(木) 13:40:34.71ID:WjKplAK6
:-D)
0347デフォルトの名無しさん2014/09/18(木) 14:00:04.72ID:WD6xtm/l
:-P
0348デフォルトの名無しさん2014/09/19(金) 00:38:02.69ID:3fL0IB09
ここまで英語圏顔文字無し
0349デフォルトの名無しさん2014/09/19(金) 05:06:11.95ID:x7pAzsC3
XD
0350デフォルトの名無しさん2014/09/19(金) 05:06:53.00ID:NQv2WdNb
描画に使うフォントは一般的にどこで生成しますか?

WM_PAINTの中でCreateFont()→DeleteObject()を200回繰り返しても速度的に
まったく問題ありませんでした。

本来は予め生成したものを使いまわすのですか?

他のプラットフォームではフォントの生成に時間がかかりますが、Windowsには
GDIオブジェクトの最大数に制限が有るので悩みます。
0351デフォルトの名無しさん2014/09/19(金) 05:16:12.14ID:UwNOujrp
>>350
さすがに一度のWM_PAINT処理中での同一フォント位は使いまわしてあげようよ…
0352デフォルトの名無しさん2014/09/19(金) 05:26:21.20ID:NQv2WdNb
>>351
他のプラットフォームでは使いまわす以外の選択肢が有りません。
たとえばXでは、Exposeイベントの中でフォントを生成すると、ユーザーは
アプリケーションがフリーズしたかのような印象を受けます。

Windowsでは、まったく問題のない(まるでPENを生成する程度の)速度が
出るので、質問しています。
0353デフォルトの名無しさん2014/09/19(金) 05:31:30.16ID:NQv2WdNb
WindowsはWM_PAINTの中でフォントの生成と破棄を繰り返すように設計されている
のではないか?という疑問です。

単純に速いだけで、予め生成しておくものなんですかね?
0354デフォルトの名無しさん2014/09/19(金) 07:25:26.90ID:29l2E3/T
仕様でなく実装に依存しようという究極のボケカスさんおはよう
0355デフォルトの名無しさん2014/09/19(金) 07:55:13.37ID:tvyonBI1
世界って仕様はまだ発見されてなくて実装しかないよね
0356デフォルトの名無しさん2014/09/19(金) 08:01:30.13ID:8GvrxYvi
make world 知らないのか?
0357デフォルトの名無しさん2014/09/19(金) 08:11:10.15ID:OJCIiOtw
Windowsで信頼出来るのは仕様ではなく実装だけ
0358デフォルトの名無しさん2014/09/19(金) 08:22:30.54ID:lLh0m1hk
>>356
kernelが無いw
0359デフォルトの名無しさん2014/09/19(金) 11:48:09.95ID:iHgvKusj
>>352
選んだフォントによって挙動が異なるという罠
あるいはフォント構築時ではなく文字描画時に負荷がかかっているという罠
0360デフォルトの名無しさん2014/09/19(金) 11:49:31.29ID:9nFtEcDJ
後者だろうね
0361デフォルトの名無しさん2014/09/19(金) 13:15:25.89ID:SA8sB96U
おらあ、WM_CREATEでフォント生成してWM_DESTROYで破棄しとるでよ
0362デフォルトの名無しさん2014/09/19(金) 17:42:11.78ID:3fL0IB09
WM_CREATEで初期化
WM_CLOSEで後始末じゃないの
0363デフォルトの名無しさん2014/09/19(金) 17:50:52.03ID:uKCerjSn
WM_CLOSEは閉じる前の確認で発生するから間違い
0364デフォルトの名無しさん2014/09/19(金) 17:58:06.49ID:3fL0IB09
確認で閉じるのが確定したらそのままWM_CLOSEでやればよくね?
確定しなかったらbreak

WM_CLOSE
 確認
  no break
  yes 後始末後DestroyWindow()
WM_DESTROY
 PostQuitMessage(0);
0365デフォルトの名無しさん2014/09/19(金) 18:23:22.22ID:NQv2WdNb
>>361
どうもです。

>>364
WM_CLOSEはウィンドウを閉じるときに来るけど、現行のウィンドウズでウィンドウを閉じると
そのウィンドウは最小化する。

例えば、デスクトップ直下のウィンドウを閉じるとタスクバーに入る状態になる。
この状態でWM_PAINTが来るとすると、サムネイルの表示くらいかと思うけど、
そこらへんどうなんだろう。
あと、最小化状態から復元するときに、フォントを回復するのかな。
等といろいろ疑問が有るんだけど。
0366デフォルトの名無しさん2014/09/19(金) 18:34:40.47ID:iHgvKusj
WM_CLOSEって子ウインドウにこないんじゃないの
0367デフォルトの名無しさん2014/09/19(金) 18:45:13.26ID:NQv2WdNb
>>366
::CloseWindow()を呼び出すと来るんじゃないですかね。

Xlibの方はちょっと絶望的ですね。
早くする方法がないかと調べてたら、すごいの見つけてしまった。
こんな環境も考慮しないといけないんだろな。
フォントサーバ方式はいろいろ欠点が目につきます。

http://pc11.2ch.net/test/read.cgi/linux/1199010247/52

> XCreateFontSetにやたら時間がかかる(2秒くらい)
0368デフォルトの名無しさん2014/09/19(金) 19:24:24.17ID:SCZ+cOgA
ttp://msdn.microsoft.com/ja-jp/library/cc410667.aspx
CloseWindowは最小化だろう
0369デフォルトの名無しさん2014/09/19(金) 19:24:41.22ID:NQv2WdNb
http://i.imgur.com/uNuPm7z.png

フォントのサイズもいまいちよくわからない。
背景がグレーの部分は高さ16px、白い部分はブラウザからコピペした部分。

文字は両方とも高さ16pxを指定しているんだけど、文字の一番上から下まで数えると、
CreateFont()の方は15px、ブラウザの方は17pxある。
これはどうしとくのが良いんだろ。

CreateFont()の方は、Meryo UIを指定したのでポのマルがちょっと高いんだけど、
Meiryoに変えてもマルが下にずれただけだった。
画像作りなおすのがめんどくさいのでそのままだけど。
0370デフォルトの名無しさん2014/09/19(金) 19:26:48.26ID:uKCerjSn
LOGFONTの説明を嫁
0371デフォルトの名無しさん2014/09/19(金) 19:27:46.98ID:SCZ+cOgA
ブラウザのフォントサイズ指定は
pxじゃなくてptだろ
0372デフォルトの名無しさん2014/09/19(金) 19:31:08.99ID:NQv2WdNb
>>370
MM_TEXTだからたぶんあってるはず。

>>371
pxで指定してる。
0373デフォルトの名無しさん2014/09/19(金) 19:35:03.74ID:NQv2WdNb
tmInternalLeadingが関係してるのかな。
ちょうどその位の差だけど。
0374デフォルトの名無しさん2014/09/19(金) 22:11:06.80ID:NQv2WdNb
https://code.google.com/p/chromium/codesearch#chromium/src/ui/gfx/platform_font_win.cc&;l=268

こういう仕組みらしいです。
ブラウザなら先にフォントを作っておけるけど、普通のアプリだと厳しいかな。
0375デフォルトの名無しさん2014/09/19(金) 23:09:41.07ID:SA8sB96U
>>364
WM_CLOSEで必ず閉じる訳じゃないから、ユーザー確認後に破棄するという分岐が必要。
素直にWM_DESTROYの方がすっきりやろ。
0376デフォルトの名無しさん2014/09/20(土) 00:38:51.65ID:WhUg0uHH
>>375
WM_CLOSEで分岐してDestroyWindowを呼ぶんだから
DestroyWindowの直前で後始末した方がすっきりやろ
0377デフォルトの名無しさん2014/09/20(土) 00:51:27.15ID:QUpUX8gO
>>376
WM_CLOSE以外でDestroyWindow()呼びたいときはどうするの?
自身の用件が終了後、自動で閉じる窓とか、
ゲーム(閉じるボタンではなくゲーム内操作からの終了)とか。
どちらも、WM_CLOSEからの終了もまた考えられるが、別口からの終了もまた考えられるワケだ。
0378デフォルトの名無しさん2014/09/20(土) 00:55:08.26ID:W3zl3TGC
>>377
つかぬことを伺いますが、Linux板からのお客様でしょうか?
0379デフォルトの名無しさん2014/09/20(土) 00:57:25.46ID:QUpUX8gO
>>378
いいえ、全く。
0380デフォルトの名無しさん2014/09/20(土) 00:58:58.36ID:CW5aF+wZ
http://msdn.microsoft.com/ja-jp/library/windows/desktop/ff381396%28v=vs.85%29.aspx

好きなタイミングでリソース開放してればいいさ
0381デフォルトの名無しさん2014/09/20(土) 01:03:03.43ID:W3zl3TGC
>>379
またまたご謙遜を。
0382デフォルトの名無しさん2014/09/20(土) 01:09:30.57ID:WhUg0uHH
>>377
1箇所にまとめないのか?
0383デフォルトの名無しさん2014/09/20(土) 01:14:15.52ID:CW5aF+wZ
http://msdn.microsoft.com/ja-jp/library/windows/desktop/ms647558%28v=vs.85%29.aspx
> The window procedure processes the WM_DESTROY message to destroy fonts and free memory.
0384デフォルトの名無しさん2014/09/20(土) 05:05:16.60ID:QUpUX8gO
>>382
纏めるに決まってんじゃん、各イベントを関数/メソッド化してんだから
WM_CREATEで呼んだ初期化と対になる解放処理をWM_DESTROYで呼ぶだけよ

とは言え、単にWM_DESTROYに書いとけば自然とそこにまとまるんだけどな
0385デフォルトの名無しさん2014/09/20(土) 06:54:29.60ID:X7ALdnuJ
どうせプロセス終了したらリソース解放されるんだから解放処理なんかいらないぜぇ〜
ワイルドだろぉ〜?
0386デフォルトの名無しさん2014/09/20(土) 06:56:54.86ID:3F14zGUE
・されないのもある
・アプリの使用時間にあわせて不安定になるアプリは使いたくない
0387デフォルトの名無しさん2014/09/20(土) 06:58:36.60ID:W3zl3TGC
WM_CLOSEかWM_DESTROYかって話は、よほどうまく考えない限り、WM_DESTROYだろね。

>>385
Xlibなんかは、プロセス終了しても残るリソースあるんだよね。
Win32APIは全部消えるのかな。
0388デフォルトの名無しさん2014/09/20(土) 10:09:13.03ID:UUd20y13
WM_CLOSEかWM_DESTROYか って話じゃないだろ
全然別物
0389デフォルトの名無しさん2014/09/20(土) 10:12:34.31ID:p579UTgt
WM_CLOSE で PostQuitMessage(0);
WM_DESTROY でリソース解放
0390デフォルトの名無しさん2014/09/20(土) 10:29:46.45ID:zqGI0i/Q
WM_CLOSEって子ウインドウにこないんじゃないの
0391片山博文MZ次期CEO ◆T6xkBnTXz7B0 2014/09/20(土) 12:30:25.90ID:eXi87Jx8
アンパンマン、新しい顔ができたよ!!!

MZC3_WebBrowser
https://github.com/katahiromz/MZC3_WebBrowser
MZC3_TextToText
https://github.com/katahiromz/MZC3_TextToText
0392デフォルトの名無しさん2014/09/20(土) 12:36:51.50ID:WhUg0uHH
>>384
> WM_CLOSE以外でDestroyWindow()呼びたいとき
DestroyWindowが点在してるじゃねーか

それを言ったらSendMessageでWM_CLOSE発生させたらWM_CLOSEに書いといてもまとまるだろ
0393デフォルトの名無しさん2014/09/20(土) 14:09:49.62ID:AqzYKOvA
一回の生成に対して確実に一回破棄するなら問題はないから、真っ赤になって議論することではない。ただし、windowsの仕様上WM_CREATEと対を成すのはWM_DESTROY。
0394デフォルトの名無しさん2014/09/20(土) 14:48:17.93ID:W3zl3TGC
実際に書いてみればわかることなのに。
どっちか片方は色々めんどくさいんだから。
0395デフォルトの名無しさん2014/09/20(土) 15:25:47.64ID:QUpUX8gO
WM_DESTROYはDestroyWindow()の他、WM_CREATEをreturn -1で終えた際にも発生するし
WM_DESTROY処理時点ではまだウィンドウは(画面から消えてはいるが)存在はしてる
これ以上の後処理に適した場は無いと思う
0396デフォルトの名無しさん2014/09/20(土) 15:40:02.82ID:GbFNl7YA
I think so.
0397デフォルトの名無しさん2014/09/20(土) 16:46:37.63ID:RJVjybNh
おれは必要なフォントにはIDつけてハッシュで取ってこれるようにして複数の窓で共有するな
本当に開放するのはWinMainの最後
0398デフォルトの名無しさん2014/09/20(土) 17:15:10.05ID:Vt9JAeIo
IDよりハンドルの方が合理的
0399デフォルトの名無しさん2014/09/20(土) 17:26:47.37ID:RJVjybNh
だってハンドルって動的だろ
アプリのメニューフォントくれ、タブフォントくれ、エディットフォントくれとやりたいから自分で割り当てたIDハッシュがありがたいんだ
0400デフォルトの名無しさん2014/09/20(土) 17:29:36.25ID:RJVjybNh
クラスメソッドでGet、Setもいいけどフォント追加するたびに新しいメソッド追加と思うとハッシュでいいやってなった
Enum追加するだけだし
0401デフォルトの名無しさん2014/09/20(土) 19:05:31.00ID:W3zl3TGC
WinRTについては、対応とか考えてる?
0402デフォルトの名無しさん2014/09/21(日) 20:42:36.34ID:ScpoFIsk
WM_CONTEXTMENUのlParamってキーボードのときは-1になるんですよね
マルチスクリーン環境のスクリーン座標って、マイナスは普通にあるんじゃないかと。。。
実際に(-1,-1)を右クリックしたときって、lParamも(-1,-1)になるとしたら
マウスからなのか、キーボードからなのか判別できないですよね

で合ってますか?
0403デフォルトの名無しさん2014/09/21(日) 21:08:51.15ID:mcbSp6vd
知らんけど、なんか困ることあるなら対策取るだけだし。
0404デフォルトの名無しさん2014/09/21(日) 21:20:03.94ID:tOx92QLW
(-1,-1)をピンポイントでクリックすることなんてあまりないんじゃ
0405デフォルトの名無しさん2014/09/21(日) 21:24:56.39ID:+YftySIr
フルスクリーン座標で-1はないな
04064022014/09/21(日) 21:45:13.50ID:ScpoFIsk
403-405
いま上下2枚のマルチモニタ環境で、下がメインディスプレイです
下のWM_CONTEXTMENUはx,yとも正なのですが
上だとyがマイナスになるみたいです(1072,-60みたいな感じ)
トリプル以上で、左上のモニタだと、x,yともマイナスになるんじゃないかと思ったんですが
ありえないのかな。。。
0407デフォルトの名無しさん2014/09/21(日) 21:53:49.86ID:tOx92QLW
そもそもキーボードの入力からと分かったとしてどうする気なんだ?
0408デフォルトの名無しさん2014/09/21(日) 22:08:37.43ID:jfYGRFZD
4枚で右下がプライマリ状態での左上画面の右下隅か
そう負荷の掛かるものじゃないので
GetCursorPosしてチェックすればいいんでないかな
04094022014/09/21(日) 22:12:23.60ID:ScpoFIsk
レスありがとうございます
実はそんなに仕様が固まっているわけでもないんですが(すんません)

ツリービューのアイテムに対するコンテキストメニューで
キーボード(-1,-1)→ 選択中アイテムを対象
マウス → 右クリック座標でヒットテスト、アイテムを選択して、それを対象

ツリービューが、右クリックしてもアイテムが選択状態にならなかった
気がするので(ほんとにそうだったかな。。。)
WM_CONTEXTMENUでTreeView_Selectしています

キーボードのときはSelectしない、マウスのときはSelectする、です
0410デフォルトの名無しさん2014/09/21(日) 22:12:51.38ID:jfYGRFZD
と思ったけど
カーソルが-1,-1状態でキーボードからのメッセージだと判別出来ないな
0411デフォルトの名無しさん2014/09/21(日) 22:19:48.01ID:+YftySIr
M$の設計ミス?
0412デフォルトの名無しさん2014/09/21(日) 23:14:21.01ID:mcbSp6vd
変な挙動はこれに限らないから、対策取るしか。
-1,-1の場合はGetAsyncKeyStateでさらに押下キーのチェックすればどうなの。
0413デフォルトの名無しさん2014/09/21(日) 23:18:01.69ID:jfYGRFZD
簡易な正攻法もありそうだけど分らんから
俺ならとりあえずマウスフックして-1,-1の右クリを弾く
04144022014/09/22(月) 00:16:54.62ID:oKtXt5r/
412
413
ありがとうございます
難しそうですが勉強になります

いまのところ簡単そうな

(1)(-1,-1)はあったとしてもマルチモニタ左上画面の右下隅
しかも1ピクセルなので無視する(キーボード入力とみなしてしまう)

(2) WM_CONTEXTよりも先に来るっぽいNM_RCLICKのときに
ヒットテストをしてアイテムを選択してしまう
WM_CONTEXTに来たら問答無用に選択アイテムのメニューを表示する

のどちらかにしてしまおうかと思ってます
0415デフォルトの名無しさん2014/09/22(月) 01:36:11.66ID:ciPQ6+SA
ウィンドウの外にカーソルが出たときWM_MOUSELEAVEを受け取るには、TrackMouseEvent()を使います。

ところで、対象ウィンドウの上に別のウィンドウが有る場合、カーソルが別のウィンドウに出ても
WM_MOUSELEAVEは飛んできません。

既存のアプリケーションでどうなるか試したところ、Google Chromeはカーソルが外に出たことを
検知していませんでした。
IEは検出して正しく動作します。

Chromiumのソースコードを見ると、まさにTrackMouseEvent()を使っていました。
IEのソースは持っていません。

IEのように動作するには何を使えば良いですか?
0416デフォルトの名無しさん2014/09/22(月) 01:38:31.71ID:3YN9TFHL
単純にマウスのスクリーン位置を一定時間ごとに取得してんじゃねえの
0417デフォルトの名無しさん2014/09/22(月) 03:07:20.27ID:L3vqYQya
setcapture
0418デフォルトの名無しさん2014/09/22(月) 07:43:06.03ID:pZTx2uN6
>>415
おかしいと思って今試したけど。

>対象ウィンドウの上に別のウィンドウが有る場合、カーソルが別のウィンドウに出ても
>WM_MOUSELEAVEは飛んできません。

これ間違いじゃね?
飛んでくるよ。アクティブだろうが非アクティブだろうが。
0419デフォルトの名無しさん2014/09/22(月) 08:22:21.97ID:ciPQ6+SA
アクティブかアクティブでないかは関係ありません。
0420デフォルトの名無しさん2014/09/22(月) 11:10:49.26ID:udgTuvtS
だから関係ないって書いてるだろ
自分ところのコードでもちゃんとWM_MOUSELEAVE飛んでくるよ
0421デフォルトの名無しさん2014/09/22(月) 11:38:53.03ID:7aojYSJv
> 別のウィンドウが有る場合、カーソルが別のウィンドウに出ても
0422デフォルトの名無しさん2014/09/22(月) 11:42:37.34ID:pZTx2uN6
もしかしてこのお利口さんは、

「当該ウィンドウが他のウィンドウに完全に覆われている状態でも」
「隠されたウィンドウの領域にあたる部分からマウスカーソルが外に出たらWM_MOUSELEAVEが来るべきだ」

とか考えてるのかな?かな?
0423デフォルトの名無しさん2014/09/22(月) 12:13:41.90ID:4rgv3mOC
キャプチャ取得・解放で解決できないんかね
0424デフォルトの名無しさん2014/09/22(月) 12:16:05.00ID:xorcTHrm
実はこうなってる
https://www.youtube.com/watch?v=Vfn4Z3A8X8U
0425デフォルトの名無しさん2014/09/22(月) 14:10:12.25ID:CujXH2Oa
>>422
最初からそう書いてるようにしか見えないんだけど、それ言いたいなら最初に書いとけよ。
あんさん、読み外してたのを必死に取り繕おうとしてるようしか見えんよ。
0426デフォルトの名無しさん2014/09/22(月) 14:47:36.85ID:pZTx2uN6
>>425
もしキミがそう読み取れたなら、同じレベルの人だからかもね。
あるいは同一人物かも。釣り臭いから。
0427デフォルトの名無しさん2014/09/22(月) 15:31:49.77ID:CujXH2Oa
本人じゃないけど、そういう日本語に読めるけど?
なんでそう必死なのかな。論点ずらさず、さっさと己の過失か能無しを認めなよ。
中国人朝鮮人ならわかった。日本語難しいよね。かわいそうに。
0428デフォルトの名無しさん2014/09/22(月) 16:16:24.06ID:bP9pMLbp
>>425
読み外してるのはそっち

無駄な煽りはいらん
0429デフォルトの名無しさん2014/09/22(月) 17:27:57.87ID:IMS/wq8A
>>406>>408
セカンダリの位置は変えれるから2画面だけでもその状態に出来るよ。
0430デフォルトの名無しさん2014/09/22(月) 17:37:31.16ID:cQyRHW/4
Cで
Static.lib
MyProg.exe
を作って両者で変数を共有したい場合は、
int i;
extern int i;
みたいにできると思いますが、
Dynamic.dll
MyProg.exe
の二つで変数を共有したい場合は、どうすれば良いのでしょうか?

と言う質問をC言語なら俺に聞け(入門編)Part 126で聞いたら、


>Cにはその為の機構は用意されていないので、環境ごとに規定されている手段を採ってください。

使っているのはVS2013のC++なのですが、この場合はどういう手法が一般的でしょうか?

>WINAPIスレへどうぞ。

ということなのでここで質問したいのですが、どういう手法が一般的でしょうか?
0431デフォルトの名無しさん2014/09/22(月) 17:43:22.13ID:xorcTHrm
#pragma data_seg("DLL_DATA_SEGMENT")
int i = 0;
#pragma data_seg()
0432デフォルトの名無しさん2014/09/22(月) 17:46:35.08ID:CujXH2Oa
>>428
うん。ごめんね。

>>430
複数exeから一つのdllで使ってる変数の値を共有ってことなら、
dll側のソースで

#pragma comment(linker, "/SECTION:.shared,RWS")
#pragma data_seg (".shared")
static int kyoyu;
#pragma data_seg ()

としておく。
0433デフォルトの名無しさん2014/09/22(月) 17:51:49.80ID:CujXH2Oa
>>432初期化忘れてた。
>>431でも良かったんだな。
0434デフォルトの名無しさん2014/09/22(月) 17:53:16.92ID:1b5tK9XE
なんでstatic付ける?
0435デフォルトの名無しさん2014/09/22(月) 18:01:25.83ID:CujXH2Oa
意味ないよ。コピペ消し忘れ。
0436デフォルトの名無しさん2014/09/22(月) 18:36:43.98ID:cQyRHW/4
皆さん、レス有難うございます。
今、
Solution1
 Static1.lib
 Static2.lib
Solution2
 MyProg.exe
でスタティックリンクしているのですが、この2つのlibを一つのdll
 Dynamic12.dll
にして

実行時には
MyProg.exe
Dynamic12.dll
で動くようにしたいのですが、2つのlibを一つのdllにする方法が分りません。
どうすれば出来ますか?
0437デフォルトの名無しさん2014/09/22(月) 19:03:50.01ID:dLGPEIqO
dllの作り方は分かってるんですかね?
0438デフォルトの名無しさん2014/09/22(月) 19:06:32.94ID:L3vqYQya
その話題はスレチだ
0439デフォルトの名無しさん2014/09/22(月) 19:07:27.22ID:IMS/wq8A
>>430
http://msdn.microsoft.com/ja-jp/library/9h658af8.aspx
>>431>>432
単なるインポートの話だろうからハズレだろう
0440デフォルトの名無しさん2014/09/22(月) 19:15:40.56ID:L3vqYQya
MyProg.exeのインスタンスが複数あったら?
0441デフォルトの名無しさん2014/09/23(火) 01:32:54.69ID:y6lNWyJt
>>440
インポートできてないって段階だとしたら、その想定を始める意味はあるのか?
というか単なるリンクの感覚で話してるんだったら共有したほうが迷惑じゃね?
0442デフォルトの名無しさん2014/09/23(火) 02:01:44.21ID:gHdmjZZF
俺、インポなんだけど…
0443デフォルトの名無しさん2014/09/24(水) 12:08:16.01ID:2WI09dQB
ttp://gazou.kizitora.jp/wp-content/uploads/imgs/0/8/0825413c.jpg
0444デフォルトの名無しさん2014/09/24(水) 12:31:58.72ID:FgPJOGFT
0120
>>
>>
0445デフォルトの名無しさん2014/09/25(木) 12:52:04.04ID:qdfkas2H
WinAPIでボタンをウィンドウの右下にくっつけるベストな方法を教えて
.NetにはAnchorプロパティがあったけど、
WinAPIだとWM_SIZEでMoveWindowするしかないの?
0446デフォルトの名無しさん2014/09/25(木) 13:31:10.97ID:jhyDm/P4
>>445
自分はそうしてる
座標計算面倒なので、複雑なウインドウはリサイズ不可にしちゃう
0447デフォルトの名無しさん2014/09/25(木) 14:07:54.63ID:Xeq7iPqr
Ancor機能は自分で実装したわ
0448デフォルトの名無しさん2014/09/25(木) 14:27:14.70ID:/NVqQrO0
>>447
アンカーどんな感じにしましたか?
フローレイアウトと、フルレイアウトを作ったんですが、どちらも
親子の大きさだけわかっていれば良いのですが、アンカーは東西南北も
必要だと思います。
子に配置を持たせると、サイズが大きくなるので困ってます。
今32バイトです。
0449デフォルトの名無しさん2014/09/25(木) 16:19:44.49ID:HhDeddVf
>>448
SetAnchorControl(hwnd_button, ancor_flag)

みたいな感じで、ancor_flagは面倒くさいからコピペするけど、意図はなんとなく感じ取ってw

AnchorNONE = 0x0000,
AnchorLEFT = 0x0001,
AnchorLR = 0x0003,
AnchorLT = 0x0005,
AnchorLB = 0x0009,
AnchorRIGHT = 0x0002,
AnchorRT = 0x0006,
AnchorRB = 0x000a,
AnchorTOP = 0x0004,
AnchorTB = 0x000c,
AnchorBOTTOM = 0x0008,
AnchorALL = 0x000f,

渡されたhwndの親をサブクラス化して、サブクラス化プロシージャでWM_SIZEを処理して、
親ウィンドウのサイズ変更に子ウィンドウを追随させてる。
追随だけど、かなり前に作ったので意図を覚えてないんだけど、MoveWindowではなく
BeginDeferWindowPosとかDeferWindowPosを使ってる。

あとは[親ウィンドウのサイズ情報]+[子ウィンドウごとに親ウィンドウからの各辺からの距離の情報]
などを最初に記憶してて、現在のサイズと比較して補正する感じ。

子ウィンドウ一つあたり40byteくらい食ってる。でも、消費メモリは気にしてないけどね。

汎用性を持たせるのにDLLにして、親ウィンドウが複数ある場合に対応とか辺りに余計な手間がかかった。

泥臭い作りかなと思いつつ、いざ完成して動かしてみたけど、気持ちよく動いてる感じ。
0450デフォルトの名無しさん2014/09/25(木) 16:38:55.94ID:/NVqQrO0
>>449
どうもありがとうございます。
0451デフォルトの名無しさん2014/09/25(木) 16:40:16.30ID:3pla4Uyi
GitHubとかに公開しチャイナよ
0452デフォルトの名無しさん2014/09/25(木) 16:43:00.67ID:L8Q1zq/6
そこまでしなくても右下の座標からTargetコントロールの高さ幅引いた所へじゃあかんの?
0453デフォルトの名無しさん2014/09/25(木) 17:24:52.00ID:HhDeddVf
>>452
元レスの「右下にくっつける」だけじゃなくて、例えばエディットコントロールは
ウィンドウサイズに応じて大きくする用途にも使えるようにした方がより汎用性が
あるなと思って。せっかくなので。

>>451
ぼくこわい。
0454デフォルトの名無しさん2014/09/25(木) 17:25:30.72ID:/NVqQrO0
文字列を表示するボタンを作ることにします。
ボタンの大きさは、表示する文字列の専有面積によって決まることにします。

このとき、文字列の面積を調べるためにGetDC()が必要になると思いますが、
GetDC()に時間がかかりすぎます。
200個程度のボタンを並べてウィンドウの大きさを変えてみると、引きずるような
感じがしてしまいます。
するすると動きません。

これはどうやって解決してますか?
0455デフォルトの名無しさん2014/09/25(木) 17:27:37.78ID:/NVqQrO0
>>453
とても興味が有ります。
0456デフォルトの名無しさん2014/09/25(木) 17:40:01.86ID:Q6LAeW7P
アンカーはMZC3 Resizable使えばいいだろ
0457デフォルトの名無しさん2014/09/25(木) 17:52:06.92ID:WI00iwLd
適当なフレームワーク使えばよい
0458デフォルトの名無しさん2014/09/26(金) 10:25:21.49ID:b46gtTR2
>>454
…各ボタンの文字列は、そんなに頻繁に、しかも沢山のボタンの文字列が変わるのかい?
文字列を設定した時に取得して、その後は取得した値を使えばいいじゃん
0459デフォルトの名無しさん2014/09/26(金) 10:45:57.41ID:BPZIlMAB
>>458
ボタンじゃない場合もあるので、例えば、表やワードプロセッサならどうでしょう。
たぶん、良く知られた解決法が有るんじゃないかと思うんです。

もう一つ知りたいことが有ります。
文字の描画に使えるAPIがいくつかあります。
1、GetCharacterPlacement + GDI
2、Uniscribe
3、DirectWrite
今使うならどれですか?
0460デフォルトの名無しさん2014/09/26(金) 11:13:20.33ID:BPZIlMAB
>>458さんの方法ともう一つ考えたのは、WM_SIZEで変更するウィンドウに
フラグを付けて、WM_PAINTで実際の計算をする方法です。

WM_SIZEとWM_PAINTは対になっていると考えて良いはずですが、何か問題が
出る場合は有りますか?
0461デフォルトの名無しさん2014/09/26(金) 12:18:54.02ID:8tItaSRz
縦横に多数並べるなら1枚のウインドウを区切って使うしかないじゃろ
一行の高さ固定、出来ればフォント固定を厳守すればそう難しくない

後はボタンを押されたあとの処理次第

>>454
GetDCを繰り返し呼ぶ必要ないんじゃない
情報取得だけなら同じDCを使い回せばいい
フォント種類がバラバラだとこの手は使えんけど

>>459
どれも見たことすらないw

>>460
PAINT処理中に状態を変えるのはダメ絶対
0462デフォルトの名無しさん2014/09/26(金) 13:23:51.69ID:BPZIlMAB
>>461
IDZですか。
どうもです。
0463デフォルトの名無しさん2014/09/26(金) 14:17:12.23ID:0Gy3leDz
そう言えば、EXCELやサードパーティ製スプレッドシートとか、実装はどうなってるの?
セル一つずつ子ウィンドウ貼ってるようには思えない(処理速度やメモリ効率的に)んだけど、
かといって自前で線引いて座標で随時判断して該当セルの処理を行ってるようにも感じない。
(見た目的にというか、面倒くさすぎじゃないかなと。もっと効率的な実装があるような気が。)

んでもまあ、リストビューを拡張したものと思えばそうなのかなとも思える。
0464デフォルトの名無しさん2014/09/26(金) 14:21:26.30ID:jD/A1f81
gridviewでエクセルもどきを実装してるひとはいた
0465デフォルトの名無しさん2014/09/26(金) 15:20:08.90ID:8tItaSRz
クリックした時その場所に子ウインドウが息を切らしながら走ってくるんだよ
0466デフォルトの名無しさん2014/09/26(金) 16:34:40.91ID:ey/k7esr
適切な比喩だなw
0467デフォルトの名無しさん2014/09/26(金) 17:44:52.14ID:PsWU6Rhq
忌み腐
0468デフォルトの名無しさん2014/09/26(金) 18:19:51.35ID:0Gy3leDz
>>465
やっぱりそれなのかなw
リストビューでサブアイテム編集させるのに、なんかダサいなと思いつつやってたわ。
0469デフォルトの名無しさん2014/09/27(土) 11:21:20.62ID:UJluCQak
本当にGetDCが遅いのなら、ReleaseDCをする前にGetDCしているはず。
(GetDCはストックオブジェクトで数個しか手持ちがないので、
限界を超えると内部でCreateされる-->遅い)

というより、MoveWindowかなんかで一つ変えるごとに描画しているからでは
0470デフォルトの名無しさん2014/09/27(土) 11:50:17.87ID:lv9b6q1l
>>469
よく見たらReleaseDCしてなかったわ。
0471デフォルトの名無しさん2014/09/27(土) 11:56:16.60ID:lv9b6q1l
GDIオブジェクトの開放忘れが有ると一万個くらいでおかしくなるのに、
GetDCしたまま解放してなくても普通に動くのはどういう仕組みなんだろう。
0472デフォルトの名無しさん2014/09/27(土) 11:58:39.42ID:Tol0KhbM
普通には動いてない
そう見えてるなら節穴
0473デフォルトの名無しさん2014/09/27(土) 12:34:38.95ID:M7lcZRBS
GetとCreateは違うべ
昔はリソース用のメモリが64kB固定というふざけたOSだった
0474デフォルトの名無しさん2014/09/27(土) 12:37:29.84ID:Tol0KhbM
まるで今はふざけていないかのような言い回しだZ
0475デフォルトの名無しさん2014/09/27(土) 13:24:15.70ID:lv9b6q1l
>>474
そういえば、WindowsのIPスタックにはバグが有って再送を繰り返すので、
今でも100年前のパケットがネット上をさまよっていると犬板で言ってたな。
0476デフォルトの名無しさん2014/09/27(土) 14:09:13.83ID:xuvXE3QY
自動リセットのイベントオブジェクトがあって、これがシグナル状態か否かを知るにはどうしたらいいでしょうか。
0477デフォルトの名無しさん2014/09/27(土) 14:29:51.98ID:y/Ez5wR8
タイムアウト時間0でWaitForSingle|MultipleObject呼んでその返り値をミルミル?
0478デフォルトの名無しさん2014/09/27(土) 16:57:42.15ID:Es6Y0cNh
>>475
どういうこった
その経路上の全ての機器を同時に終了しないと消えないとか?
0479デフォルトの名無しさん2014/09/27(土) 17:03:36.65ID:M7lcZRBS
100年前から極秘に運用されてたIPシステムw
0480デフォルトの名無しさん2014/09/27(土) 20:00:28.83ID:8kCpmyIX
時は大正2年、極秘に開発されたシステムの不具合が深刻なセキュリティリスクを引き起こし、
第3次桂内閣総辞職にまで発展したのであった。
0481デフォルトの名無しさん2014/09/27(土) 22:27:35.66ID:xuvXE3QY
>>477
それだと、シグナル状態がリセットされてしまうという副作用があるのでは…

別の質問なんですが、C++の例外を投げる関数をQueueUserAPCでキューに入れて、
SleepEx等でalertableな状態で待機しているスレッドでcatchする、ということはやってもいいのでしょうか。
試しにやってみましたが、一応catchできました。
0482デフォルトの名無しさん2014/09/28(日) 07:34:43.79ID:ri3k0THz
>>481
リセットされるけど、チェックしたスレッドからセットしなおせばいいんじゃない?
リセット無しでチェックできても、チェックの直前と直後に自動リセットされたケースの区別に意味があるかも微妙だし。
そもそもチェックしなきゃいけないなら同期方法を再検討すればいい気もする。

C++側としてはAPIを只のC関数として巻き戻すだけで問題無い筈だけど、
API側としてはAPC関数呼び出しの後の後始末が実行されないと不味いと思う。

MSDNによればWaitForSingleObjectEx等がAPC関数呼び出す時、
APIから「制御が返り」APC関数が実行されるらしいけど、これだけでは後始末が終わってる保障にはならない。
API側で後始末が必要で、なおかつ構造化例外を使っているのなら、
VC++でのC++例外処理は問題ない(構造化例外と混用可能)けど…
そもそも後始末が必要かや構造化例外を使っているかの記述がないからなんとも。

問題なく動く可能性は多分にあるけどすべての実装・環境で動く保障は多分ないからやめた方が良い。
0483デフォルトの名無しさん2014/09/29(月) 13:56:20.30ID:6caLpi9f
Win7 64上で実行した exe が WOW64で動いているかどうかをVS2013のC++で
判定したいのですが、ググッてIsWow64Process()と言う関数を使えば出来そうだったので
実際にやってみたら、どのプロセスもWOW64でないと判定されてしまうのですが、
どのあたりがおかしいでしょうか?
0484デフォルトの名無しさん2014/09/29(月) 14:00:52.16ID:PkV280SH
検証方法
0485デフォルトの名無しさん2014/09/29(月) 15:14:02.41ID:XZ5QuAyd
exeがx86なだけ?
0486デフォルトの名無しさん2014/09/29(月) 18:38:30.17ID:s6GohK/v
>>454の問題だけど、ちゃんと::ReleaseDC()呼び出せば一万個でもするするですわ。
>>469だった。
次は一億個のボタンに挑戦しようと思います。
0487デフォルトの名無しさん2014/09/29(月) 18:39:34.22ID:6caLpi9f
>>485
その通りでした。有難うございます。
0488デフォルトの名無しさん2014/09/29(月) 22:27:47.43ID:6caLpi9f
やっぱりうまく行かないんですよね。やりたいのは
Windows(XP以上、32or64)上で動いているプロセスIDに対して、それがWOW64かどうか判定
したいのですが、もう数時間ググっているのですが、正しいやりかたが
分りません。こういう手順でやれば良いみたいな、簡単なアドバイス
おねいがします。
0489デフォルトの名無しさん2014/09/29(月) 22:33:02.51ID:0K8mksjW
そもそもWOW64というのは何だと思ってる?
0490デフォルトの名無しさん2014/09/29(月) 22:40:54.91ID:BxhH7e2q
hProcessの説明に
> A handle to the process. The handle must have the PROCESS_QUERY_INFORMATION or PROCESS_QUERY_LIMITED_INFORMATION
> access right.
ってあるけど、これは大丈夫?自Processならいいけど、他ProcessだとOpenProcessでちゃんと指定する必要が。
あと戻値とGetLastErrorは忘れずに。
というか目的のことは、プラットフォームがx64かどうか、かつ、プロセスがx86かどうか、だけで判定できる希ガス
0491デフォルトの名無しさん2014/09/29(月) 22:45:03.91ID:9+ASy5MN
どういう目的で何をやってどういう結果を期待してどういう結果になったということを
ちゃんと書いてないから、頑張れとしか言いようがない。
0492デフォルトの名無しさん2014/09/29(月) 22:52:39.42ID:6caLpi9f
レスありがとうございます。
>>490
> hProcessの説明に
> > A handle to the process. The handle must have the PROCESS_QUERY_INFORMATION or PROCESS_QUERY_LIMITED_INFORMATION
> > access right.
> ってあるけど、これは大丈夫?自Processならいいけど、他ProcessだとOpenProcessでちゃんと指定する必要が。
> あと戻値とGetLastErrorは忘れずに。
> というか目的のことは、プラットフォームがx64かどうか、かつ、プロセスがx86かどうか、だけで判定できる希ガス

OpenProcessに関しては、

http://msdn.microsoft.com/en-us/library/windows/desktop/ms686701(v=vs.85).aspx
を参考にして、それで取得したハンドル hProcess に対して、IsWow64Process()で調べているのですが、
何かやり方おかしいですか?

>プロセスがx86かどうか、
それを調べる方法が分らないのです。困った。
0493デフォルトの名無しさん2014/09/29(月) 23:07:03.11ID:AG+JzUTr
タスクマネージャで *32 を見るだけじゃないのん
0494デフォルトの名無しさん2014/09/29(月) 23:12:17.98ID:elYv8UfB
プロセスがx86なら64bitOS上では常にTRUEじゃないの
0495デフォルトの名無しさん2014/09/29(月) 23:12:44.88ID:fRzUePeT
>>492
64bit OS上で動いている32bitプロセスの場合にTRUEを返すのだが、そこんとこ分かってる?

> 何かやり方おかしいですか?
まずはGetLastError()
0496デフォルトの名無しさん2014/09/29(月) 23:22:50.91ID:SDXa9UMK
>>488
むしろ今やっているダメなコードのほうを提示すれば、こうすれば良いと説明しやすいんじゃないか?
簡単なアドバイスでいいならググれとしか言えんし、
ググっても分からないってわけなんだから手順を説明しても同じじゃないだろうか。
0497デフォルトの名無しさん2014/09/29(月) 23:37:01.96ID:lN/BZL5J
>>488
WoW64は環境のことであってプロセスは関係ない。
判定関数はただ環境を返してるだけ。
0498デフォルトの名無しさん2014/09/30(火) 00:12:58.50ID:2TA7Mt7k
>>497
Wow64は環境だが、IsWow64Process()はそのプロセスがWow64上で動いているかどうかを返すので
プロセスは関係ある。64bitプロセスはWow64無しで動くのでFALSEが返る。
http://msdn.microsoft.com/ja-jp/library/windows/desktop/ms684139.aspx
0499デフォルトの名無しさん2014/09/30(火) 06:51:49.77ID:0urNGg00
x86かx64かはビルドする時に決まるだろ
0500デフォルトの名無しさん2014/09/30(火) 07:32:52.97ID:AOM1YMTX
もう面倒だからargvで指定したタイトル持つウィンドウをFindWindowで取得してIsWow64Processするプログラム書いてみろよ
http://codepad.org/
にうpしろ
何が悪いか見てやるよ
0501デフォルトの名無しさん2014/09/30(火) 09:02:14.35ID:onIPhOR3
64bitのコードになるようにコンパイルしてるのかな
0502デフォルトの名無しさん2014/09/30(火) 21:37:35.18ID:P24Lb/bI
>>481
イベントなら同じハンドル使った待機関数に一通り渡らないけ?
SetEvent()→全待機関数へ通知 自動リセットだと同時解放は1つずつ?

別の質問はわからん
(´・ω・`)PulseEventは使わなくていいから マジクソ
0503デフォルトの名無しさん2014/09/30(火) 22:41:22.07ID:o/bBwFDD
IsWoW64は単に定数を返してるだけのような気がするな。
0504デフォルトの名無しさん2014/09/30(火) 22:42:12.41ID:o/bBwFDD
32bit OSならWoW64を返さないのか。訂正。
0505デフォルトの名無しさん2014/09/30(火) 22:50:29.35ID:QntTjtgn
64bitOSで32bitアプリケーションが起動してるかどうかだからな
0506デフォルトの名無しさん2014/09/30(火) 23:04:56.77ID:2xIMsJb6
>>502
> 自動リセットだと同時解放は1つずつ?

そう、まさにそのために存在する
0507デフォルトの名無しさん2014/10/01(水) 02:25:45.15ID:lawoDQQz
windows.hの中にマルチバイト文字とワイド文字を変換するAPIってないんですか?
0508デフォルトの名無しさん2014/10/01(水) 02:28:47.26ID:r5LomURd
MultiByteToWideChar WideCharToMultiByte
0509デフォルトの名無しさん2014/10/01(水) 14:12:13.87ID:d08nCdaw
EUCだけIEのAPI使わないといけないけどな
0510デフォルトの名無しさん2014/10/01(水) 14:15:32.64ID:vFIUPSKe
他のプロセスにウィンドウメッセージを送信することは可能でしょうか?
0511デフォルトの名無しさん2014/10/01(水) 14:25:59.02ID:d08nCdaw
アドレス渡しじゃなければおk
アドレス渡しは制限ある
SETTEXT、GETTEXTはおkだけどその他はダメな場合多いから調べろ
0512デフォルトの名無しさん2014/10/01(水) 14:28:29.11ID:vFIUPSKe
ありがとうございます
0513デフォルトの名無しさん2014/10/01(水) 14:40:04.23ID:24yxgklO
Windows10来年発売決定!
0514デフォルトの名無しさん2014/10/01(水) 14:50:25.76ID:EESmyJNo
>>509
and じゃダメなの?
0515デフォルトの名無しさん2014/10/01(水) 15:02:29.06ID:3F5aC4ft
CodePage20932も使ってあげてください(´・ω・`)
0516デフォルトの名無しさん2014/10/01(水) 15:04:02.71ID:7LpuTxqg
>>509
なぜEUCだけはMultiByteToWideChar WideCharToMultiByte で
変換できないんですか?
0517デフォルトの名無しさん2014/10/01(水) 15:23:04.67ID:2NEK614A
これのどれかを指定すればいいちゃうのん

2.2.1 Supported Codepage in Windows
http://msdn.microsoft.com/ja-jp/library/ee719641.aspx
0518デフォルトの名無しさん2014/10/01(水) 15:25:35.27ID:2NEK614A
こっちか

Code Page Identifiers
http://msdn.microsoft.com/ja-jp/library/windows/desktop/dd317756%28v=vs.85%29.aspx
0519デフォルトの名無しさん2014/10/01(水) 16:34:39.99ID:n9ZGXeJV
よく知らんが Vista以降はディスクがデカいからムダに多国語サポートも出来るようになったってことかい
それでも標準インストールでははいらんのじゃないか
0520デフォルトの名無しさん2014/10/01(水) 16:37:38.90ID:YKNuKmx4
>>516
JIS に変換すれば良いだけだろ
0521デフォルトの名無しさん2014/10/01(水) 20:55:54.79ID:IQ6lHZVB
>>510
自プロセスより上の権限のプロセスには送れないから注意
0522デフォルトの名無しさん2014/10/02(木) 21:03:50.36ID:3PWk+706
OSのmajor, minor番号を調べたいのですが、GetVersionEx()を使うと、
error C4996: 'GetVersionExW': が古い形式として宣言されました。
とうエラーが出ます。エラーしない方法を教えてけろ。
0523デフォルトの名無しさん2014/10/02(木) 21:44:28.77ID:5r30Ub27
>>522
http://msdn.microsoft.com/ja-jp/library/ttcz0bys.aspx

http://msdn.microsoft.com/ja-jp/library/cc429963.aspx
0524デフォルトの名無しさん2014/10/04(土) 18:46:34.41ID:pZ3GM5kn
GetKeyboardState関数をメインスレッド以外のスレッドで実行すると
入力キーを取得できないのですがそういう仕様なのでしょうか?
0525デフォルトの名無しさん2014/10/04(土) 19:13:45.55ID:pZ3GM5kn
英語版msdnにAttachThreadInputを使え的なことが書いてあったので
それを実行したら取得できるようになりました。
0526デフォルトの名無しさん2014/10/04(土) 21:13:32.95ID:TY/2CBKE
別スレに何日か前に書き込んだんだけど、レスつかなかったので、教えください。
connected standby(Instant Go)でスリープになった時に
特定の処理を実行したいのだけど
Win32.PowerModes.StatusChangeだと捕まえられませんでした。

変わりにディスプレイが消灯した時のイベントを捕まえたいのですが
どなたか教えてください。
0527デフォルトの名無しさん2014/10/05(日) 02:05:14.78ID:AgD8ZRrC
>>516 MS漢字とMS-UNICODEの変換だから
0528デフォルトの名無しさん2014/10/05(日) 02:16:12.84ID:OsaIba9z
>>526
Win32の話でいいならサスペンド捕まえるには
PBT_APMQUERYSUSPEND、PBT_APMSUSPENDでぐぐれ
0529デフォルトの名無しさん2014/10/05(日) 02:19:34.81ID:OsaIba9z
ごめ、SUSPENDとスリープ違うか
0530デフォルトの名無しさん2014/10/05(日) 02:43:23.67ID:vnu4Brtg
>>516
http://ap.atmarkit.co.jp/bbs/core/fdotnet/30013
0531デフォルトの名無しさん2014/10/05(日) 02:47:25.93ID:vnu4Brtg
>>516
http://msyk.at.webry.info/200511/article_2.html
0532デフォルトの名無しさん2014/10/05(日) 02:52:46.27ID:vnu4Brtg
>>516
http://ja.wikipedia.org/wiki/EUC-JP
0533デフォルトの名無しさん2014/10/05(日) 03:35:49.08ID:vX4qgpsa
>>516
https://www.youtube.com/watch?v=OtXAevjqDM0
0534デフォルトの名無しさん2014/10/05(日) 09:13:44.66ID:E1Bc11fm
>>524
仕様だけど、メインスレッドかどうかではない。
GetKeyboardStateで得られるキー状態は処理したウィンドウメッセージに応じて更新される。
そのスレッドに属するウィンドウがキーボードフォーカスを持っているかとかの問題。
>>525
一気に取れないのは面倒だけど、別プロセスまで考えるとGetAsyncKeyStateのが楽だよ。
0535デフォルトの名無しさん2014/10/05(日) 21:29:03.60ID:NJHDuaag
VS2013のC++で作ったアプリで
MessageBox()で長い文字列を表示すると
XPでは右端での折り返しをせずに一行で表示されるけれど、
Win7では、勝手に適当な場所で折り返されます。従ってMessageBoxウインドウの
幅もXPよりも狭くなります。
これを避ける方法ありますか?ググッたのですが、解決しませんでした。
1行で表示したいのです。
0536デフォルトの名無しさん2014/10/05(日) 23:21:07.39ID:QKop1MLt
Vista以降ならMessageBoxのかわりにTaskDialogを使う。
一行で表示したければTaskDialogIndirectで十分な幅を設定する。
0537デフォルトの名無しさん2014/10/06(月) 00:49:17.81ID:rjk74cqm
レスありがとうございます。
TaskDialogは初耳です。ググったら、
C:\Program Files\Microsoft SDKs\Windows\v7.1\Samples\winui\shell\appplatform\taskdialogs
にサンプルが有ったのでビルドして実行してみましたが、ProgressBarを表示するサンプルのようのですが、
最初のダイアログは開くのですが、Launch TaskDialogボタンを押しても
何も出ません。原因と対策が分る人いましたら、教えてください。
0538デフォルトの名無しさん2014/10/06(月) 15:26:49.40ID:ABN9GXK1
http://kzho.net/jlab-giga/s/1412562821686.jpg
http://kzho.net/jlab-giga/s/1412562839210.jpg

ぐちゃぐちゃだ
やり直せ
0539デフォルトの名無しさん2014/10/06(月) 21:51:59.49ID:5SQO2Mek
HANDLE_MSGマクロって全てのウィンドウメッセージに対応しとるんか?
0540デフォルトの名無しさん2014/10/07(火) 23:12:17.71ID:G0Zenyqi
WindowプログラムでWndProcの中にいろいろな処理を書くと、
関数がアホみたいに長くなるんですが、そういうもんですか?
その時にswitch caseが2重、3重の入れ子になって訳分りません。
何かお勧めのテクニックありますか?
0541デフォルトの名無しさん2014/10/07(火) 23:16:23.72ID:OuIvePB0
関数に分離して呼び出せよ
0542デフォルトの名無しさん2014/10/07(火) 23:39:51.09ID:G0Zenyqi
WndProcの追加で質問なんですが、
Windowプログラムってこんな感じじゃないですか。

LRESULT CALLBACK WndProc(...) { //コールバックがあって
 // do something

return DefWindowProc(...);
}

int WINAPI WinMain(...) { //それを呼び出すメイン

 hwnd = CreateWindow(...);

 while (TRUE) {
  GetMessage(&msg , NULL , 0 , 0);
  DispatchMessage(&msg);
 }
 
return 0;
}

これ全体をクラス化したいのですが、単純に
class MyWindow{


}
みたいに囲ってもうまく行かなかったのですが、クラス化することは可能ですか?
ググってもそういうページが見つからないので、クラス化するなんていうことはしないのかな?
0543デフォルトの名無しさん2014/10/07(火) 23:45:26.80ID:OuIvePB0
>>542
そんなの公式でやりかた紹介してんだろ
↓
http://msdn.microsoft.com/ja-jp/library/windows/desktop/ff381400(v=vs.85).aspx
0544デフォルトの名無しさん2014/10/07(火) 23:45:29.86ID:50J1bzMn
>>540

APIを使うような低水準で作るからそういう意味では書きにくい。
これはLinuxとか別のOSでもそう。
これを嫌うなら、フレームワークとかGUIウィジェットを吟味しろという方向になる。
WIN32でやるのは性能とか機能とか別の観点を重視する場合。
0545デフォルトの名無しさん2014/10/07(火) 23:48:30.53ID:50J1bzMn
>>542

SetWindowLongにthisを渡せばできるけれど
それをやるならMFCとかつかいませう
0546デフォルトの名無しさん2014/10/07(火) 23:55:19.78ID:G0Zenyqi
>>543
おお、こんな情報がああったとは。
さっそくコピペしてビルドしたら動いたわ。凄いな。
三日間ググってもやり方が分らなかったのに、もっと速く君に聞けばよかったよ。
どうもありがとう。これからもよろしくな。
0547片山博文MZ次期CEO ◆T6xkBnTXz7B0 2014/10/08(水) 11:41:29.53ID:Q8WQqH2D
C:\Program Files (x86)\XWord\
以下のファイルがインストール時に更新されないのは何故?
0548デフォルトの名無しさん2014/10/08(水) 11:54:08.04ID:Q8WQqH2D
自己解決しました
0549デフォルトの名無しさん2014/10/08(水) 11:55:09.64ID:9ezyJyuZ
答えは知ってるけどあぼーんだしスレチです。
0550片山博文MZ次期CEO ◆T6xkBnTXz7B0 2014/10/08(水) 12:24:14.27ID:9EnqerIp
アンパンマン、新しい顔ができたよ!!!

MZC3_ScrollView
https://github.com/katahiromz/MZC3_ScrollView
0551片山博文MZ次期CEO ◆T6xkBnTXz7B0 2014/10/08(水) 13:50:00.60ID:9EnqerIp
このScrollViewがスクロールのときにちらつくの、何とかならないかなあ
0552デフォルトの名無しさん2014/10/08(水) 17:28:42.38ID:kNOoN+no
>>550
どうやって使うのでしょうか?
VSのprojcetファイルが無いのでビルド出来ませんでした。
0553デフォルトの名無しさん2014/10/08(水) 17:50:36.26ID:DlqJxW4C
WM_ERASEBKGNDを処理してないから、とか?
0554片山博文MZ次期CEO ◆T6xkBnTXz7B0 2014/10/08(水) 18:07:29.06ID:Q8WQqH2D
UNITTESTの所に使い方書いてあるよ
0555デフォルトの名無しさん2014/10/08(水) 18:59:03.56ID:kNOoN+no
>>554
main()
WinMain()
のどっちを使っても、ウインドウらしきものは出ませんでした。
何かウインドウが出てスクソロールするんですか?
0556片山博文MZ次期CEO ◆T6xkBnTXz7B0 2014/10/08(水) 19:24:28.96ID:Q8WQqH2D
えっ、終了コードは何になってるの?
0557デフォルトの名無しさん2014/10/08(水) 20:07:59.12ID:kNOoN+no
WinMainでは、
xg_hMainWnd = ::CreateWindow(...)
のところで

Debug Assertion Failed!
...
...
vector subsvript out of range
...

みたいなエラーしました。
main()のほうは、正常終了しましたが、Consoleウインドウに文字が出る
だけでした。
0558片山博文MZ次期CEO ◆T6xkBnTXz7B0 2014/10/08(水) 20:15:39.43ID:Q8WQqH2D
わかった。WM_CREATEでの初期化の前にWM_SIZEが来る問題だね。
修正すれば使えるはず。
0559デフォルトの名無しさん2014/10/08(水) 20:46:48.54ID:3Gg8s7gO
スレチ
0560デフォルトの名無しさん2014/10/08(水) 20:55:08.61ID:Q8WQqH2D
Win32の話だからスレチはないだろふ
0561デフォルトの名無しさん2014/10/08(水) 21:43:39.34ID:Tp4lJEmG
たしかにWin32の会話w
別にいいんじゃね
0562デフォルトの名無しさん2014/10/08(水) 22:20:05.79ID:9ezyJyuZ
じゃなくて、質問が何なのか明確にしてそれに絞った会話にしてくれ。
デバッグやらライブラリの話は専用スレでも建ててくれ。
0563デフォルトの名無しさん2014/10/08(水) 23:29:32.88ID:kNOoN+no
Dialogで質問なのですが、VC++で作った簡単なdialog.exeがあるとして、それは
--- dialog.cpp-----------
INT_PTR DialogBox(...){
 switch (Message){
  ...
 }
}

main(){
 DialogBoxW( , , , DlgProc);
}
--------------------------
こんな感じですよね。
このexeをstatic libにして、別の MyProg.exe からリンクしてダイアログを表示しようとしたのですが、
出来ませんでした。技術的に可能でしょうか?どうやれば出来ますか?
0564デフォルトの名無しさん2014/10/09(木) 00:26:34.66ID:1S+nhjfY
俺はエスパーじゃないから、想像はつくけど、何がどう出来なかったのかわからない。なぜ、そういうことをしたいのかもわからない。
0565デフォルトの名無しさん2014/10/09(木) 00:26:59.48ID:pU+kjdY6
俺はエスパーじゃないから、想像はつくけど、何がどう出来なかったのかわからない。なぜ、そういうことをしたいのかもわからない。
0566デフォルトの名無しさん2014/10/09(木) 00:54:15.13ID:gIegxvuM
>>563
しようとしたコードは?
0567デフォルトの名無しさん2014/10/09(木) 00:55:43.35ID:nEECJbM2
>>563
MyProg.exeから、そのdialog.cppのmain関数を呼んだの?
そのmain関数の名前を変えるのじゃ駄目?
0568デフォルトの名無しさん2014/10/09(木) 05:51:35.22ID:V215NwAs
リソースがねぇ
0569デフォルトの名無しさん2014/10/09(木) 10:18:37.94ID:IFg54I5e
単体でできるなら静的libでも出来る
0570デフォルトの名無しさん2014/10/09(木) 10:58:40.56ID:Y1xH87fy
そもそもなんでlibにする必要があるのか。
前にもlibの質問上げてた奴と同一人物か?
0571デフォルトの名無しさん2014/10/09(木) 17:00:41.75ID:yy/JtvUA
lib作成の練習だろ
0572デフォルトの名無しさん2014/10/09(木) 19:32:44.10ID:gIegxvuM
必要があるかどうかは論点がずれてる
0573デフォルトの名無しさん2014/10/09(木) 19:40:05.79ID:F7kHyJ16
>>563
仕組みを分かってないようだから
1から勉強しなおせ
0574デフォルトの名無しさん2014/10/09(木) 19:52:43.66ID:JH57SQbW
LoadLibraryExなら大概のCOFFを読めるが
そんな話では無くて?
0575デフォルトの名無しさん2014/10/09(木) 20:46:55.49ID:REBK3ABe
>>568
そうなんです、そのリソースをどう扱っていいか分りません。
0576デフォルトの名無しさん2014/10/09(木) 21:24:29.55ID:iqV97gZL
LoadResourceの引数にhinstance渡せばok
0577デフォルトの名無しさん2014/10/10(金) 08:35:52.43ID:ca+RRSkR
163 名前:名無し~3.EXE 投稿日:2014/10/09(木) 19:05:53.06 ID:FNGRtBQv
2016年からのIEや.netのバージョンを限定したサポートの計画でマイクロソフトは過去の資産を切り捨てるようだ

165 名前:名無し~3.EXE 投稿日:2014/10/09(木) 20:12:18.75 ID:woPDelvC
>>163
企業からMSが切り捨てられるX-dayになりそうだな
XPを引っ張りすぎたツケが全部Win8の失敗に繋がってる
モバイルでの惨敗がとどめを刺したな
0578デフォルトの名無しさん2014/10/10(金) 13:23:49.18ID:T0LFFi4l
自分で自分を切り捨てるのか
MSらしいな
0579デフォルトの名無しさん2014/10/10(金) 18:15:20.38ID:Xd6YjWLK
そうか win32api ともおさらばか、そろそろ次の準備をしよう‥で、何?
0580デフォルトの名無しさん2014/10/10(金) 20:11:39.63ID:Q8YNOqMG
一日たつのに 576を放置しているのか
0581デフォルトの名無しさん2014/10/11(土) 05:32:50.85ID:xQ/gd4rr
ちっ、うっせーな


反省してまーす
0582デフォルトの名無しさん2014/10/11(土) 19:28:26.52ID:sqsfupnM
ツリービューコントロールで、アイテムを選択した状態でEnterキーの押下をプロシージャで処理したいのです。

http://www.nitoyon.com/vc/reference/gui/treeview.htm
このページの一番下に書かれているWM_NOTIFYで各種メッセージを受け取る方法で、
NM_DBLCLKであれば、受け取ることができました。

http://msdn.microsoft.com/ja-jp/library/749htf6k.aspx
しかし、このページに書かれているNM_RETURNメッセージは受け取ることができませんでした。

http://eternalwindows.jp/control/listview/listview07.html
このページに書かれているように、LVN_KEYDOWNメッセージを待ちましたが、受け取れませんでした。

どのようにすればツリービューコントロールでEnterキーの押下を受け取れるでしょうか?
よろしくお願いします。
0583デフォルトの名無しさん2014/10/11(土) 19:48:10.52ID:B3zf0mlt
ダイアログに吸われてるんだろう
PretranslateMessageとか使ってみれば
0584デフォルトの名無しさん2014/10/11(土) 19:58:12.33ID:Huyc+i2I
LVNはListViewやで TVN_KEYDOWNでは?
05855822014/10/11(土) 20:05:53.67ID:sqsfupnM
>>583
>>584
ありがとうございます。
>>584様のご指摘通り、LVNではなく、TVNにすべきでした。
おかげさまで、TVN_KEYDOWNメッセージを受信でき、
LPARAMをNMTVKEYDOWN*にキャストしてwVKeyメンバから、
押下された仮想キーコードを取得するところまでいけたのですが、なぜかEnterキーは来ません(汗)
他のスペースキーとかは来るのですが・・・。
まるで嫌がらせのような挙動ですw
>>583様のおっしゃるように、ダイアログに吸われてるんでしょうか?
0586デフォルトの名無しさん2014/10/11(土) 20:30:13.77ID:9/lqDyPo
>>585
サブクラスじゃあかんの
0587デフォルトの名無しさん2014/10/11(土) 21:44:09.62ID:L2humm3m
treeviewのWM_GETDLGCODEがVK_RETURNを拒否している
05885822014/10/11(土) 22:48:36.03ID:sqsfupnM
>>586-587
以前、ダイアログボックスで同じ問題に遭遇し、サブクラスにてWM_GETDLGCODEを受信して解決していました。
コントロールの種類が異なるだけど、それと同じ問題だったということですね。
失礼しました。

どうもありがとうございました。
0589デフォルトの名無しさん2014/10/12(日) 15:31:51.09ID:Go9nxJDi
VB使いなのですが
このスレの方が詳しいと思い質問させてください

やりたいことはノートPCのバッテリへ
SMBUSで読み書き命令を送信したい

ググっても「無理」という回答が多いのですが
中にはエンベッドコントローラを直接制御することに
成功している人もいるようです。

http://www.init-main.com/acpirensai/acpi7.txt

.netでもwin32APIで出来るのであれば
その方法をご教示いただけないでしょうか?
0590デフォルトの名無しさん2014/10/12(日) 17:44:51.77ID:vP4KqGkP
ドライバを作らないと無理じゃないか
vbしかわからない人間ができることじゃないだろう
0591デフォルトの名無しさん2014/10/12(日) 19:17:32.31ID:Go9nxJDi
んーそうなのかぁ

EC(エンベデッドコントローラ)がsmbusマスタなので
こいつに命令を下さないといけないのだけど
なんとかその実現方法を知りたい

linuxだとここらへんが割りとむき出しのようなのだけど
なんとかwindowsでやりたい

でも無理そうですね矢張り
0592デフォルトの名無しさん2014/10/12(日) 20:24:41.09ID:Z8ok/lvr
そう。馬鹿には。ね。
0593デフォルトの名無しさん2014/10/12(日) 21:08:41.24ID:IX57hp7+
mallocとGlobalAllocとHeapAllocとVirtualAllocの使い分けの仕方ってあるの?
0594デフォルトの名無しさん2014/10/12(日) 21:11:33.81ID:cQfWbLkU
通常のアプリケーションからはmallocを使えばよい。
API直接使うと処理が遅くなる。
mallocのようなメモリー管理ライブラリを作るときに
WIN32APIのほうを使う。
0595デフォルトの名無しさん2014/10/12(日) 21:25:22.01ID:IX57hp7+
わかった、malloc使うよ、ありがと
0596デフォルトの名無しさん2014/10/12(日) 21:32:13.22ID:dA3B6w3o
メモリ確保失敗したとき
try catchしてないと落ちるか落ちないか
0597デフォルトの名無しさん2014/10/12(日) 21:32:38.85ID:diHNUhL/
わざわざ、こんな>>593 ことを聞かないとわからない奴のためにmallocがある
0598デフォルトの名無しさん2014/10/12(日) 21:56:39.20ID:IAVtFIVv
>>594
VCのmallocは単にHeapAlloc呼んでるだけだぞ
0599デフォルトの名無しさん2014/10/12(日) 23:15:34.12ID:LjQH95WZ
クリップボードとかアプリ間で受け渡しするようなときは malloc ではダメ
GlobalAlloc は大昔(Win32より前)のAPI
また部分的にしか使わないような巨大なメモリブロックを使う場合は VirtualAlloc
0600デフォルトの名無しさん2014/10/12(日) 23:26:26.40ID:E4udznlP
独自にヒープ管理していたのはVC6までだっけ。たしか。
GlobalAllocはCreateStreamOnHGlobalで偶に使っていた記憶が。
今はSHCreateMemStreamがあるからお役御免だけど。
0601デフォルトの名無しさん2014/10/13(月) 00:31:18.77ID:cn1E5tDb
勉強になるわ・・・
0602デフォルトの名無しさん2014/10/13(月) 06:00:32.38ID:VoMmfcCG
たぶんGlobalAllocの実装とか大したことしてないと思うな
GlobalLock/GlobalUnlockも慣習的にやってるだけで実は必要ないだろうし
0603デフォルトの名無しさん2014/10/13(月) 10:08:32.22ID:eF/9rJ3u
>>592

海外サイトだと何らかのyes,noがあるのに
何故日本だと「バカにはわからねーよ」という煽りが
返ってくることが多いんだろな

ガッカリすると同時に人間性を疑う
どういう育ち方したんだ
0604デフォルトの名無しさん2014/10/13(月) 10:11:58.62ID:PPv6Llzm
たしかにGlobalLock/GlobalUnlockは16bit の遺産だと思う、そもそも GlobalAloo() 自体クリップボード関連でしか使わなかった覚えが
0605デフォルトの名無しさん2014/10/13(月) 10:44:41.08ID:7i+sJhXA
>>604
メモリーコンパクションをソフトウェアでやってた時代の名残でしょ
ハードウェアでページングできるなら不要
0606デフォルトの名無しさん2014/10/13(月) 22:12:30.05ID:mop7VaGl
> 何故日本だと

ここは 2chです
0607デフォルトの名無しさん2014/10/13(月) 22:55:17.64ID:EdTfqrH2
JITみたくネイティブコードをダイナミックに生成するための領域確保のためには
VirtualAlloc(Ex)で属性指定するしかないの?
mallocを使いたいんだが
0608デフォルトの名無しさん2014/10/13(月) 23:20:11.78ID:ko/k9KZm
好きなようにしていいよ
実行できなくていいのなら

そんなこと聞いてどうなることでも無いと思うがな
無駄な質問したくなる心理ってどこからくるんだろうね
興味ある
0609デフォルトの名無しさん2014/10/13(月) 23:23:46.77ID:dqffiAoT
stdlib.hを読み込まずに自分でmallocをVirtualAllocで実装すればいいんじゃね
0610デフォルトの名無しさん2014/10/14(火) 02:06:00.48ID:oEpXVlfD
属性指定したいときにVirtualAlloc使えよ
malloc使いたいってのがおかしい
ページごとに指定すんのにページメモリ細切れにするmallocでできるわけないだろ
0611デフォルトの名無しさん2014/10/14(火) 03:07:33.42ID:A0D4+krR
ページファイルの使われてない領域を解放ってどうやるん?
しばらく使ってからOS起動直後と同じ状態に戻して(起動したプロセスを終了して)も
OS起動直後よりもページファイル使用量が多い
0612デフォルトの名無しさん2014/10/14(火) 05:53:11.46ID:BVjyeKaO
なんで使われてないと思うの?
0613デフォルトの名無しさん2014/10/14(火) 07:17:16.67ID:lV7cR9FO
100GB搭載したマシンで90GB使ってたプロセスを終了したから
0614デフォルトの名無しさん2014/10/14(火) 07:46:47.92ID:oEpXVlfD
OSのページファイルは自動設定だと足りなくなったら増やす
でも一旦増えたら減らない

ヒープのページの話してるとこにいきなり説明なくOSのページファイルのことすんな
混乱させるだけ
0615デフォルトの名無しさん2014/10/14(火) 08:38:53.76ID:zT0VwE4n
>>605
コンパクション…?GlobalLock・LocalLockは単にメモリ管理モデルが違うから廃止されたってだけじゃないの?
メモリ空間のやり繰りって意味では、ページファイルをCreateFileMappingしてMapViewOfFileって形で残ってるし。

>>607
mallocが内部的にVirtualAllocしてる場合は、後からVirtualProtectでアクセス保護を変更できる。
でも、素直にVirtualAllocやそれをラップした関数使うか、いっそすっぱりDEPを切ってしまうのが良いと思う。

細切れ領域に対して後から実行属性付けて無関係なメモリも実行可能にするのはDEP的に悪いし、
malloc差し替えて細切れ領域を全部別ページにするのも効率悪いし、
全領域に実行属性付けるのはもっとDEP的に悪いし、mallocの引数増やすとかVirtualAlloc使うのと大差ないし
0616デフォルトの名無しさん2014/10/14(火) 09:03:57.26ID:A0D4+krR
>>612
故意にメモリ確保しまくって解放したらページファイル使用中が減るから

>>614
仮想メモリ設定なら固定値にしてある
0617デフォルトの名無しさん2014/10/14(火) 12:46:14.82ID:e6dLngVH
>>615
> メモリ空間のやり繰りって意味では、ページファイルをCreateFileMappingしてMapViewOfFileって形で残ってるし。

何を勘違いしたらそんな結論になるのかさっぱりわからんが、GlobalAlloc とかはメモリー空間のやりくりじゃなくて、実際のメモリー領域のやりくりの話。
0618デフォルトの名無しさん2014/10/14(火) 13:07:22.51ID:zT0VwE4n
GlobalLock・LocalLock廃止というかグローバルヒープ自体の仕様変更か。

>>617
AllocじゃなくてLockね。
0619デフォルトの名無しさん2014/10/14(火) 13:13:55.47ID:BVjyeKaO
だから廃止って何の話だよ
0620デフォルトの名無しさん2014/10/14(火) 13:22:07.58ID:zT0VwE4n
>>619
グローバルヒープとローカルヒープの区別
0621デフォルトの名無しさん2014/10/14(火) 14:03:21.87ID:e6dLngVH
>>618
> AllocじゃなくてLockね。

Global 一族の意味で Alloc って書いてある
0622デフォルトの名無しさん2014/10/14(火) 16:05:22.00ID:zT0VwE4n
>>621
Global一族じゃなくてLockの話ネ
GMEM_FIXEDだと元々ハンドルにキャストされたポインタでLockも再配置も無いし
0623デフォルトの名無しさん2014/10/14(火) 16:46:27.20ID:jHDVd/Tp
>>622
> Global一族じゃなくてLockの話ネ

意味わからん
俺が Global 一族の意味で書いてるっつーてるのに、なんでお前が違うとか言うんだ?
コンパクションは GlobalLock だけで実現してるわけじゃないんだから、あえて GlobalAlloc とかと書いてるんだよ
0624デフォルトの名無しさん2014/10/14(火) 17:03:06.98ID:h5YZupCV
細かいこと気にすんな。だからお前らは禿げてるんだよ。
0625デフォルトの名無しさん2014/10/14(火) 17:39:01.65ID:BVjyeKaO
そうだったのか…!!

 彡 ⌒ ミ
 (´・ω・`) ガタッ
  /   ヾ
__L| / ̄ ̄ ̄/_
  \/   /
0626デフォルトの名無しさん2014/10/14(火) 19:17:14.46ID:2XopWL7F
ワロタw
0627デフォルトの名無しさん2014/10/14(火) 19:33:06.39ID:Xm+aC3qM
 彡 ⌒ ミ ワロエナイ
0628デフォルトの名無しさん2014/10/15(水) 21:17:16.96ID:85BS4tFF
ツリービューでTreeView_DeleteAllItemsすると
全アイテム分のTVN_DELETEITEMが発生してイヤな感じです
発生させない方法とかあったら俺様に教えてください

PeekMessageで削除すればいいと思ったんですが、
WM_NOTIFY(TVN_DELETEITEM)で来るから単純にREMOVEできないのです
0629デフォルトの名無しさん2014/10/15(水) 22:15:12.60ID:8kF5M8Gq
更新中フラグ変数使え
06306282014/10/16(木) 21:33:36.64ID:pKn/CQev
>>629
更新中フラグ変数ってなんすか
TreeView周りにそんなフラグありましたっけ?
0631デフォルトの名無しさん2014/10/17(金) 02:28:05.56ID:AZJ5K6SV
自分で管理するフラグだろ
でもなんでTVN_DELETEITEM破棄しようと思ってんのか理解できん
TVN_DELETEITEM破棄したらアイテム削除されんだろ
大量アイテム更新で画面作画を抑制してきびきびさせたいときはWM_SETREDRAWで抑制する
06326282014/10/18(土) 07:03:29.69ID:G1bJtmav
>>629
WM_SETREDRAWは知らんかった助かる

TVN_DELETEITEMはMSDNに戻り値は無視されますとあるので、
アイテム削除後のただの事後報告だと理解しているが・・・
アイテムにユーザデータ突っ込んでたら、ここで解放してねってくらいで
データ突っ込んでない人にとっては無駄な通知メッセージかと思ったんだが
そうでもないのか?

まあ別に1000個くらい通知きても無視すればいいだけなんだが、
止められるなら止めたいなと
無駄にメッセージループを回したくないだけです
06336282014/10/18(土) 07:04:51.01ID:G1bJtmav
まちがえた >>631
0634片山博文MZ次期CEO ◆T6xkBnTXz7B0 2014/10/18(土) 16:23:26.17ID:OmEui7i2
アンパンマン、新しい顔ができたよ!!!

Windows virtual key checker
https://github.com/katahiromz/vkeycheck
0635デフォルトの名無しさん2014/10/19(日) 02:59:53.50ID:cw5JQu3z
>>632
戻り値は無視されてるってのはそのメッセージ捨てていいってことではなく戻り値を検証せずvoid関数的な呼びだしするってことだボケ
0636デフォルトの名無しさん2014/10/19(日) 09:09:31.15ID:F3gIUORa
>>628
> PeekMessageで削除すればいいと思ったんですが
この段階でスルーだな
06376282014/10/19(日) 13:33:34.23ID:WewmnEhV
>>636
あ、そもそもWM_NOTIFYってキューに入らないのか
直接プロシージャに来るならどうしようもないか
俺様があほでした、すいません
0638デフォルトの名無しさん2014/10/19(日) 15:25:39.09ID:jeBYTyxS
SendMessageで来るメッセージはサブクラス化すればトラップできるよ。
0639デフォルトの名無しさん2014/10/19(日) 15:46:50.90ID:n9kPv86G
どうせ捨てるんだからトラップする意味が無い
0640デフォルトの名無しさん2014/10/19(日) 16:19:14.84ID:qyP9kRyl
デフォルトに渡さず殺せるだろ?
0641デフォルトの名無しさん2014/10/19(日) 19:48:17.56ID:U9zncy/O
角を矯めて牛を殺す
0642デフォルトの名無しさん2014/10/19(日) 19:50:27.90ID:gAtBbPfl
すべてのプロセスから制御を奪い取る
0643デフォルトの名無しさん2014/10/19(日) 20:03:35.59ID:jeBYTyxS
>>639
Sendされたメッセージは値を返さないといけないので
Postされたメッセージのように捨てることはできない。

捨てる代わりに正規のプロシージャに渡さずに
適当な値を返す必要がある。
0644デフォルトの名無しさん2014/10/19(日) 21:28:40.69ID:PsSi0GjT
C#だと
RegistryKey.SetValue Method (String, Object)
でObjectが何でもうまい具合にレジストリに書き込んでくれますが、
C++だと、
RegSetValueEx()使う時にDWORD dwTypeでタイプを指定しなくてはならないようですが、
C#みたいに楽ちんな方法は無いでしょうか?
0645デフォルトの名無しさん2014/10/20(月) 01:41:44.21ID:xJfPCmzS
そういうラッパー吹けばいい
0646デフォルトの名無しさん2014/10/20(月) 01:42:42.51ID:jjiQL4kf
>>644
RegSetValueExはC++というかC。
MFCのレジストリ操作メソッドはクソ残念なので適当なC++用フレームワークを探すなり、
自分でRegSetValueExを呼び出すオーバーロード関数を作るなりしとけばよいかと。
設定ファイルとしてのその辺やるライブラリは色々あるんじゃね?
0647片山博文MZ次期CEO ◆T6xkBnTXz7B0 2014/10/20(月) 13:01:26.88ID:LSPN1VmB
>>644
アンパンマン、新しい顔でバイキンマンと戦ってね。
https://github.com/katahiromz/MZC3_RegKey
0648デフォルトの名無しさん2014/10/20(月) 16:15:30.31ID:YIaZ+UJI
>>647
情報ありがとうございました。大変参考になります。
早速試してみましたら、動いたのですが、
C++初心者の私には、
SetMultiSzとQueryMultiSzの引数の与え方が分りませんでした。
0649デフォルトの名無しさん2014/10/21(火) 01:02:39.85ID:c8NUu7RB
>>648
そのコテハンの言動見てからそのライブラリ使っても良さそうか考えよう。
0650デフォルトの名無しさん2014/10/21(火) 01:06:13.48ID:dWXgLBxs
C#のRegistryKeyの再現ってそんなに難しいのか?
0651片山博文MZ次期CEO ◆T6xkBnTXz7B0 2014/10/21(火) 12:07:53.91ID:dcMhJCne
>>648
MZC3_RegKey更新しました。
0652デフォルトの名無しさん2014/10/22(水) 08:49:33.19ID:zFSkun4G
期待してるよMicrosoft!Windows 10の知られざる便利な新機能8選
http://www.lifehacker.jp/2014/10/14101coolest_windows_10.html
0653デフォルトの名無しさん2014/10/22(水) 08:56:33.49ID:4UXHaNsm
いかにここがゴミ箱でもマルチポストはよくない
0654デフォルトの名無しさん2014/10/22(水) 10:29:10.39ID:zFSkun4G
2ちゃんもどうせ仕様変更するくらいならクロスポストに対応すれば良かったのに
0655デフォルトの名無しさん2014/10/22(水) 12:42:08.37ID:G2nqW3Ft
2ちゃんの問題じゃない、お前等の奴隷根性の問題
不満があるなら自分から変えろ、それができないのなら甘んじて奴隷を続けろ
0656デフォルトの名無しさん2014/10/22(水) 16:53:02.56ID:ARgoe7Ar
CでDLLを作ってそのDLLの中で音声を録音する関数を作り
C#側からメインスレッドとは別のスレッドの中で呼び出そうとしているのですが、
手順はちゃんと踏んでいるのですが、waveInPrepareHeaderの時点でMMSYSERR_HANDLEBUSY(別のスレッドがハンドルを使用中である)が返されます
何が原因なのか思い当りません

音声に関する処理は全てDLLの中で行っていてC#側には干渉してません
DLLの中には大きく分けてwaveInProcコールバック関数ともう一つ関数(以下Aと呼びます)があり、C#側からAを呼びます

Aの中でwaveInOpenを呼び、waveInPrepareHeaderはWIM_OPENが来た時にコールバックの中で呼ぶようにしてあります
waveInOpenはエラーが返ってないので成功していると思います
デバイスハンドルはDLL内でグローバル変数として宣言した変数で全てやっています

原因として何が考えられるでしょうか・・・
0657デフォルトの名無しさん2014/10/22(水) 17:22:38.47ID:09vRtLa/
DLLがshareじゃないとか
0658デフォルトの名無しさん2014/10/22(水) 18:26:29.68ID:/tAGsi/1
C#のスレッドがSTAじゃないとか
0659デフォルトの名無しさん2014/10/22(水) 19:12:44.29ID:0HwRu0Os
OpenしてるんだからCloseするまで無理とか
0660デフォルトの名無しさん2014/10/22(水) 20:14:45.17ID:/lm919FH
> 手順はちゃんと踏んでいるのですが
だったら問題なし
0661デフォルトの名無しさん2014/10/22(水) 20:34:47.16ID:L2b7Mpd0
そのDLLをCから普通に使ったら音声の録音は普通に成功するのか?
0662デフォルトの名無しさん2014/10/23(木) 13:57:03.79ID:ISc0F2Qf
OLEオブジェクトにゼロデイ脆弱性、Microsoftが暫定対策プログラムを公開
http://www.forest.impress.co.jp/docs/news/20141022_672480.html
0663デフォルトの名無しさん2014/10/23(木) 20:16:43.14ID:dxcfJxLP
WindowsMultimediaとなるとメッセージキュー絡みかねえ。
自分ならWin3.1の遺物なんか使わず、とりあえずDirectSoundCaptureに逃げるな。
0664デフォルトの名無しさん2014/10/24(金) 02:10:22.75ID:DvSLv01W
>>663
DirectSoundだと腐った挙動するドライバが多かったからMME安定
少なくともXP/Vista辺りまではDirectSoundで音出すときに
バッファ内の再生開始位置が無茶苦茶になる(最大で頭1秒近くが飛ばされる)ってケースもチラホラ有ったし。
06656562014/10/24(金) 11:42:20.69ID:ogK9H346
スレッド内でウィンドウを作らずGetMessage()も使わず
入力関連のメッセージを処理する対象にwaveInProcコールバック関数を指定しているのですが
この場合どうやってコールバック関数はメッセージを受け取るのですか?
メッセージを発生させる関数が直接コールバック関数を呼び出すのですか?
メッセージキューは使われないんですか?
06666562014/10/24(金) 11:49:35.21ID:ogK9H346
そのコールバック関数はそのスレッド内にあります
06676562014/10/24(金) 12:34:04.21ID:ogK9H346
すみません>>665わかりました
精進します・・・
0668デフォルトの名無しさん2014/10/24(金) 16:07:45.74ID:2OoN5cPH
http://msdn.microsoft.com/en-us/library/windows/desktop/aa383751(v=vs.85).aspx
を見ると
typedef unsigned __int64 QWORD;
のようですが、<Windows.h>をインクルードしても出てこないのですが、どこで定義されているのでしょうか?
0669片山博文MZ次期CEO ◆T6xkBnTXz7B0 2014/10/24(金) 16:15:46.16ID:r1NpUdOM
古いコンパイラにはQWORDは定義されてない。
DWORDLONGを代わりに使うこと。
0670デフォルトの名無しさん2014/10/24(金) 16:24:10.60ID:xqerE7s/
Python Tools for VS
PTVS 2.0: A quick overview (2-4 mins per feature)
https://www.youtube.com/watch?v=JNNAOypc6Ek
0671デフォルトの名無しさん2014/10/24(金) 16:59:10.66ID:2OoN5cPH
>>669
返事ありがとうございます。
今使っているのはvisual studio2013ですが、これは古いのでしょうか?
0672デフォルトの名無しさん2014/10/24(金) 17:32:26.68ID:r1NpUdOM
>>671
ごめん、標準では未定義だった。<sspi.h>などで定義されてはいるが。
代わりにDWORDLONGかULONGLONGを使ってみてみて
0673片山博文MZ次期CEO ◆T6xkBnTXz7B0 2014/10/25(土) 10:02:15.06ID:O1Q4q8Ry
誰でもWin32シェアウェアが作れる!!!

MZC3_Shareware
https://github.com/katahiromz/MZC3_Shareware
0674デフォルトの名無しさん2014/10/25(土) 11:34:14.86ID:jsJ16HU2
ゲラゲラ
0675デフォルトの名無しさん2014/10/25(土) 13:04:51.36ID:YY79eQIk
>>674
どの辺りが笑えるの?
0676デフォルトの名無しさん2014/10/25(土) 14:37:57.37ID:y0SFSQKU
ヘンザンハクブンさんすげえな
0677片山博文MZ次期CEO ◆T6xkBnTXz7B0 2014/10/25(土) 16:42:59.37ID:YY79eQIk
>>676
褒めてるのかけなしてるか分からんな

生き残れよ
0678デフォルトの名無しさん2014/10/26(日) 01:53:53.70ID:hjrzBV3s
コンソールアプリってスレ違いかなぁ・・・
コンソールアプリで、プログラム上から自身をアクティブなアプリケーションにしたいです。
SetFocusは反応がありませんでした。
なんか方法はないでしょうか?
0679デフォルトの名無しさん2014/10/26(日) 02:06:44.73ID:P8rDdqoY
>>678
やったこと無いけどコンソールウィンドウのHWNDを取得すれば好きに出来るんじゃないの。
http://support.microsoft.com/kb/124103/ja
とか参考にならんかな
0680デフォルトの名無しさん2014/10/26(日) 02:31:38.57ID:hjrzBV3s
>>679
HWNDは取得してます。
「キー入力が自分がアクティブな場合だけ反応しろ」的な処理に使ってます。
SetFocus(HWND)は反応がないですね。
0681デフォルトの名無しさん2014/10/26(日) 02:52:21.11ID:P8rDdqoY
そうですか。俺はわかりません
0682デフォルトの名無しさん2014/10/26(日) 03:01:37.46ID:hjrzBV3s
>>681

SetForegroundWindowを使ったらできました
ありがとうございました。
0683デフォルトの名無しさん2014/10/26(日) 04:12:49.80ID:fx3FFnF6
>>680>>682
> SetFocus
> ウィンドウは、呼び出し側スレッドのメッセージキューに関連付けられていなければなりません。
コンソールプログラムのメインスレッドがウィンドウ作ってメッセージループ回してるわけじゃないからねぇ…。
0684デフォルトの名無しさん2014/10/26(日) 08:00:20.76ID:IQ+MA170
自分が今使ってるPCの起動日時を得るAPIは何でしょう?
最後に再起動(または起動)した日時のことです
0685デフォルトの名無しさん2014/10/26(日) 08:09:09.71ID:IQ+MA170
自己解決
import time
import ctypes
c = ctypes.windll.kernel32.GetTickCount()
time.strftime('%Y-%m-%dT%H:%M:%S', time.localtime(time.time() - c/1000))
これでいけますた
0686デフォルトの名無しさん2014/10/26(日) 08:21:57.15ID:IQ+MA170
あとついでですが
eventlog の system で
ソース = Kernel-General
ID = 13 がシャットダウン
ID = 12 が起動
でした
0687デフォルトの名無しさん2014/10/26(日) 09:27:10.66ID:fx3FFnF6
>>685
50日位(49.7日)起動しっぱだと32bit値が一周してしまうのに注意。
用途次第だけど、GetTickCount64(Vista以降)とか、WMIとかも検討しとこう。
0688デフォルトの名無しさん2014/10/26(日) 10:42:46.44ID:IQ+MA170
import ctypes
ctypes.windll.kernel32.GetTickCount()
322817346
ctypes.windll.kernel32.GetTickCount64()
322821058
type(ctypes.windll.kernel32.GetTickCount())

type(ctypes.windll.kernel32.GetTickCount64())

なるほど int と long の区別がないのか
thx
0689デフォルトの名無しさん2014/10/26(日) 11:02:41.53ID:NOyB4sKg
>>688
そりゃ単にctypesの使い方間違ってるだけだ
64bit型を返すと定義しないと
0690デフォルトの名無しさん2014/10/26(日) 18:52:45.67ID:Y7S0smtt
Windows 10 の Windows Runtime API 解析 (1)
ttp://mntone.hateblo.jp/entry/2014/10/02/102400
0691デフォルトの名無しさん2014/10/27(月) 18:47:40.01ID:LWAIxwVi
前にも書いたのだけど

BIOSに直接ACPIコマンドを送るAPI無いですか?
0692デフォルトの名無しさん2014/10/27(月) 18:54:04.85ID:QxChUp0A
http://www.trialsoftware.com/nobu/diary/
http://msdn.microsoft.com/en-us/library/ff537808%28VS.85%29.aspx
http://www.acpi.info/
0693デフォルトの名無しさん2014/10/28(火) 00:00:02.39ID:ssHrm6SW
みんなでWMI、使おう(出来るとは言っていない
0694デフォルトの名無しさん2014/10/28(火) 00:17:56.65ID:95Lnzlr2
>>693
あれは便利だけど決まったデータしか取れないからね
0695デフォルトの名無しさん2014/10/28(火) 00:39:39.17ID:OyTPqxJU
新しいWindowsだとBIOS使わないとかいう話なかったっけ?
0696デフォルトの名無しさん2014/10/28(火) 00:58:26.75ID:PVivPCTm
BIOS無しでリカバリや増設どうするん
0697デフォルトの名無しさん2014/10/28(火) 00:59:53.15ID:OyTPqxJU
あー、BIOSメニューを開けないだけか、勘違いしたテヘペロ☆
0698デフォルトの名無しさん2014/10/28(火) 01:04:31.84ID:PVivPCTm
GUIになんのかな
何かあった時に対応するハードル上がりそう
0699デフォルトの名無しさん2014/10/28(火) 04:24:31.06ID:oBS7c0Dg
>>693
WMIはドキュメントや仕様がころころ変わる
0700デフォルトの名無しさん2014/10/29(水) 12:11:48.53ID:l9ZYbS7g
>>695-697 マジかよ 大企業病でド素人が上に行っちまったのか
0701デフォルトの名無しさん2014/10/29(水) 13:01:18.00ID:YIL0dPEp
UEFIって知らんのか?
0702デフォルトの名無しさん2014/10/29(水) 19:43:18.33ID:l9ZYbS7g
ほほう、知らなんだ かなりすごそうだ
だがやり過ぎだ 危ない
0703デフォルトの名無しさん2014/10/29(水) 19:45:46.02ID:LJBpagLw
win8 を win8.1 にアプデしたら
CドライブとDドライブの間に変なパーティションを作りやがった
やっぱり消したら駄目なんだろうな
0704デフォルトの名無しさん2014/10/31(金) 22:03:23.19ID:sxFjfbW3
C#だと日本語Windowsでも、アプリの最初に
CultureInfo.CreateSpecificCulture("en");
みたいなのを実行するとカルチャを英語にできると思うんですが、
C++の場合はどうすれば良いのでしょうか?
0705デフォルトの名無しさん2014/10/31(金) 22:18:52.15ID:tMdLNX3k
setlocaleだけど、WIN32APIではないのでスレ違いなのさ。
0706デフォルトの名無しさん2014/10/31(金) 22:52:36.19ID:sxFjfbW3
>>705
レスありがとうございます。setlocaleも調べてみたのですが、それ以外にも
似たような関数がたくさんあって、ややこしくて良く分りません。もう少し精進して
出直します。スレ違い失礼しました。
0707デフォルトの名無しさん2014/11/01(土) 09:11:08.77ID:N73zy/Fb
>>704 >>707
gettextだけど、WIN32APIではないのでスレ違いなのさ。
0708デフォルトの名無しさん2014/11/01(土) 10:14:04.60ID:fd7/g21E
FindResourceExとか個別にwLanguage指定する奴とか、SetLocaleInfoとか。
http://msdn.microsoft.com/ja-jp/library/cc422020.aspx
http://msdn.microsoft.com/ja-jp/library/Cc440130#win32map_nationallanguagefunctions
0709デフォルトの名無しさん2014/11/01(土) 13:43:05.01ID:/9f2fySD
OpenWatcomのSpyってソフトウェアが
ドラッグしたマウス直下のウィンドウハンドルを取得できるんだけど
そういうことが出来るWin32APIがあるの?
0710片山博文MZ次期CEO ◆0lBZNi.Q7evd 2014/11/01(土) 13:57:05.98ID:Wxa4oIV/
>>709
WindowFromPoint
ChildWindowFromPoint
0711デフォルトの名無しさん2014/11/01(土) 14:06:04.91ID:/9f2fySD
>>710
�d
そんなのがあるんだな
0712片山博文MZ次期CEO ◆0lBZNi.Q7evd 2014/11/01(土) 14:39:20.29ID:Wxa4oIV/
かかって来いよ
0713デフォルトの名無しさん2014/11/01(土) 19:35:11.62ID:68QCuiUg
電話?
0714デフォルトの名無しさん2014/11/01(土) 20:26:39.72ID:sD+ctwvB
http://d.hatena.ne.jp/images/diary/k/kyoheiviolence/2008-01-30.jpg
0715デフォルトの名無しさん2014/11/02(日) 00:48:52.89ID:Yg+lSdfp
win32 apiで仮想デスクトップを作ろうと思っています。
作りたいのはデュアルディスプレイみたいにデスクトップを拡張させることですが
ほとんどの仮想デスクトップのソフトは個々の干渉しないデスクトップになってしまいます。
干渉する仮想デスクトップつまりウィンドウの移動ができる仮想デスクトップを作るにはどうしたらいいでしょうか。
http://kkayataka.hatenablog.com/entry/2014/10/11/145913
一応このページを見たんですけどよくわかりませんでした。
0716デフォルトの名無しさん2014/11/02(日) 00:58:44.43ID:vzdMzxCD
仮想デスクトップならこれのソースコード見て勉強すりゃいいんじゃないの?
http://vdm.codeplex.com/
0717デフォルトの名無しさん2014/11/02(日) 01:01:31.33ID:Yg+lSdfp
>>716
これってウィンドウの移動できるの?
0718デフォルトの名無しさん2014/11/02(日) 01:08:31.90ID:Yg+lSdfp
そもそもデュアルディスプレイのプライマリーじゃない方のデスクトップってどうなってるんだ?
0719デフォルトの名無しさん2014/11/02(日) 01:16:32.23ID:vzdMzxCD
>>717
> Windows Key + Control + Numpad 1...9 - Send the foreground window to the corresponding desktop
> Windows Key + Control + Arrow Keys - Send the foreground window to the corresponding desktop
0720デフォルトの名無しさん2014/11/02(日) 01:18:15.60ID:Yg+lSdfp
>>719
なるほど
0721デフォルトの名無しさん2014/11/02(日) 01:39:47.91ID:vzdMzxCD
これのコードも参考にするといい
http://sourceforge.net/projects/virtuawin/
0722デフォルトの名無しさん2014/11/02(日) 01:42:10.80ID:vzdMzxCD
>>716はC#とVBで書かれてる
>>721はCで書かれてる
読みやすいほうを見ればいい
0723デフォルトの名無しさん2014/11/02(日) 10:21:52.70ID:Yg+lSdfp
>>722
ありがとう
0724デフォルトの名無しさん2014/11/03(月) 14:50:42.22ID:lZeoQ+FB
このページを参考にRS-232C通信をやろうとしてるんだがな、たまにTForm1とかいう型が出てきて何じゃらほい・・
ワイのmingwさんが訳わからんぞボケ言うとるわ

http://www.ys-labo.com/pic/pic%20chips/pic%20chips%20contets/2007/070401%20RS232C%20PC_PIC.html#RS232C 4
0725デフォルトの名無しさん2014/11/03(月) 14:56:23.15ID:sozpWno6
>>724
「このプログラムは C++ Buider Ver.6 でかかれています。」だそうで。
0726デフォルトの名無しさん2014/11/03(月) 15:19:34.61ID:lZeoQ+FB
>>725
なんや身内ネタかい・・。適当に書き直してみますわ
0727デフォルトの名無しさん2014/11/05(水) 13:53:36.70ID:m6IG8bnS
デバイスやメモリを確保する関数を実行した時にエラーが返ってきた時っていうのは
確保に失敗したって事だからそのあとにデバイスやメモリを開放する処理は100%記述しなくてOKですか?
確保はしてるけどエラーが返ってくるなんて事あります?
0728デフォルトの名無しさん2014/11/05(水) 14:36:24.56ID:YyHvdJxm
断片化するような状況だと
解放しても確保できないことはある
0729デフォルトの名無しさん2014/11/05(水) 15:29:53.05ID:g43hYBD8
自作のC++プログラムで処理中にWindowsのクリップボードを使うのですが、
その時に、他のアプリがクリップボードを使ったり、あるいはユーザーがPrintScreenキーを押したりすると、
私のプログラムが正しく動かなくなります。
ですので、自作プログラム実行中は、クリップボードを占有して利用できるようにして、
かつ、PrintScreenを一切禁止にするか、あるいはPrintScreenキーが押されたら、
自作プログラムでそれをつかまえて対処するなどをしたいのですが、
そういうことは可能でしょうか?Windows7 pro 64です。
0730デフォルトの名無しさん2014/11/05(水) 15:34:58.72ID:Fpn6fvq+
>>727
メモリーは大抵大丈夫だけど、デバイスはドライバー次第
でもできることは再度オープンし直す位だから、あまり気にしてもしょうがない
ログとか、エラーメッセージをきちんとだすことに注力した方がいいと思う
0731デフォルトの名無しさん2014/11/05(水) 15:37:47.03ID:Fpn6fvq+
>>729
可能だと思うけど、クリップボードってユーザーが意識して使うものだから、勝手に占有するような迷惑なプログラムを作るなよ...
0732デフォルトの名無しさん2014/11/05(水) 16:00:35.31ID:g43hYBD8
>>731
占有すると行っても、時間的には20秒くらいの期間です。
>可能だと思うけど、
具体的なやり方、分れば教えて下さい。
0733デフォルトの名無しさん2014/11/05(水) 16:29:45.41ID:jWIAFUkN
>>729>>732
質問の答としては、仕様上クリップボードの変更を阻止したいならOpenClipboardで良い。
MSDN曰く「クリップボードをオープンし、他のアプリケーションがクリップボードの内容を変更できないようにします。」

だけどまず、「私のプログラムが正しく動かなくなります」の原因を特定して直すべきだと思う。
そうすりゃそんな変なことする必要はない。
0734デフォルトの名無しさん2014/11/05(水) 16:36:11.89ID:XPxSL9Pk
>>731
そういえば昔のOfficeのクリップボードがめっちゃ迷惑だったわ
0735デフォルトの名無しさん2014/11/05(水) 16:37:13.17ID:g43hYBD8
>>733
情報ありがとうございます。
OpenClipboardを調べてみます。
>「私のプログラムが正しく動かなくなります」の原因
は分っています。クリップボードに情報を読み書きして
いるので、他のプログラムが内容を変更すると
おかしくなるのです。
0736デフォルトの名無しさん2014/11/05(水) 16:49:12.78ID:RlZYfNIA
そんな長時間クリップボードに読み書きする意味はあるのか?
アプリのローカルなデータに書いて最後に書き出せばいいだろ……

思いつくのはクリップボードを使用する他のツールの自動化くらいか
0737デフォルトの名無しさん2014/11/05(水) 17:36:49.47ID:g43hYBD8
OpenClipboard
で占有できたようです。上手く行きました。
有難うございました。
0738デフォルトの名無しさん2014/11/05(水) 18:06:05.72ID:Fpn6fvq+
>>735
> クリップボードに情報を読み書きしているので、他のプログラムが内容を変更するとおかしくなるのです。

クリップボードを一時ファイルみたいに使ってるってことか?
クリップボード使う意味がわからん
0739デフォルトの名無しさん2014/11/05(水) 18:38:49.89ID:O9Y7wxsf
使う意味なんて別に他人にわかってもらう必要は無いんじゃね。
自分で使う限りは問題ないだろうし。
もし他の人にも使用してもらうつもりなら「このソフト使うとクリップボードがおかしくなる」という不具合を報告されるだけだろうから。
0740デフォルトの名無しさん2014/11/05(水) 19:25:44.10ID:ukUrXV5v
考えられるのは既存ソフトのペースト機能つかった自動化ソフトとかウィルス的ソフトの類だろ
0741デフォルトの名無しさん2014/11/05(水) 19:54:37.56ID:LB9Ny9zJ
>>735
設計見直したら?
0742デフォルトの名無しさん2014/11/05(水) 21:03:26.65ID:Fpn6fvq+
>>740
> 考えられるのは既存ソフトのペースト機能つかった自動化ソフト

なら、ブロックしてどうするねんだし

> ウィルス的ソフトの類だろ

やっぱりこれかな
0743デフォルトの名無しさん2014/11/05(水) 21:29:17.30ID:Q1wayxmp
別に長時間でなくても
クリップボードにアクセスするなら
占有しないとダメだろ
0744デフォルトの名無しさん2014/11/06(木) 00:52:51.88ID:PsvQS0pQ
クリップボード扱う時って必ずOpenClipboardするはずだけど
>>737は何してんだろな
0745デフォルトの名無しさん2014/11/06(木) 10:56:59.24ID:keBB2IB1
クリップボードチェーンがあるから占有なんかしなくていいはず
0746デフォルトの名無しさん2014/11/07(金) 00:33:48.29ID:24nKycB9
ああああああああああああああああプロシージャが長いよおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおお
0747デフォルトの名無しさん2014/11/07(金) 07:44:10.93ID:YwE66nz4
1000行や2000行は気にするな
0748デフォルトの名無しさん2014/11/07(金) 07:52:00.07ID:u+2F0oww
switchのcase毎に関数に分けるってよくやるけど
結局グローバル変数が増えてかえって判り難くなることがある
もちろん書き方次第で綺麗に書く方法もあるけど
0749デフォルトの名無しさん2014/11/07(金) 07:59:09.25ID:WAdI9oxH
メッセージクラッカーじゃ駄目なの?
0750デフォルトの名無しさん2014/11/07(金) 08:16:44.28ID:kh0pD0TM
なにそれおいしいの?
0751デフォルトの名無しさん2014/11/07(金) 09:26:08.80ID:panR/oOb
ウインドウごとにモジュール分ければグローバル変数は増えない
0752デフォルトの名無しさん2014/11/07(金) 10:05:54.41ID:nUR92w6F
WNDCLASSEXでcbWndExtraを使う
windowごとに構造体を確保してポインタを保持
0753デフォルトの名無しさん2014/11/07(金) 10:52:07.42ID:24nKycB9
3点を通る楕円を書きたいんだが、どうすりゃ良いんだ。Arc()で書いたやつを回転させたいんだが

イメージ図
http://www.fastpic.jp/images.php?file=6149225757.jpg
0754デフォルトの名無しさん2014/11/07(金) 10:53:34.29ID:W5U0hLjp
3点だと確定しないんじゃ?
0755デフォルトの名無しさん2014/11/07(金) 10:58:45.75ID:24nKycB9
>>754
あ、ホンマや・・・ ちょっと吊ってくる
0756デフォルトの名無しさん2014/11/07(金) 11:26:33.17ID:zqTkHdgn
優しいな
0757デフォルトの名無しさん2014/11/07(金) 14:10:44.62ID:Ji9punwU
windowsでprintfが使えないのはなぜですか?
0758デフォルトの名無しさん2014/11/07(金) 14:19:54.18ID:lfJ5/Rhs
>>757
使えるよ
07596562014/11/07(金) 17:44:17.34ID:JiAv1YVd
原因がわかったような気がします

どうやらwaveInProc型のコールバック関数がメインの関数と同時進行しているようです
恐らくこのコールバック関数のおかげで勝手に別のスレッドが立ち上がって動いているのかもしれません
0760デフォルトの名無しさん2014/11/07(金) 23:32:34.36ID:qmS/EQMi
http://virtuawin.cvs.sourceforge.net/viewvc/virtuawin/
これを参考に仮想デスクトップを作ろうと思ってるんだけど元のデスクトップ
にあるウィンドウをもう一つのデスクトップに送る所の仕組みがわからない。
教えてください。
0761デフォルトの名無しさん2014/11/07(金) 23:57:53.30ID:TJsXBBzp
その質問はこのスレの主旨と違うくね
0762デフォルトの名無しさん2014/11/08(土) 06:50:42.55ID:F238qiEh
マルチモニタの機能で仮想デスクトップ環境を用意して、
ウィンドウをD&Dで動かすのをエミュレートしているっぽいような。
超雑に流し見しただけなので勘違いの可能性大。
0763デフォルトの名無しさん2014/11/08(土) 09:32:12.27ID:3dfXBQLl
>>760 が作ったのはマルチモニタじゃなくてマルチ質問
0764デフォルトの名無しさん2014/11/09(日) 03:48:10.36ID:Bt9f9JFw
c++でパソコンで再生中の音声を
waveファイルに記録したいのだが
ググって見つかるのはmic入力を
録音する奴ばかりなんだけれど、
再生中の音声を録音するc++のサンプル
どこかに有れば教えて欲しい。
0765デフォルトの名無しさん2014/11/09(日) 04:11:54.04ID:O+ZQ6aB5
そういうのって、
・なんていうソフトで再生し
・どのサウンドデバイスで再生している
のか定まらないとどうしようも無いんじゃなかろうか
0766デフォルトの名無しさん2014/11/09(日) 04:56:47.17ID:Bt9f9JFw
>>765
レス有難うございます。
なるほど。
録音したいのはらじるやラジコなので、規定の再生デバイス(?)で
いいのかな?
0767デフォルトの名無しさん2014/11/09(日) 05:23:48.29ID:q0q68Vhk
録音入力としてステレオモニタが選べる環境なら再生中の内容を録音できる。
そうでない場合はステレオモニタを再現する擬似サウンドドライバ入れたり、
録音したいアプリ側を改造したりする必要がある。ていうか違法目当ては帰れ。
0768デフォルトの名無しさん2014/11/09(日) 05:28:59.41ID:Bt9f9JFw
>>767
レス有難うございます。
大変参考になりました。
>違法目当
どのあたりが違法ですか?
らじる聴いている時にちょっとトイレで席外す時に10分くらいの間
録音しておきたいのですが。
0769デフォルトの名無しさん2014/11/09(日) 07:59:11.70ID:5CcElDxt
>>764
内部ミキサーから入力するように変える
0770デフォルトの名無しさん2014/11/09(日) 08:02:10.43ID:5CcElDxt
これでWindowsに添付のレコーダーで録音可能
http://dynabook.com/assistpc/faq/pcdata/009723.htm
0771片山博文MZ次期CEO ◆T6xkBnTXz7B0 2014/11/11(火) 18:26:00.20ID:BG7z5JjJ
次のWindowsのブラウザーはどこまで近代化するのか? その名前は決まってるのか?
0772片山博文MZ次期CEO ◆T6xkBnTXz7B0 2014/11/11(火) 18:35:41.22ID:BG7z5JjJ
ユニバーサルアプリとWebアプリを会社としてはどのように扱っていくつもりか。
0773片山博文MZ次期CEO ◆T6xkBnTXz7B0 2014/11/11(火) 19:10:39.22ID:BG7z5JjJ
これは私のアイデアだが、Windows 10 Scientist Editionというバージョンを発売できないか?
これは科学者向けの機能が詰まったOSとなる。
0774片山博文MZ次期CEO ◆T6xkBnTXz7B0 2014/11/11(火) 19:26:53.14ID:BG7z5JjJ
そうだ、Science Editionだな。世界中の研究所が使いたくなるようなシステムを作るわけだよ。
0775デフォルトの名無しさん2014/11/11(火) 20:18:23.33ID:BG7z5JjJ
CALL MICROSOFT PERSON
0776デフォルトの名無しさん2014/11/11(火) 20:31:18.93ID:HcThn5iG
CALL -151
0777デフォルトの名無しさん2014/11/11(火) 21:33:19.07ID:sPIarbCE
Science向けはLinuxが進んでますね
0778デフォルトの名無しさん2014/11/11(火) 21:34:05.28ID:+FZC/J3X
MFCを使わないモーダルdialogboxを表示して、その中のあるボタンを押したら
別スレッド作成し、そこである別の関数Func()を実行するところまでは上手く出来たのですが、
そのFunc()の中でCoInitializeやってCOM関連の処理を入れたらFunc()を実行し
終わった後のスレッドのjoinの処理のあたりでdialogboxが反応なしになって
しまいます。何か解決のヒント有れば教えて下さい。
0779デフォルトの名無しさん2014/11/11(火) 21:54:29.58ID:g1BOrJo5
CoInitializeExか?
0780デフォルトの名無しさん2014/11/11(火) 22:00:41.55ID:Q0YP3r9c
CoInitializeはスレッドごとにCoInitializeとCoUnInitializeのペア実行しなくちゃいけないで
0781デフォルトの名無しさん2014/11/16(日) 05:13:56.30ID:VM9qJfXz
あるAというプログラムのウィンドウが再試行とキャンセル型のモーダルメッセージウィンドウを生成する度にPostmessageでIDRETRY(再試行)を全く別のプログラムBから送信したいのですが
どうすればいいでしょうか 
Findwindowでウィンドウハンドルを取得して送信したもののうまくいきませんでした
Win32初心者です よろしくお願いします
0782デフォルトの名無しさん2014/11/16(日) 06:02:41.33ID:VM9qJfXz
UWSC使ったら1分でできた
草不可避
0783デフォルトの名無しさん2014/11/16(日) 08:18:54.93ID:lR2mulvd
おめでとう
0784デフォルトの名無しさん2014/11/17(月) 17:36:51.66ID:YUWmI/Qt
テキスト読み上げなら
http://www.oshiete-kun.net/archives/2012/10/post_1210.html
0785デフォルトの名無しさん2014/11/17(月) 19:22:07.27ID:JwoO3TSc
ID が Qt
0786デフォルトの名無しさん2014/11/18(火) 01:59:32.41ID:a2yegtxz
他スレで誤爆してたので再投稿。

SetWindowSubclassでサブクラス化した後はRemoveWindowSubclassをしなければいけませんが、
RemoveWindowSubclassをサブクラスプロシージャのWM_DESTROYで実行すると問題はありますか?
0787デフォルトの名無しさん2014/11/18(火) 02:02:15.90ID:5SkfsGvC
Win64apiは有るのか?
0788デフォルトの名無しさん2014/11/18(火) 03:44:08.35ID:dTS5KRdo
ない
0789デフォルトの名無しさん2014/11/18(火) 04:12:57.06ID:5SkfsGvC
>>788
どういうことだよ。
Win32APIに有る関数をWin64で使ったら、
64ビットプログラムは、32ビットのAPIを呼び出すのか?
よくわからん。
0790デフォルトの名無しさん2014/11/18(火) 04:22:55.47ID:IW7vhl2H
64bitで読んでいるWindowsAPIは、Win32APIという名の64bitAPI
ってことじゃないの?
0791デフォルトの名無しさん2014/11/18(火) 06:04:39.89ID:e1BcnSab
>>786
WM_NCDESTROYでやれと書いてあるが
http://blogs.msdn.com/b/oldnewthing/archive/2003/11/11/55653.aspx
0792デフォルトの名無しさん2014/11/18(火) 10:03:07.06ID:jY5bJ43+
>>789
WOW64
0793デフォルトの名無しさん2014/11/18(火) 10:15:10.90ID:/aEHbgmj
>>789
Win32APIに部分的にパッチ当てたような感じ
関数ごとのドキュメントにWin64での注意書きがあるよ
要点だけ押さえればリンカとマクロやエイリアスでほとんど吸収されて同じように使える
0794デフォルトの名無しさん2014/11/18(火) 12:40:57.40ID:osnYdgi2
>Win64apiは有るのか?
Win64API はitanium 用のAPIの名前(だった)

>Win32APIに有る関数をWin64で使ったら、
>64ビットプログラムは、32ビットのAPIを呼び出すのか?

逆。32bitプログラムが呼び出すとwow64が64bit 版を呼び直す。
0795デフォルトの名無しさん2014/11/18(火) 15:22:45.49ID:g+UUiVx9
Win64APIって必要あるのか?
何を64ビットにするんだろう
正直、メモリ確保に代表されるアドレスとサイズだけ64で受け付けるだけで充分

再コンパイルで対応が終わる世界
どす切り捨てじゃないんだし
0796デフォルトの名無しさん2014/11/18(火) 15:42:02.62ID:IW7vhl2H
Win[32]API
ってのがまぎらわしいんだよね
0797デフォルトの名無しさん2014/11/18(火) 15:58:46.86ID:B5/xScPc
64bit OS 環境の場合
System32 フォルダに 64bit 用バイナリ
WOW64 フォルダに 32bit 用バイナリがある
さらに 64bit アプリから C:\Windows\System32 を参照すると
C:\Windows\System32 にアクセスしてくれるが
32bit アプリから C:\Windows\System32 を参照しても
C:\Windows\WOW64 を見に行く
0798デフォルトの名無しさん2014/11/18(火) 16:24:27.64ID:YueNHcW6
>>797
Program Filesもだな
0799デフォルトの名無しさん2014/11/18(火) 16:34:48.09ID:a2yegtxz
>>791
あれでよかったのか心配でハゲそうでした。
ありがとうございました。
0800デフォルトの名無しさん2014/11/18(火) 16:50:20.84ID:IAkq1r4k
>>795
http://msdn.microsoft.com/ja-jp/library/bb427430(v=vs.85).aspx
API呼び出し間で、知らない間に32bitに切り落としてしまったりとかあったりする。
昔からWin32APIでガリガリ書いた経験とか無いと、今一理解し辛いとは思うけど。
以前はDWORDやINTで宣言されていた箇所が、
x64対応にあたってDWORD_PTRやINT_PTRに書き替えられたとか結構あるからねえ。
0801デフォルトの名無しさん2014/11/18(火) 17:26:40.66ID:DEDp+Jgn
キーボード入力なのか、
バーコード入力なのか、
判定する方法は、
有りますでしょうか?
0802デフォルトの名無しさん2014/11/18(火) 17:54:58.32ID:JVYtZzDi
たすけてぇぇぇ
エスパーァァァ
0803デフォルトの名無しさん2014/11/18(火) 19:23:12.10ID:kVlsPNtk
エスパー不在
0804デフォルトの名無しさん2014/11/18(火) 19:33:30.15ID:YTAZf5ZU
シリアル接続のバーコードリーダーなら区別付くんじゃね?
0805デフォルトの名無しさん2014/11/18(火) 23:53:24.64ID:/aEHbgmj
むしろ区別できない状況というのがわからん
0806デフォルトの名無しさん2014/11/19(水) 00:07:35.85ID:EYHPnhFF
よくあるのがキーボード端子に接続する奴。
ソフトウェア側の対応不要で手軽だから結構使われてる。
0807デフォルトの名無しさん2014/11/19(水) 00:24:18.53ID:BmNmqYGG
医療プログラマーが超高難易度の免許制に / フリーソフトやオープンソースの無作為配布も全面禁止
http://fox.2ch.net/test/read.cgi/poverty/1416286592/
0808デフォルトの名無しさん2014/11/19(水) 01:42:40.34ID:59EEsigK
>>806
マウスとかキーボードでデバイスごとに入力を区別するユーティリティはたまに見かけるが、
それらと同じことをすれば一応区別する事はできるのかな。
PS/2端子を共有する(キーボートとPCの間にその機器を繋ぐ)形式だとダメか。

キー入力速度が高速かつ一定でバーコードと同じフォーマットの入力の場合をチェックするしか無いかなぁ…
0809デフォルトの名無しさん2014/11/19(水) 01:46:06.57ID:g3hRCnVe
WindowsというOSが外部デバイスの入力を区別出来てんならアプリでも容易に区別できるだろうし
Windowsに出来ないのならアプリ側で区別するのも容易では無いだろう(それぞれのデバイスの仕様を知らなきゃならんだろうし)
0810デフォルトの名無しさん2014/11/19(水) 02:27:12.36ID:r96OVPNr
このスレで質問するくらいだから、メッセージの区別くらいは理解していると思うが。
バーコード入力がキーボード入力と同じメッセージだと、ウインドウプロシージャ側では判断のしようがない。
何か他の情報がないと区別することは無理。
両者が別メッセージで届くのなら、どうにでも区別はできるだろ。
0811デフォルトの名無しさん2014/11/19(水) 04:12:02.38ID:59EEsigK
>>809
OSが区別できていてもアクセスする手段がなければ「アプリでも容易に」とは行かないだろ。
最悪、アクセスする手段を提供するドライバを作って入れる所までやらなきゃならん。
>>810
809が言ってるのはドライバレベルでの区別の話のような気がするんだが
0812デフォルトの名無しさん2014/11/19(水) 06:38:19.95ID:s41rTTKy
>>810 は >>801 へのレスじゃないの?
0813デフォルトの名無しさん2014/11/19(水) 06:48:55.67ID:D6/+gbod
RawInputかDirectInput辺りを使えば、入力デバイス別で処理はできるかも。
ただ、バーコード入力以外受付禁止かどうか確認した方が良さげ。
スキャンがうまくいかなければ直接入力もできますよ的な運用もあるわけだし。
0814デフォルトの名無しさん2014/11/19(水) 07:22:24.98ID:bISJCM/y
質問の通りに答えると
aという文字がアプリに来て
それがどのデバイスから来たかなんて
分からないよ
0815デフォルトの名無しさん2014/11/19(水) 08:08:17.49ID:EYHPnhFF
バーコードリーダ側にプリアンブルの設定があったりするからそれを使うんだな。
0816デフォルトの名無しさん2014/11/19(水) 08:18:39.93ID:I9gi/U1m
>>814
それのどこが質問の通りなのか小一時間...
0817デフォルトの名無しさん2014/11/19(水) 09:21:13.24ID:gR9427sq
アプリのイベントハンドラでは判断できない、
ということが前提となってきましたね。

しかしそういった要求はありそうだし、なんか抜け道で判断出来るんだろうね。
0818デフォルトの名無しさん2014/11/19(水) 12:31:14.94ID:JZ2oYyd9
>>808
それが一番有望かな
バーコード入力モジュールは最後に改行を送って来ることが多いので
(設定変更出来るタイプなら設定でそうする)
一行を送って来る時間が短いものや
全桁のチェックサムを見れば大体は区別できる
0819デフォルトの名無しさん2014/11/19(水) 13:13:21.18ID:I7qsRoNL
よく分からないけど、バーコードリーダからの文字入力だと WM_KEYDOWN などのキーストロークメッセージを伴わないで
WM_CHAR メッセージが単独で飛んで来るような気がする。
文字入力とキーストロークの両方を判定条件にすれば、区別できないかな。
0820デフォルトの名無しさん2014/11/19(水) 14:04:34.90ID:wC3DN0FJ
それは動作確認済みの話なのかな?
0821デフォルトの名無しさん2014/11/19(水) 14:07:56.38ID:g3hRCnVe
バーコードリーダのメーカに直接問い合わせろとしか言えんな
0822デフォルトの名無しさん2014/11/19(水) 17:42:06.22ID:y9r8HbFR
>>819
バーコードリーダがどういう風にキー入力をエミュレートしているかは機器によるんでないの?
そもそもハードウェアがメッセージを送っているわけじゃないし
専用のデバイスドライバが要らないなら、OS側が発行するメッセージはキーボードと同じになるでしょ。
0823デフォルトの名無しさん2014/11/19(水) 17:53:05.83ID:JZ2oYyd9
コマンドラインパラメータはどうすれば取得出来ますか?
http://melpon.org/wandbox/permlink/Skhh3RehsuHjklD7
0824デフォルトの名無しさん2014/11/19(水) 17:53:19.19ID:I9gi/U1m
>>819
WM_CHAR って WM_KEYDOWN から TranslateMessage( ) で生成されるみたいだけど?
0825デフォルトの名無しさん2014/11/19(水) 18:42:57.81ID:P/UsCdtT
>>824
違う。
そもそもTranslateMessage関数はプロシージャで使用するものじゃない。
WinMain のメッセージループ内で使用して、Message構造体からWM_CHARを生成する。
ざっくり言えば、仮想キーボードコードをキー入力メッセージに変換するために使用する。
直接、メッセージとして処理されるキーストロークメッセージと、変換された結果得られた
キー入力メッセージは全くの別物。
0826デフォルトの名無しさん2014/11/19(水) 18:49:28.04ID:P/UsCdtT
× 仮想キーボードコード
○ 仮想キーコード
0827デフォルトの名無しさん2014/11/19(水) 19:14:39.21ID:P/UsCdtT
>>823
サンプルの例だと、av[1]に最初のパラメータ、av[2]に2番目のパラメータ、・・・、以下略
で格納されてる。
av[0]は実行ファイル名、パラメータの数はacの値で取得できる。
0828デフォルトの名無しさん2014/11/19(水) 19:16:15.60ID:I9gi/U1m
>>825
何が違うのかさっぱりわからん
プロシージャとか書いてないこと言われてもなー w
て言うか、MSDN 読んで出直してこいよ
0829デフォルトの名無しさん2014/11/19(水) 19:19:54.61ID:59EEsigK
>>819
そんな同仕様もないクソ仕様のドライバ入れさせられるバーコードリーダとか勘弁願います。
ていうか、普通のキーボードとして振る舞ったほうが絶対楽だろ・・・
>>825
TranslateMessageがウィンドウプロシージャに渡す前のWM_KEYDOWNから生成するメッセージだから別に間違って無くね?
0830デフォルトの名無しさん2014/11/19(水) 19:28:19.84ID:P/UsCdtT
メッセージループはWinMain関数の中にあるのに、どうやってウインドゥプロシージャの
メッセージを処理するんだよ。
というか、Win32の構造を理解してる奴いないのか?
0831デフォルトの名無しさん2014/11/19(水) 19:30:14.48ID:QB/q/+7G
IDirectInput8::EnumDevices()でバーコードリーダを区別できるなら、そのデバイスを掴んでポーリング
バーコードリーダからのキーイベントを全部横取りして、OSのキーボード層にイベントを渡さない。

デバイスを区別できないならば、PS/2インターフェースのレベルで、キーボードをエミュレートしているから無理
0832デフォルトの名無しさん2014/11/19(水) 19:32:44.52ID:g3hRCnVe
もうバーコードリーダに関するエスパー合戦はやめようぜ
0833デフォルトの名無しさん2014/11/19(水) 19:45:24.29ID:I9gi/U1m
>>830
だからなんでプロシージャの中の話にするんだよ
バカの癖に上から目線とか笑えるわ
0834デフォルトの名無しさん2014/11/19(水) 19:51:43.56ID:wC3DN0FJ
メッセージポンプする時にはTransしないのかな?
0835デフォルトの名無しさん2014/11/19(水) 20:00:34.26ID:P/UsCdtT
>>833
お前さん一度も、CでWin32のプログラム組んだことないだろ。
アプリがユーザの処理を行うのが、ウィンドゥプロシージャだと言うこと理解してるか?
0836デフォルトの名無しさん2014/11/19(水) 20:11:06.56ID:8gwX0Lh3
>>834
メッセージポンプはGetMessage関数。
メッセージのディスパッチはDispachMessage関数。
仮想キーコードのメッセージ変換はTranslateMessage関数。
メッセージループでは、大抵1セットで使われる。
0837デフォルトの名無しさん2014/11/19(水) 20:16:41.18ID:RX9BziQK
Peekじゃなくて?
0838デフォルトの名無しさん2014/11/19(水) 20:22:32.07ID:8gwX0Lh3
PeekMessageとかあるんだな。
使ったことなかった。
何処が違うんだろ。
0839デフォルトの名無しさん2014/11/19(水) 20:25:27.08ID:RX9BziQK
>>838
キュー内に WM_QUITが入るとWM_PAINTが出なくなるので
除去したりとか
0840デフォルトの名無しさん2014/11/19(水) 20:28:52.49ID:oXOCRAV5
>>835
だから誰もそんな話してないだろ
勝手にプロシージャとか言い出して自爆するなよ w
面倒だからここでも読んどけ
http://msdn.microsoft.com/ja-jp/library/windows/desktop/ms646276(v=vs.85).aspx
0841デフォルトの名無しさん2014/11/19(水) 22:38:22.35ID:QB/q/+7G
peek系は、プログラム実装上スパゲッティ過ぎて、どうしようもない実装を
二日で改修するように要求された時に応急処置的に使う物だと思ってた。
0842デフォルトの名無しさん2014/11/19(水) 23:15:55.28ID:rpot8YXT
>>838
GetMessageはメッセージキューが空だとメッセージが来るまで
帰ってこない。
PeekMessageは空でもブロックしない。

あと、キュー内のメッセージを消さずに、特定のメッセージが
あるかの確認とかできる。

昔だと、メインスレッドで時間のかかる処理をするときに
適度にPeek挟んでメッセージ処理するテクニックとかあったけど
今ならスレッド作るのが普通だな。
0843デフォルトの名無しさん2014/11/20(木) 03:00:17.79ID:NeVUFuiv
ゲームとかなら使うな
0844デフォルトの名無しさん2014/11/22(土) 19:30:17.22ID:Le0NeUvk
なんでここの豚どもはケンカ腰なの?
死ねよ
0845デフォルトの名無しさん2014/11/22(土) 19:33:06.33ID:u0/tHX3P
つ CoreWars
0846デフォルトの名無しさん2014/11/22(土) 21:10:27.28ID:oQref62r
twitter
0847デフォルトの名無しさん2014/11/25(火) 11:42:50.01ID:Hgd9KWjH
質問です。
Windowsにデバイスから入力して、それからアプリ側のコールバック関数を実行してくれるまでの、
最低限保証してくれる時間、タイムスライシングの保証時間、といったものはあるのでしょうか?

逆にタイマーをWindowsにレジスト(これもコールバック関数ですが)しておけば、
コールを保証してくれる時間はあるのでしょうか?
0848デフォルトの名無しさん2014/11/25(火) 11:48:02.25ID:1jwMJAuJ
ねえよ
0849デフォルトの名無しさん2014/11/25(火) 13:18:31.79ID:Hgd9KWjH
Windowsのタイマーが失敗しない時間設定の目安くらいあるのではないでしょうか?
WinNTの出始めでUNIXを撃破していたころならいざ知らず、
Linux Serverとの戦い中には、その辺のパフォーマンスと保証が無いと負けちゃうのではないかと。
M$DNの中の人とか、突然現れて回答出してくれたりしないかなぁ?
0850デフォルトの名無しさん2014/11/25(火) 13:21:08.07ID:Fx8Q2PhX
NTとしての話しとAT互換機としての話は異なる。
詳しくはDDKのドキュメント参照
0851デフォルトの名無しさん2014/11/25(火) 14:20:52.53ID:/9fLtCNp
http://itpro.nikkeibp.co.jp/article/COLUMN/20080326/297106/
Windows CE だけどさわりの部分だけ説明があった
2ページ目以降は会員のみご覧いただけますw
0852デフォルトの名無しさん2014/11/25(火) 14:32:50.86ID:Qz0sLwpt
>>851
それはスレッドプライオリティの話でちと違うかなぁ
REALTIMEにしてもリアルタイムにはならないかと
0853デフォルトの名無しさん2014/11/25(火) 14:36:30.46ID:0UX0vxRL
MSの人がいてもインシデント誘導するだけ
0854デフォルトの名無しさん2014/11/25(火) 15:06:05.45ID:Hgd9KWjH
リアルタイムOSじゃなければスケジューリング等に色々事情があるが故に”保証しない”、
って原則はあるけど、、、

「この時代(←それぞれの時代で)、この時間は保証しないとOSにならないよな」
って基準はあって、
OS会社は自社基準を元にOS作ってる筈ですよね。
0855デフォルトの名無しさん2014/11/25(火) 15:11:29.25ID:dMEv4AW9
10ms以下の数値は期待してはいけない
0856デフォルトの名無しさん2014/11/25(火) 15:15:23.33ID:Qz0sLwpt
SetThreadPriorityBoost なんてのがあるからねぇ
でこの機能の詳細はDDKのマニュアルの方が良いかも
0857デフォルトの名無しさん2014/11/25(火) 15:19:01.64ID:Hgd9KWjH
>>855
逆に言うと、
20ms超えくらいから安定し始めて、
100ms以上ならゼンゼン余裕でOK、といった」感じなのでしょうか。
0858デフォルトの名無しさん2014/11/25(火) 15:34:11.00ID:dMEv4AW9
どうしてそう思ったの
0859デフォルトの名無しさん2014/11/25(火) 16:15:31.10ID:/j7IQ7/q
>>847
最終的にユーザモードのアプリケーションに処理が回ってくるまでの最大時間、ということになると、
Windowsのスケジューラが最悪ケースでどのようにタスクを回すのか、を調べればいいのでは。
Advanced WindowsかインサイドWindowsに詳しい話が出てたと思う。
0860デフォルトの名無しさん2014/11/25(火) 16:19:20.24ID:dMEv4AW9
最悪ケースならいつまでも戻って来ない可能性を考慮するべき
0861デフォルトの名無しさん2014/11/25(火) 17:02:38.15ID:Hgd9KWjH
>>859
確かにそれが知りたい数値です。

>>860
アプリが異常になったことさえ検知出来れば、異常時処理にぶっ飛ばすからそんなこと良いんだよ。
そうじゃなくて、正常使用のときの、保証時間が知りたいだけです。
0862デフォルトの名無しさん2014/11/25(火) 17:56:33.50ID:1jwMJAuJ
保証がねえと死ぬのか?
じゃあ今すぐ死ねよクソカス
0863デフォルトの名無しさん2014/11/25(火) 18:28:31.37ID:GdMyLjrk
>>854
保証できるならリアルタイムOSになるんじゃないの?
でもリアルタイムOSじゃないから保証できないよね?
要求が滅茶苦茶だよ
0864デフォルトの名無しさん2014/11/25(火) 18:33:48.22ID:mXkdv2Yk
組み込み機器をwinに置き換えでもするの?
無茶っぽくない?
0865デフォルトの名無しさん2014/11/25(火) 18:46:21.48ID:+auTw7Mt
アプリ側で処理しないで
ドライバ内部で処理できるようにしてみるとか
0866デフォルトの名無しさん2014/11/25(火) 20:32:04.74ID:/9fLtCNp
最高優先度の監視専用スレッド立てて
そのオーバーヘッド込みで精度とみなすくらいじゃないの
どのくらいになるかは知らね
0867デフォルトの名無しさん2014/11/25(火) 21:20:52.19ID:oFc8Qvhs
ひさびさの妄想君登場記念上げ
0868デフォルトの名無しさん2014/11/25(火) 23:54:17.20ID:gJKZVwWb
Linuxのタスクスケジューラーは、Kernel 2.6.23から、
Completely Fair Scheduler(CFS)という公平なものに変わった

CFSでは赤黒木を使って、次に実行するプロセスを決める
決め方には、プロセスの実行時間と優先度を使う
プロセスが実行時間を使い切ったら、一旦停止する
(状態は実行から実行可能へ戻る)

ただし、優先度が1低くなる度に、
実行時間を1.25倍にして計算する
(2低いのなら、1.25^2)

だからプロセス数が数百あっても、
どのプロセスも必ずいつかは実行できるので、公平なのだ
0869デフォルトの名無しさん2014/11/26(水) 04:07:53.96ID:dntXOEXZ
>>861
「アプリが異常になった」訳じゃなくて正常動作として「最悪ケースなら(実質)いつまでも戻って来ない」んだろ。
UIが応答なし表示になるとかのは有るが、異常と判断する基準をOS側が提供しないんだから、
処理間隔の異常というものを検知したいなら自分で異常の基準を定義して検出するしかない。

ただ、検出側の処理自体をOSの上で動かすならそれの呼び出し自体が遅れてしまうけどね。
そんな訳で、そういう検出処理をしたいならリアルタイムOSやハードウェアで検出しときましょう。
0870デフォルトの名無しさん2014/11/26(水) 05:26:14.82ID:xl1zdQ+K
保証しないのがホストOS
保証するのがリアルタイムOS
0871デフォルトの名無しさん2014/11/26(水) 08:47:57.60ID:HsSUcqtY
>>862-870


つ >>854
0872デフォルトの名無しさん2014/11/26(水) 09:04:58.93ID:NOFH7tkj
>>871

つ >>862-870

保証しない(できない)OSの「保証した値」を提示しろって無茶言ってるの理解してる?
0873デフォルトの名無しさん2014/11/26(水) 09:07:35.76ID:HsSUcqtY
情報持ってない人は、カキコする必用無いって知ってる?
0874デフォルトの名無しさん2014/11/26(水) 09:37:36.48ID:dntXOEXZ
>>871
> 「この時代(←それぞれの時代で)、この時間は保証しないとOSにならないよな」
> って基準はあって、OS会社は自社基準を元にOS作ってる筈ですよね。
そんなものはない。UIが応答なし表示になる時間などは各種タイムアウト値があるが、
どんなスケジューリングでも最大で(タイムスライス×同等以上の優先度を持つスレッド数)は待たされる。
スレッド数は特に制限がない上にドライバ等より高い優先度を設定している奴も居るので実質ほぼ無制限。

>>873
UIが応答なし表示になる時間とか提示したって、それに意味は無いでしょ?
少し似てるが目的に沿わない値が存在してるからといって、目的に沿う値が存在する保障にはならないよ。
>>847の質問は実は>>848で決着している。>>849で言うような目安の話なら>>859と>>860と>>868。
そして明確な値として上限を求めると、特に上限がないという結論に至り>>848の回答に戻ってくる。
0875デフォルトの名無しさん2014/11/26(水) 10:00:25.57ID:HsSUcqtY
>> って基準はあって、OS会社は自社基準を元にOS作ってる筈ですよね。
>そんなものはない。
>スレッド数は特に制限がない上にドライバ等より高い優先度を設定している奴も居るので実質ほぼ無制限。

スレッド数の限界での時間が知りたいんじゃないんですよね。

想定しているプロセス数で、この程度の遅延が発生したら、
Windowsに障害が発生していると判断して、再起動を要求するというアプリが作りたいだけで。
で、正常に動作しているときは、その応答時間でバーコードとキーボードの判定したいっていうのもあるけど。

で、その上で、
>そんなものはない
と断言されるのが、
M$の中の人とか本だとか、ソースがあるならありがたいソースになるんだけど、
そうじゃないなら、
「リアルタイムOSじゃなければ保障は無い」って何スレも続くってこの上なく、、、(略
0876デフォルトの名無しさん2014/11/26(水) 10:12:11.64ID:fGJ/K96a
なんだバーコード野郎か
0877デフォルトの名無しさん2014/11/26(水) 10:20:55.05ID:dntXOEXZ
>>875
アホなアプリの暴走次第では想定しているプロセス数とか一瞬で突破するしそんな前提そもそも設定できない。
Windows自体に障害が発生してスケジューリングに障害が出るとかそれこそその場でハングアップしてオシマイ。
つか、実行までの時間の保証されたタスクを無制限に作れる訳が無いのは小学生でも分かるだろ。
時間の保障を得る仕組みが有るとしたらそれは有限の権利を確保して行うもの以外あり得ない。
一般のスレッドがそんな権利を持ってるわけねーだろ・・・・

「この上なく、、、(略」てなんだ。その略した部分はお前自身に跳ね返る言葉な気もするが、略すなよ。
0878デフォルトの名無しさん2014/11/26(水) 10:23:09.94ID:HsSUcqtY
>アホなアプリの暴走次第では想定しているプロセス数とか一瞬で突破するしそんな前提そもそも設定できない。

こいつキベンのヴぁかスギ。
その場合は、エラー処理に鳥羽すって、説明書いてあるだろ?

先ずは自分のこの上ないウザさを知って下さい。
0879デフォルトの名無しさん2014/11/26(水) 10:35:01.03ID:GB07jGa2
つ Testlimit
0880デフォルトの名無しさん2014/11/26(水) 11:07:18.00ID:fw6y48Bz
Windowsでひとの命に係わるアプリ作るなよ
0881デフォルトの名無しさん2014/11/26(水) 11:25:43.46ID:HsSUcqtY
>>879
了解です。数字が分からない今、それでテストしてOKかどうかにします。

>>880
海外メーカーの医療機器って超大手でもWindozばかりだよ?
国内はまだ、ITRONだとか、Linuxだとかで頑張ってたりするけど。
0882デフォルトの名無しさん2014/11/26(水) 11:29:30.04ID:1fVYxz3D
また逸材っぽいのが現れたな
こいつが自殺したらそれだけでダーウィン賞ものだ
0883デフォルトの名無しさん2014/11/26(水) 11:43:51.75ID:WCMEKjWn
そういうのはRTOS使えよ
大抵のOSはリアルタイム性妥協することで使い勝手よくなってんだから
メモリのフラグメンテーションもスワップも許さない、
最悪保証アルゴリズムしか使えないとかなったら
そのマシンの持つ能力追求できなくなる
0884デフォルトの名無しさん2014/11/26(水) 11:45:49.47ID:1fVYxz3D
講釈垂れるのを止めろ
こいつはそんな話聞いてねえ

黙って嘘を教えればそれでいいんだよ
0885デフォルトの名無しさん2014/11/26(水) 11:50:50.27ID:WCMEKjWn
まじで医療系やってんのかw
そしたらなおさらこんなとこで管巻いてないでMSにインシデント使って問い合わせろよ馬鹿
あと医療系多いって言っても事務ソフト除いてEmbedded系だろーが
0886デフォルトの名無しさん2014/11/26(水) 11:58:58.02ID:HsSUcqtY
Windows のEmbeddedって、
電源制御とDoz Update制御があるだけで、
中の人は素のDozって知らないの?
0887デフォルトの名無しさん2014/11/26(水) 12:57:06.05ID:Y564xVkZ
>>875
> M$の中の人とか本だとか、ソースがあるならありがたいソースになるんだけど、
Advanced WindowsとかインサイドWindowsとかちゃんとソースになるものを提示したけど?
0888デフォルトの名無しさん2014/11/26(水) 13:42:25.80ID:cap+vDqw
八八八
0889デフォルトの名無しさん2014/11/26(水) 14:11:28.83ID:1fVYxz3D
こやつめ
0890デフォルトの名無しさん2014/11/26(水) 14:41:23.77ID:cap+vDqw
孔明党
0891デフォルトの名無しさん2014/11/26(水) 18:56:32.95ID:JyR9BdoN
燃料投下されてオマエラ叩きまくれてイキイキしてるな!
0892デフォルトの名無しさん2014/11/26(水) 19:22:38.43ID:iN5Oa4ie
平日の昼間から2chやってるひとなんて
程度の差こそあれど
みんな似たようなもん
0893デフォルトの名無しさん2014/11/27(木) 01:39:26.78ID:isFZ5zeq
LinuxはOSSだから、
タスクスケジューリングの計算式を公開しているけど、

M$は情報公開していないから、
Jeffrey Richterを信じるか信じないかの、宗教論争になる
翻訳間違いや誤植があるかも知れない。君は彼を信じられるか?

だから、M$に問い合わせて、金を払う人にだけ、
情報を渡すことで、商売が成立する

ユーザーには無料で使わせて、シェアを上げれば、
情報に課金できる。そういうビジネスモデル

トヨタのように、M$に金を払えば、他社と差別化できる
一方、金を払えない企業は、OSSのLinux,TRONなどを使う

一番手の企業は、金を払えばよいが、
二番手以降は同じ戦略(模倣戦略)を取ると、
一番手の企業を、絶対に抜けなくなる

だから、二番手以降の企業は差別化するか、
下位企業同士で組んで、規模で一番手を上回るか、の二択になる

そうすると、一番手の企業は不利になるため、
模倣戦略(同質化)をとるか、下位同盟を分断してくる
0894デフォルトの名無しさん2014/11/27(木) 09:13:22.33ID:JBCoFq0U
ああ、OSS向けにVisualStudioを提供するのも
依存させて課金を釣り上げる布石なのだな…
0895デフォルトの名無しさん2014/11/27(木) 09:20:09.98ID:VJNtlw/h
今まで使えてたAPIがいきなり動作が変わって動かなくなり

それでホクホクできるところも・・・
0896デフォルトの名無しさん2014/11/27(木) 09:41:40.18ID:oxY/sHU5
近隣の同業他店舗が潰れた頃に
有料化とか値上げが待ってます
0897デフォルトの名無しさん2014/11/27(木) 12:17:56.04ID:2Ncs6uO+
M$って表記もなんだかな
化石みたいだな
0898デフォルトの名無しさん2014/11/27(木) 13:06:48.00ID:Ywl31YqK
リストビューの一部のサブアイテムに改行マークだけ表示したく、
symbolフォントをCreateFontして、カスタムドローでフォント変更を
したけど表示されない。

文字コード0x21〜0x7e辺りなら表示できるけど、改行の0xbfは何かに化けて
しまうんですが、対処方法はないでしょうか?

VCプロジェクトの文字セットを、マルチバイトからunicodeにすれば
いいのかと思いましたが、他の部分の修正量が多いので試していません。
これをやらなければいけないのでしたら、改行マークを諦めます。
0899デフォルトの名無しさん2014/11/27(木) 14:02:30.25ID:QnPNQERt
たぶんそれが原因
hogeW() で呼べば全部 unicode 化する必要はないよ
0900デフォルトの名無しさん2014/11/27(木) 15:49:05.11ID:Ywl31YqK
>>899
リストビューへの追加部分を適当に置き換えてみましたが、変化無しでした。

item.pszText = "\xbf";
SendMessageW(hwnd, LVM_SETITEM, 0, (LPARAM)&item);

詳細は省いてますが、pszTextメンバへの設定方法がよく分かりません。
MultiByteToWideCharで変換してからセットしてみましたが変化無し
(と言うか化けた文字が2文字になった)で、そもそもpszTextがLPTSTR
なので、ちと違う気がしてます。
0901デフォルトの名無しさん2014/11/27(木) 16:06:00.59ID:uAA7J2EP
Symbolフォントの0xBFじゃなくて↓のUnicodeじゃダメなん?

http://ja.wikipedia.org/wiki/リターン記号
0902デフォルトの名無しさん2014/11/27(木) 16:31:43.46ID:QnPNQERt
リストビューはおいといて TextOut とかでも文字化けするんだろうか
0903デフォルトの名無しさん2014/11/27(木) 16:35:52.55ID:QnPNQERt
あと
item.pszText = "\x00\xbf";
SendMessageW(hwnd, LVM_SETITEM, 0, (LPARAM)&item);
これでもだめなん?
0904デフォルトの名無しさん2014/11/27(木) 16:47:32.99ID:TFRDTSMw
>>898
LVM_SETITEMWを使えば化けずに表示できたよ。
LVITEMW構造体を使う必要がある事に注意。
ただ、今時はフォントグリフに頼るより>>901の方が正解かと。
0905デフォルトの名無しさん2014/11/27(木) 16:57:43.58ID:QnPNQERt
>>904
おめでとう
0906デフォルトの名無しさん2014/11/27(木) 17:33:33.68ID:Ywl31YqK
>>901-905
Symbol使わず無事出来ました!
ありがとうございます!
0907デフォルトの名無しさん2014/11/27(木) 19:06:01.26ID:YHce4I76
>>893-894
リアルタイムOSでもないのにそんな情報にどれだけの価値が有るのかと。考えすぎだ。
ていうかそのビジネスモデルはRedHatとかOracleの方が遥かにアコギにやってるぞ。

>>897
ブラウザ戦争の頃みたいな感じだよな…そういや結局IEは有料化しなかったね。
0908デフォルトの名無しさん2014/11/27(木) 19:17:29.72ID:OFYoVO0e
いつの間にか「知らないならレスしないで下さい。ウザイだけです」とか言われなくなったな
一体ここ4年くらいは何だったのか
0909デフォルトの名無しさん2014/11/27(木) 20:31:09.94ID:xreX/0Al
IDが出るようになった効果は絶大だった、ってことかな
0910デフォルトの名無しさん2014/11/27(木) 23:36:02.34ID:VtF/vuC1
>>901
リターン記号とキャリッジ・リターンってUnificationされてないんだ…
0911デフォルトの名無しさん2014/11/28(金) 06:12:47.09ID:31zpnlyJ
犬=デル男=無職Winは、やっぱり朝鮮人だったの?
0912デフォルトの名無しさん2014/11/28(金) 07:05:24.07ID:TSlIY7mw
API動かなくしてホクホクできるから
よそけなすのもお上手だね
0913デフォルトの名無しさん2014/11/28(金) 09:26:12.05ID:VuGhkjac
>>907
Win32APIスレで、
>リアルタイム、リアルタイム
って普段使ってないのに書いておいて、
他スレに偉そうに
>価値が有るのかと。考えすぎだ。
って書いてて、



キンモー
0914デフォルトの名無しさん2014/11/28(金) 09:39:50.99ID:31zpnlyJ
>>913
わからないならレスしないでください
ウザイだけです
0915デフォルトの名無しさん2014/11/28(金) 09:48:52.28ID:9oizjiTR
よほど脳天に来たんだろうよ
リアルでな
0916デフォルトの名無しさん2014/11/28(金) 10:33:21.34ID:31zpnlyJ
Linuxを使えない可哀そうな人たちのスレ
0917デフォルトの名無しさん2014/11/28(金) 17:23:55.57ID:4Q/0sUIl
>>916
残念ながらプログラマはまだ当分「Linuxを使えない人達」の相手をしなきゃならんのだよ
0918デフォルトの名無しさん2014/11/28(金) 17:33:59.62ID:dYLaj0CI
知らずにlinux使ってる人は大勢いる
0919デフォルトの名無しさん2014/11/28(金) 18:05:10.44ID:zx6BULH3
そりゃ自分に必要ない知識まで覚える意義は無いからな
0920デフォルトの名無しさん2014/11/28(金) 18:26:08.56ID:8PxrEodW
実際問題、これからWindowsプログラミングを覚える価値があるのか…
0921デフォルトの名無しさん2014/11/28(金) 18:30:58.81ID:B+LAgn9V
無駄ではない
0922デフォルトの名無しさん2014/11/28(金) 20:01:04.35ID:8rikF3wo
Webアプリだけとかスマホアプリだけ書く気なら必要ないんだろう。
PC向けでソフト書くなら結局Windowsユーザを無視できなくなるが…
.NETがあるから「Win32API」を覚える価値があるかと言われると微妙かも。
Win32APIにしかない操作でアンマネージド云々とか、
それは面倒だから全部ネイティブとか、そういう時くらい?

>>913
意味分かってないんだねっていうか他スレって何だ、変な幻覚でも見てるのか。
>>916
そういう派生も有るが、本家はLinuxもリアルタイムOSでは無いがな。
0923デフォルトの名無しさん2014/11/28(金) 20:38:48.22ID:73F3XtIX
リアルタイムを誤解していないか
24時間以内に、というのもリアルタイム
0924デフォルトの名無しさん2014/11/28(金) 20:50:08.80ID:8rikF3wo
>>923
リアルタイムOSって分類にはそれなりにまともな定義が有るんだよ。

http://e-words.jp/w/E383AAE382A2E383ABE382BFE382A4E383A0OS.html
http://japan.renesas.com/products/tools/os/child/os_overview_child.jsp
http://codezine.jp/article/detail/3702
http://ja.wikipedia.org/wiki/%E3%83%AA%E3%82%A2%E3%83%AB%E3%82%BF%E3%82%A4%E3%83%A0%E3%82%AA%E3%83%9A%E3%83%AC%E3%83%BC%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0
0925デフォルトの名無しさん2014/11/28(金) 20:59:31.12ID:BzFzdO6B
いい加減スレチ
0926デフォルトの名無しさん2014/11/28(金) 21:02:07.62ID:9oizjiTR
もっとやるべき
0927デフォルトの名無しさん2014/11/28(金) 21:19:16.46ID:31zpnlyJ
次スレは立てるな。
2chの貴重なリソースが無駄になる。
0928デフォルトの名無しさん2014/11/28(金) 21:28:46.63ID:NjfSkzBZ
必要とする人が立てて、必要とする人が書きにくるんだから、そのままでいいよ
いらないと思う人は見に来なければいいだけなんだから
0929デフォルトの名無しさん2014/11/28(金) 22:02:37.73ID:icrJvefw
2chに貴重なものなど存在しない(キリッ
0930デフォルトの名無しさん2014/11/29(土) 00:32:35.42ID:VwCgtTmZ
Linux板の基地外が、デル男を追っかけて、
この板にまで、荒らしに来るとはw

デル男の悪口ばかり言ってる、この基地外、
名誉き損で逮捕されたらよいのに
0931デフォルトの名無しさん2014/11/29(土) 07:09:50.56ID:7Vg39hrL
LinuxがあるのにわざわざWindowsを使う理由がわからない
0932デフォルトの名無しさん2014/11/29(土) 07:36:36.10ID:pwVAqDB9
Free/Net/Open BSD があるのにわざわざ Linux を使う理由がわからない
0933デフォルトの名無しさん2014/11/29(土) 08:55:09.72ID:Yl4TmGMj
そうね
0934デフォルトの名無しさん2014/11/29(土) 12:15:44.28ID:7Vg39hrL
犬厨って 林 檎 と 白 い お 父 さ ん 犬 が大好きなアフォン厨の事ですよ。
でもアッポレOSはWindowsと違って恐怖のiesys.exeとAgentBase.exeに感染しないから、
身に覚えのない誤認逮捕をされないんだお(笑)
0935デフォルトの名無しさん2014/11/29(土) 12:17:01.52ID:zyNBmUjN
自分でプログラムの改造しないのならソースのありなしなんて関係なくない?
逆汗して読めばいいだけじゃん
読む手間がCの10〜100倍かかる程度の違いしかない
DOSの時代はみんな読んでたじゃないか、いつから横着者ばかりになったんだろ
ネットの情報にうつつを抜かして本来やるべきことをやってないだよな俺もだけど
0936デフォルトの名無しさん2014/11/29(土) 12:50:26.21ID:Osjvz5eZ
>>935
DOS時代だったらシステムコールをおさえるくらいだから10〜100倍かも知れんけど
いまは1万倍超えない?w 俺の技術力が低いのは認めるが
0937デフォルトの名無しさん2014/11/29(土) 13:49:19.16ID:tRG4REso
CPUの命令かなり増えたし機構もかなり複雑になったし昔と比べて読むの大変じゃね?
0938デフォルトの名無しさん2014/11/29(土) 14:52:37.50ID:vgic/WS8
OSの領域に手は出してないが、クライアントの解析は
今の方が遥かに楽だな。
使える道具が当時とは比べ物にならないくらい強力。

コンパイラが吐いたコードは定型文の塊だから、
逆汗ツールがAPIコールの引数まで全部拾ってきてくれるし。
0939デフォルトの名無しさん2014/11/29(土) 14:52:42.16ID:5ryFjzxG
C++のクラス触ってるコードなんて逆アセして理解できるのん?
0940デフォルトの名無しさん2014/11/29(土) 15:24:25.40ID:HRpCUWwf
朝飯前の小便前ですわ
0941デフォルトの名無しさん2014/11/29(土) 19:05:53.56ID:H7nG43zB
>>939
virtualがポインタ経由になるから、ピンポイントで調べるなら逆汗でなくトレースのほうが楽
0942デフォルトの名無しさん2014/11/30(日) 04:23:50.25ID:B2VgLsUL
機械的にやってるから、読むのは大変ですよ、昔と比べて
0943デフォルトの名無しさん2014/11/30(日) 10:37:42.80ID:dOLRu3ch
結果さえ合っていればOK的な最適化を突き進んでいるからな。
0944デフォルトの名無しさん2014/11/30(日) 10:42:22.03ID:nOpZCiXZ
なるほど
0945デフォルトの名無しさん2014/12/01(月) 08:25:57.74ID:guOSxUv1
誕生日が嬉しくなくなるのは何歳からです(でした)か?
0946デフォルトの名無しさん2014/12/01(月) 15:10:39.33ID:q7F8Vl1K
参議院・県知事の被選挙権が30歳以上だからそこまでは嬉しい
0947デフォルトの名無しさん2014/12/01(月) 15:18:53.71ID:k/0vFpdT
立候補するひと?
0948片山博文MZ次期CEO ◆T6xkBnTXz7B0 2014/12/02(火) 20:00:59.02ID:LvbUvIOq
ダイアログではないウインドウで、TAB移動を実現するスマートな方法知りませんか?
0949デフォルトの名無しさん2014/12/02(火) 20:06:51.64ID:vKs1f4b2
スマートな方法などありません
0950片山博文MZ次期CEO ◆T6xkBnTXz7B0 2014/12/02(火) 20:17:19.36ID:LvbUvIOq
子ウインドウの乗った普通のウインドウをダイアログみたいにコントロール間TAB移動できるようにする方法はありますか?
0951デフォルトの名無しさん2014/12/02(火) 20:35:43.16ID:LvbUvIOq
ダイアログベースで検索
0952片山博文MZ次期CEO ◆T6xkBnTXz7B0 2014/12/02(火) 20:59:47.81ID:LvbUvIOq
IsDialogDialogはダイアログ以外でも使えるんだ。
知らなかった!
0953デフォルトの名無しさん2014/12/02(火) 21:37:09.47ID:bMZolPlQ
APIとほぼ関係ない質問なんですが、
自分で作ったソフトのテストってどんな感じでやってますか

公開する/しない、バグったらやばい/そうでもない、とかで変わるかと思いますが

めんどくさいんだよなあ、テスト
0954デフォルトの名無しさん2014/12/02(火) 21:43:27.14ID:LvbUvIOq
>>953
チェックが必要な箇所にassertを書いてひととおりデバッグ実行。
単体テストを書いて機能ごとにテスト。
0955デフォルトの名無しさん2014/12/03(水) 07:37:00.35ID:a2eWT4Vm
>>953
他のプロジェクトでも使えそうな機能は最初から分離しておいて機能毎にテスト
プロジェクト特有の動作は機能追加毎にテスト
競合する機能の場合はそのグループの機能が全てできてから再テスト

でよくね?
0956デフォルトの名無しさん2014/12/03(水) 09:58:20.33ID:3JSuoVx9
仕様決まってればそれに合わせてテスト書くだけだけど
仕様考えながら色々やってるときにテスト書くのも良い
0957デフォルトの名無しさん2014/12/03(水) 11:50:55.80ID:VV6MKLd8
GUIだとテストしづらいのよね カバレッジくらいか
フォーム系でデータ壊したりする箇所は目を血走らせるけど

ユーザーマニュアルをしっかり書くとテストすべき項目もはっきりしてくる
0958デフォルトの名無しさん2014/12/03(水) 19:48:34.25ID:3JSuoVx9
「テストは客にやらせればいい」(マイクロソフト)
0959デフォルトの名無しさん2014/12/03(水) 21:21:18.98ID:Nc/E++OR
「激しく同意」(おれ)
09609532014/12/03(水) 21:36:09.80ID:CoU55iMQ
>>954-958
みなさんテストフレームワークとか使って、ちゃんと単体テストされてるんですね
本当はテスト書いた方がいいんだろうなと思いつつ、
単体はデバッガ使って限界値系のテストだけにしようかなと

全体のテストはユースケースでも整理して、それごとにデータ作ってやろうかな
AをやってからBをやるとバグるとかは、めんどくさいからユーザーからのエラー報告を待つとしよう
0961デフォルトの名無しさん2014/12/03(水) 23:27:42.17ID:WRoQBeep
わかる。部分的にテストできるように作ってくと、ラッパーというかアダプターとういかが増えるんだよね。
どうも上手くできないな
0962デフォルトの名無しさん2014/12/03(水) 23:33:19.58ID:fPpGIPtv
望んだ仕様になってるかどうかは客にしか判らんからなあ
0963デフォルトの名無しさん2014/12/04(木) 14:09:41.02ID:FtZQow+Z
http://pg.blog.jp/
0964デフォルトの名無しさん2014/12/05(金) 00:38:48.81ID:sLsoQ3P2
他のプロセスのHeapWalk()の使い方をご存じの方は居ないでしょうか?

Heap32ListFirst(),Heap32First(),Heap32Next()等を使っては他の
ターゲットプロセスのヒープのアドレスやらサイズは確認出来たんですが、
ちょっと不安定なもので、そこでHeapWalk()を使ってみたいのですが、
デフォルトプロセス(自己プロセス?)での使用方法しか見つけられず
困ってます。
0965デフォルトの名無しさん2014/12/05(金) 00:47:34.51ID:TK9vw08w
他のプロセスでは使えないんだから当たり前

他のプロセスに潜り込んで使用することはできる
CreateRemoteThreadの使い方を知れば自ずとできるようになる
0966デフォルトの名無しさん2014/12/05(金) 00:49:22.91ID:TK9vw08w
SetWindowsHookExでもいいよ
文献はAdvancedWindowsを読め
またはググれ
0967デフォルトの名無しさん2014/12/05(金) 22:57:40.26ID:sLsoQ3P2
>>965
取っ掛かりが無かったので助かりました。
0968デフォルトの名無しさん2014/12/08(月) 21:10:59.33ID:8Z8H9bR3
IMEの変換候補リストを取得したいんだけど、Win7って
ImmGetCandidateList(ImmGetCandidateListCount)使えないの?
0969デフォルトの名無しさん2014/12/08(月) 21:36:54.39ID:idZHWDVc
>>968
IME (Input Method Editor) と Text Services Framework のアクセシビリティ
http://msdn.microsoft.com/ja-jp/library/cc421572.aspx

Text Services Framework について
http://msdn.microsoft.com/ja-jp/library/ms538047%28v=vs.85%29.aspx
0970デフォルトの名無しさん2014/12/08(月) 21:59:10.14ID:8Z8H9bR3
>>969
情報サンクス
よく読んでみる
0971デフォルトの名無しさん2014/12/09(火) 13:05:19.12ID:g1fAS7xT
OfficeIME2010は問題なく使えてるけどATOK、GoogleIMEで使えるかは知らない
0972デフォルトの名無しさん2014/12/09(火) 15:32:03.40ID:n+vQrxZr
ダイアログにDateTimePickerコントロール(プルダウンでカレンダー表示)を貼り付けて使ってますが、
プルダウン中に日付を変更したときにDTN_DATETIMECHANGEが来ます。

この際、指定した日付範囲を超えていたら警告メッセージボックスを表示したいのですが、
メッセージボックス表示の直後にDTN_DATETIMECHANGEがまた飛んできてメッセージボックスが表示、
以降ずっとメッセージボックス増殖の憂き目に遭います。

これはWinXPで確認される現象で、Win8では起こりません。Win8ではDateTimePickerのプルダウン表示が
メッセージボックス表示時に消えるためです。XPではプルダウンされたままです。

この問題を回避するため、WinXPでメッセージボックス表示のタイミングでDateTimePickerのプルダウン
を止めさせたいのですが、何か方法は無いですか?
0973デフォルトの名無しさん2014/12/09(火) 15:41:56.48ID:OycEn040
フォーカスをどこかに移せばいいんじゃね?
0974デフォルトの名無しさん2014/12/09(火) 16:06:15.85ID:y0p4ekDe
bringwindowtotop()してもフォーカスが来なかったら
メッセージボックス表示中
0975デフォルトの名無しさん2014/12/09(火) 16:45:43.53ID:n+vQrxZr
DTN_DATETIMECHANGEを処理中、SetFocusをしてもメッセージボックス表示が
優先されて解決できません。WM_NEXTDLGCTLももちろんダメ。

そもそもはDTN_DATETIMECHANGEを一旦処理終了させないとダメみたいです。
サブクラス化している場合だと、DefSubclassProcなりCallWindowProcなり
使えば解決できそうな部類ですが、ダイアログプロシージャの場合は
代替APIはないでしょうか?

これがない場合、一旦WM_APPでも投げて再処理するしか無さそうですね。
0976デフォルトの名無しさん2014/12/09(火) 16:55:48.95ID:BrhrENT4
カレンダー閉じるのは諦めて、メッセージボックスを多重表示しないようにしたら?
0977デフォルトの名無しさん2014/12/09(火) 16:58:23.57ID:n+vQrxZr
すみません。寝ぼけてました。DefDlgProcがありましたね。

しかし使い方が悪いのか、これでは解決できませんでした。(沈黙の後落ちる)

WM_APPを投げてとりあえず永久ループは回避できましたが、なぜか
DTN_DATETIMECHANGEがもう一回だけ余計に飛んできてしまって
メッセージボックス表示が2回されてしまいます。

もっとスマートな実装方法は無いものか・・・・・
0978デフォルトの名無しさん2014/12/09(火) 16:59:14.30ID:n+vQrxZr
>>976
ああ、そうか。単にフラグで多重表示制御できますね。
ありがとうございました。
0979デフォルトの名無しさん2014/12/09(火) 17:11:12.62ID:TNRufxvy
> メッセージボックス表示の直後にDTN_DATETIMECHANGEがまた飛んできて
こういうことってあるのか
大変だな
0980デフォルトの名無しさん2014/12/09(火) 17:16:29.62ID:g1fAS7xT
そもそもなんだがDateTime_SetRangeで範囲外指定できないようにしたら?
.NETでもプロパティ一発で設定できると思うんだが
0981デフォルトの名無しさん2014/12/09(火) 17:24:25.98ID:TNRufxvy
これと同じ症状かな
http://forums.codeguru.com/showthread.php?484321-DTN_DATETIMECHANGE-loop!
0982デフォルトの名無しさん2014/12/09(火) 18:31:36.52ID:n+vQrxZr
>>981
まさにその通りです。

>>980
DateTime_SetRangeというのを見つけたので、これでいけそうだと試してみました。

Win8では選択できないところは見えなくなっているので、これはこちらの方がいい感じですが、
WinXPでは選択できないもののカレンダーは見えているので、単にクリックしても無反応
なだけになってしまい、仕様を知らないユーザーからするとなんで無反応なのか
分からずバグ扱いしてきそうなUIになってしまいました。

>>976
フラグ制御してみましたが、>>977と同じような挙動になってしまいました。(メッセージボックス2回表示)
0983デフォルトの名無しさん2014/12/09(火) 18:51:35.15ID:3Aq4S10c
>>958
それは業界全体の悲願
クラウド、アプリケーションサービスは、仕様を押し付けるために推進している側面や、
テストをせずにリリースし、バグや不具合が出たら直ぐに隠せるから開発サイドが喜ぶんだよ

これをウインウインと洗脳できるまでクラウドを推進するぜ!
0984デフォルトの名無しさん2014/12/09(火) 18:59:59.99ID:1aP9Ikf9
>>982
>>>976
>フラグ制御してみましたが、>>977と同じような挙動になってしまいました。(メッセージボックス2回表示)

フラグ変更するタイミング間違ってんじゃないの?
メッセージボックス表示が原因でループしてるなら、正しくフラグ管理すればできるはずだけど。
さもなければ、メッセージループはメッセージボックス関係ないってことになる
0985デフォルトの名無しさん2014/12/09(火) 19:14:10.30ID:n+vQrxZr
>>984
そう思って色々追いかけましたが、DateTimePickerで日付を変更すると、
WinXPではDTN_DATETIMECHANGEが2回来てしまいます。
メッセージボックス云々は本質的に関係ない気がしました。

ちなみにWin8では1回しか来ません。

case IDC_DATE:
if (lpstNmHdr->code == DTN_DATETIMECHANGE && !bShowMsg) {
  // DateTimePickerから日時を取得
SendDlgItemMessage(hwnd, IDC_DATE, DTM_GETSYSTEMTIME, 0, (LPARAM)&date);

  ※ログ出力埋め込み

  if (日付判定でOK) {
何らかの処理;

// NG処理
  } else {
    bShowMsg = TRUE;
    MessageBox(hwnd, "ダメヨダメダメ", "error", MB_OK);
    日付を本日に戻す
    bShowMsg = FALSE;
  }
}

ログを出してチェックしましたが、なんで2回来るんでしょう?
MessageBoxやbShowMsgフラグを削除してももちろん変わりありません。

数ms以内の連続処理は受け付けないという処理でも入れたらいいのかな。
0986デフォルトの名無しさん2014/12/09(火) 19:44:31.71ID:QNQd8y8T
>>985
MessageBoxが表示されるのって
MessageBoxを閉じてもまた次のMessageBoxが表示されるって事?
それともMessageBox表示中に、またさらにMessageBoxが表示されてしまうって事?
ループって事は前者だと思うんだけどあってる?
0987デフォルトの名無しさん2014/12/09(火) 19:47:38.25ID:g1fAS7xT
俺ならそいうのはフォーカスに影響しないツールチップ表示する
処理継続させたいのにいちいち閉じなきゃいけないメッセージボックスはうざいしUIとしてもよくないと思う
0988デフォルトの名無しさん2014/12/09(火) 20:59:08.64ID:QNQd8y8T
Windows7でも2回送られてる感じ。
たぶんカレンダー自体の更新で1回、エディタでの更新(もしくはカレンダーを閉じる)でもう1回送られる感じ。

さて考える・・・
0989デフォルトの名無しさん2014/12/09(火) 21:08:51.57ID:TNRufxvy
>>980の方針で解決したんじゃなかったのか?どうしてもメッセージボックス出したいのか?
0990デフォルトの名無しさん2014/12/09(火) 21:21:04.62ID:h4M6D/xp
うめ
0991デフォルトの名無しさん2014/12/09(火) 21:28:17.00ID:QNQd8y8T
>>982にかいてあるやん
なぜ読まない
0992デフォルトの名無しさん2014/12/09(火) 21:41:17.22ID:QNQd8y8T
とりあえず自分なら日付を記憶しておいて
DTN_DATETIMECHANGE が来たら記憶していたものと比較
同じなら何もしない、違っていたら if (日付判定でOK) {} else {} に進むってやるかな
けど同じ日付を選択してもNGならメッセージを出したいってことは出来ないけど。
対策としては 「数秒以内は前回と同じ日付か確認し(以下略」とか。
0993デフォルトの名無しさん2014/12/09(火) 21:49:05.26ID:vrPuSZeb
MSDNフォーラムに、同様の処理を初回呼び出しフラグを使って実装した回答があったよ。
あれで良いんじゃないの?
0994デフォルトの名無しさん2014/12/09(火) 22:03:00.10ID:n+vQrxZr
>>986
素で組むと後者、これを抑制するために多重表示フラグを入れて前者、
という感じになります。

試行錯誤を繰り返しましたが、>>985のように制御した場合、
カレンダーの特定日付を選んだ場合は2回表示で治まりますが、
月を変更した場合(「<」「>」部分)だと、メッセージボックス
を表示中に後ろでどんどんカレンダーのみ切り替わって永久ループになります。

>>987
設計思想にもかかわってきますが、ツールチップは使わない方向で
作っています。フリーソフトならもっと簡潔にまとめたいと思いますが、
自分のミスで操作してるの疑わない人が相手だったりしますので、
あえて面倒な確認メッセージ表示にしています。

>>988
Win7でも2回ですか。情報ありがとうございます。
XPだけかな〜と漠然と思ってましたが、もうちょっと本腰入れて対応してみます。
0995デフォルトの名無しさん2014/12/09(火) 22:04:52.85ID:n+vQrxZr
>>992
まさに今その日付判定を行ってみたところですが、>>994の現象になってしまいました。
裏でころころ変わる日付がどんどん送られてしまいました。

>>993
探してみます。
0996デフォルトの名無しさん2014/12/09(火) 23:09:19.49ID:/gO7PMz6
次スレ頼むわ
0997デフォルトの名無しさん2014/12/09(火) 23:10:19.85ID:TNRufxvy
>>991
あー見落としてた
スマソ
0998デフォルトの名無しさん2014/12/10(水) 02:41:31.39ID:Cx1UTlfb
うめ
0999デフォルトの名無しさん2014/12/10(水) 06:45:40.51ID:+NCizlQY
梅
1000デフォルトの名無しさん2014/12/10(水) 06:47:02.31ID:+NCizlQY
千
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。