Win32API質問箱 Build89
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2010/08/22(日) 00:16:50やさしいお兄さんやHなお姉さんたちが答えてくれるかも。
「知らないならレスしないで下さい。ウザイだけです。 」なんて言わないでねっ!
■過去スレ
Win32API質問箱 Build88
http://hibari.2ch.net/test/read.cgi/tech/1274949734/
■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。英語版( http://msdn.microsoft.com/en-us/library/ )の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで
- Win32API質問箱 wiki
http://wiki.livedoor.jp/program1/d/FrontPage
NullPointerExceptionを「ぬるぽ」と呼ぶスレ5
http://hibari.2ch.net/test/read.cgi/tech/1269551404/
00021
2010/08/22(日) 00:17:400003デフォルトの名無しさん
2010/08/22(日) 01:02:590004デフォルトの名無しさん
2010/08/22(日) 03:08:07普通はスクロールバーのMAX値を
PAGE値より大きくすると、スクロールバーが表示され、
PAGE値より小さくすると、スクロールバーは非表示になるよな?
ところがMAX値を変更してこれを連続的に切り替えると、表示されるべきときにも1回おきに表示されないんだよ。
ちょっとみんなも試してみてくれ。
これって俺が悪いのかスクロールバーのバグなのか?
0005デフォルトの名無しさん
2010/08/22(日) 08:52:130006デフォルトの名無しさん
2010/08/22(日) 10:41:58前スレ読んだけど面白かったw
0007デフォルトの名無しさん
2010/08/22(日) 11:44:130008デフォルトの名無しさん
2010/08/22(日) 14:43:06>藤原氏の「Cプログラミング診断室」を熟読していまして、きれいで洗練さ>れたコードを目指しています
ttp://www.pro.or.jp/~fuji/mybooks/cdiag/
↑
Windowsプログラミングでこのサイトのことを真に受けて大丈夫?
0009デフォルトの名無しさん
2010/08/22(日) 14:46:210010デフォルトの名無しさん
2010/08/22(日) 15:30:56ttp://msdn.microsoft.com/ja-jp/library/
0011デフォルトの名無しさん
2010/08/22(日) 15:31:430012デフォルトの名無しさん
2010/08/22(日) 16:00:06午前中ずーっと落ちてんだが、やっと復旧したようだな、屈強なMicrosoft 鯖でも落ちることがあるんだ
0013デフォルトの名無しさん
2010/08/22(日) 16:11:12その鯖はlinuxかwindowsか?
0014デフォルトの名無しさん
2010/08/22(日) 16:19:32アク禁食らってただけとかw
まさかね
>>13
IISだろやっぱし
0015デフォルトの名無しさん
2010/08/22(日) 16:23:490016デフォルトの名無しさん
2010/08/22(日) 19:07:18Win32 APIとか以前のレベルの、
まさにstaticの意味を分かっていると自称してるような人間を晒しあげてる本だよ
0017デフォルトの名無しさん
2010/08/22(日) 19:28:57言語によってstaticの意味はかなり違う件
例えば極めて大雑把に言って
C:「綿密な調査無しで修正すると大きな影響を及ぼす可能性がある」
Java:「単にclass-uniqであり特定のinstanceに依存しない」
VC++とかだと文法が微妙に普通のCと違うところがあるから
Windowsで当てはまるかどうかは知らないが
0018デフォルトの名無しさん
2010/08/22(日) 19:45:570019デフォルトの名無しさん
2010/08/22(日) 19:46:030020デフォルトの名無しさん
2010/08/22(日) 19:52:310021デフォルトの名無しさん
2010/08/22(日) 19:54:560022デフォルトの名無しさん
2010/08/22(日) 19:57:55Cでは2つの意味しかないだろ
0023デフォルトの名無しさん
2010/08/22(日) 20:19:460024デフォルトの名無しさん
2010/08/22(日) 22:01:1900254
2010/08/22(日) 22:05:08static bool bLarge = true;
bLarge = !bLarge;
SCROLLINFO si = { sizeof(SCROLLINFO) };
si.fMask = SIF_RANGE | SIF_PAGE; // SIF_DISABLENOSCROLLなし
si.nMax = bLarge ? 100 : 10;
si.nPage = 20;
SetScrollInfo(hWnd, SB_VERT, &si);
左クリックしてsi.nMaxが100のときでもスクロールバーが表示されない。なぜ?
0026デフォルトの名無しさん
2010/08/22(日) 22:12:350027デフォルトの名無しさん
2010/08/22(日) 22:36:19ソース見直せ
00284
2010/08/22(日) 22:36:55WM_SIZEのハンドラで、ページサイズを設定してたんですが
どうやらスクロールバーってのは「ページサイズだけ」を単独で設定するんじゃなく、
範囲といっしょに(SIF_RANGE | SIF_PAGE)設定してやらないといけない仕様のようですね。
これをSIF_PAGEだけ設定したのが原因のようです。
大して調べもせずに安易に頼ってしまって申し訳ない。
しかし、みんな知ってた?MSDNにも書いてないしなぁ・・・
0029デフォルトの名無しさん
2010/08/22(日) 22:38:100030デフォルトの名無しさん
2010/08/22(日) 22:39:030031デフォルトの名無しさん
2010/08/22(日) 22:44:37static bool x=false;
::MessageBox(NULL,"注意",x?"あほ":"まぬけ",MB_OK);
x=!x;
break;
マウス左ボタンを押す度に
あほ、まぬけ
と交互にメッセージが出る?
0032デフォルトの名無しさん
2010/08/22(日) 22:46:5700334
2010/08/22(日) 22:47:1600344
2010/08/22(日) 22:54:18つまり範囲をセットする時にもページサイズもいっしょにセットしてやらないといけないみたいです。
こういうことって書籍とかにあまり書いて無いよね?俺が探すの下手なだけ・・・?
0035デフォルトの名無しさん
2010/08/22(日) 23:04:200037デフォルトの名無しさん
2010/08/22(日) 23:27:59ブロック作れば可能
0038デフォルトの名無しさん
2010/08/23(月) 00:31:580039デフォルトの名無しさん
2010/08/23(月) 01:17:220040デフォルトの名無しさん
2010/08/23(月) 01:27:35サンクス
0041デフォルトの名無しさん
2010/08/23(月) 02:56:00サイズを変更した際に、スクロールバーのレンジを変更した後、
その結果によって、スクロールバーが出たり消えたりしますが
(SCROLLINFOのnMin,nMax,nPageの関係で。)、
この「出た」「消えた」を得られる方法はありませんか?
この「出た」「消えた」で、「縦スクロールが消えれば横サイズが増える」と言った具合に
ダイアログのクライアントサイズが変わってしまいますが、
それによるWM_SIZEがこないので、
「出た」「消えた」が発生した後、もう一度サイズを変えないと、
ダイアログ内のコントロールの並び替えがうまくできません。
稚拙な質問ですが、ご教授願います。
0042デフォルトの名無しさん
2010/08/23(月) 03:09:520043デフォルトの名無しさん
2010/08/23(月) 12:57:230044デフォルトの名無しさん
2010/08/23(月) 19:39:48どっかのメモリに配列になっていないのか
0045デフォルトの名無しさん
2010/08/23(月) 19:42:26DIB
0046デフォルトの名無しさん
2010/08/23(月) 19:42:41004741
2010/08/24(火) 05:12:40すみません、自己解決しました。
WM_SIZEで縦スクロールのレンジ変更した後、ウィンドウの幅が変わったら
もう一度WM_SIZEしようとしていたのですが、
PostMessageじゃなくて、SendMessageしていたため、
SendMessageが返ってきた後、もう一度古いサイズでコントロールの並び替えしていたのが原因でした。
static以前でお恥ずかしいでス…
0048デフォルトの名無しさん
2010/08/24(火) 15:13:52struct S
union U{
wchar_t X[4]; //1
char X[4]; //2
};
みたいな感じでなぜ無理なんでしょうか?2で1が再定義されますとエラーがでる
ちなみにTCHAR使えよって思うかもしれませんが、
ちょっと説明長くなるので省略しますが、使えない状況にあります。
さらに、どちらかで統一して書けばいいだろと思われるかもしれませんが、
これもいろいろあって、統一は絶対にできない状態です
つまり、
0049デフォルトの名無しさん
2010/08/24(火) 15:15:58struct S{
union U{
wchar_t X[4]; //1 ←ココ
char X[4]; //2 ←ココ
};
union U{
wchar_t y[4];
int i;
};
}
みたいな感じでなぜ無理なんでしょうか?2で1が再定義されますとエラーがでるのです
ちなみにTCHAR使えよって思うかもしれませんが、
ちょっと説明長くなるので省略しますが、使えない状況にあります。
さらに、どちらかで統一して書けばいいだろと思われるかもしれませんが、
これもいろいろあって、統一は絶対にできない状態です
つまり、状況に合わせて自動的にwchar_tとcharが切り替わえれないと困るのです
教えていただけますかい?
0050デフォルトの名無しさん
2010/08/24(火) 15:17:28wchar_t X[4]; //1 ←ココ
char X[4]; //2 ←ココ
ってwwwww
すまそ
wchar_t X[4]; //1 ←ココ
char Z[4]; //2 ←ココ
にしなきゃ無理に決まってるw
0051デフォルトの名無しさん
2010/08/24(火) 15:28:060052デフォルトの名無しさん
2010/08/24(火) 15:29:050053デフォルトの名無しさん
2010/08/24(火) 19:05:120054デフォルトの名無しさん
2010/08/24(火) 21:38:200055デフォルトの名無しさん
2010/08/25(水) 00:46:370056デフォルトの名無しさん
2010/08/25(水) 01:47:31対象アプリが対策をしたようで、対象アプリがアクティブになるとkeybd_eventも受け付けなくなってしまったようです。
対象アプリがノンアクティブのときはmouse_eventでマウスカーソルの移動ができるのですがアクティブにするとダメなようです。
どうしたらいいでしょうか。
0057デフォルトの名無しさん
2010/08/25(水) 01:51:580058デフォルトの名無しさん
2010/08/25(水) 01:58:440059デフォルトの名無しさん
2010/08/25(水) 02:02:220060デフォルトの名無しさん
2010/08/25(水) 02:17:02BANされた方がいいかもね
0061デフォルトの名無しさん
2010/08/25(水) 07:32:24馬鹿の考えることは微塵も理解できない。
0062デフォルトの名無しさん
2010/08/25(水) 07:50:050063デフォルトの名無しさん
2010/08/25(水) 09:27:09仮想入力デバイスドライバでも作れ
0064デフォルトの名無しさん
2010/08/25(水) 10:50:10無事生きてるんだけど救出に4ヶ月掛かるって言ってた
穴から食料送るのは良いとして糞はどうやって処理すんだ
0065デフォルトの名無しさん
2010/08/25(水) 11:09:12まあ、実際問題は糞より尿なんだけどな
糞はなんとか隅っこに積んで置けるけど尿からは逃げようがない
0066デフォルトの名無しさん
2010/08/25(水) 11:17:16その中に尿を足せば桶
0067デフォルトの名無しさん
2010/08/25(水) 11:47:36知りたいのは、
・新たにウインドウが作成され、タスクバーに表示された
・ウインドウが閉じられ、タスクバーから消えた
・ウインドウの名前が変更され、タスクバーにも反映された
の3つです。
お願いします。
0068デフォルトの名無しさん
2010/08/25(水) 11:51:060069デフォルトの名無しさん
2010/08/25(水) 12:06:36ttp://www.microsoft.com/japan/technet/security/advisory/2269637.mspx
この問題は、外部ライブラリをロードする際に、
アプリケーションが不適格なパスを通すことが原因で起こります。
マイクロソフトは開発者向けにガイダンス
「MSDN の記事 Dynamic-Link Library Security (英語情報)」
ttp://msdn.microsoft.com/ja-jp/library/ff919712(VS.85).aspx
を公開し、この種の脆弱性を回避するために利用可能な
アプリケーション プログラミングインターフェイスの
正しい使用方法についてお知らせしました。
0070デフォルトの名無しさん
2010/08/25(水) 21:03:171万件前後を子ノードに追加したら糞重くてどうにかしたい
一応LPSTR_TEXTCALLBACKにしてTVM_INSERTITEMしてみてるけど
0071デフォルトの名無しさん
2010/08/25(水) 23:15:41フック
>>70
WM_SETREDRAW
0072デフォルトの名無しさん
2010/08/26(木) 03:36:44この外枠と内側を同じ色にした四角を描くAPIがあれば教えてください
0073デフォルトの名無しさん
2010/08/26(木) 08:07:340074デフォルトの名無しさん
2010/08/26(木) 09:34:580075デフォルトの名無しさん
2010/08/26(木) 11:51:190077デフォルトの名無しさん
2010/08/26(木) 17:14:33ごめんね
0078デフォルトの名無しさん
2010/08/26(木) 18:32:11真面目にググッた訳じゃないけど、エンドユーザー側の使い方しか出てこなくて、APIの宣言が分からなくて。
0079デフォルトの名無しさん
2010/08/26(木) 18:34:30質問の続きならレス番書いてくれないか
0080デフォルトの名無しさん
2010/08/26(木) 19:13:18マルチしね
0081デフォルトの名無しさん
2010/08/26(木) 19:14:14死ぬのは>>78だ
0082デフォルトの名無しさん
2010/08/26(木) 19:14:510083デフォルトの名無しさん
2010/08/26(木) 19:20:490084デフォルトの名無しさん
2010/08/26(木) 19:24:12死ね
0085デフォルトの名無しさん
2010/08/26(木) 19:27:14他人を説得するとき、ぼくが必要だと思うのは、相手の言葉、相手の理屈をつかって話せないとだめだということだ。
自分の理屈は自分と同じ知識をもっているひとにしか通用しない。
相手が理解できない理屈をふりかざす人間が多すぎる。相手の知識、常識をつかって理屈をくみたてないと意味がない
0086デフォルトの名無しさん
2010/08/26(木) 19:38:52WaitableTimerを使うと、指定した時間に起こすことができる。
0087デフォルトの名無しさん
2010/08/26(木) 19:40:24たしか画面の外にマウスカーソルを持っていくとスリープするツールがあったような
0088デフォルトの名無しさん
2010/08/26(木) 20:10:30OSによる
タスクバーの部分がタブだったりツールバーだったりする
ググりゃ出てくる
explorer.exeにDLLを注入できればあとはいじり放題
0089デフォルトの名無しさん
2010/08/26(木) 20:17:140090デフォルトの名無しさん
2010/08/26(木) 20:19:17ttp://support.microsoft.com/kb/2389418/
0091デフォルトの名無しさん
2010/08/26(木) 20:28:30無い。
0092デフォルトの名無しさん
2010/08/26(木) 22:11:46あるだろ。
しかもすでに正解が書いてあるのに、どれだけ馬鹿なんだよ。
0093デフォルトの名無しさん
2010/08/26(木) 23:05:04無いよ。
馬鹿は発言するな。
0094デフォルトの名無しさん
2010/08/27(金) 00:02:090095デフォルトの名無しさん
2010/08/27(金) 01:44:36ttp://msdn.microsoft.com/ja-jp/library/cc429355.aspx
fResume
タイマがシグナル状態になったときにシステムを中断電源節約モードから元に戻すかどうかを指定します。
0096デフォルトの名無しさん
2010/08/27(金) 05:33:52>>> dueTime = c_longlong(100000000L)
>>> windll.kernel32.SetWaitableTimer(windll.kernel32.CreateWaitableTimerW(0,True,0),pointer(dueTime),0,0,0,True)
1
0098デフォルトの名無しさん
2010/08/27(金) 06:20:40ttp://www.youtube.com/watch?v=cX3ekzSD6vQ
ttp://www.nicovideo.jp/watch/sm11881726
>>> import ctypes
>>> ctypes.windll.PowrProf.SetSuspendState(0, 1, 0)
1
ttp://d.hatena.ne.jp/aniotahosyu/
0099デフォルトの名無しさん
2010/08/27(金) 07:04:54タイマーを設定してから、休止モードなりスリープなりさせると、
その時間で復帰するんだよ。
無知なんだから黙っていればいいのに。
0100デフォルトの名無しさん
2010/08/27(金) 07:19:10スリープモードに入ると、何かアプリにメッセージ来るの?
WM_ENDSSESION見たい感じで。WinVistaとか無いから調べられん
0101デフォルトの名無しさん
2010/08/27(金) 07:42:19メッセージへの応答でスリープを拒否れないとか、
メッセージを送らずにスリープに入るのは不可能になったとかの違いはあるけど。
0102デフォルトの名無しさん
2010/08/27(金) 08:46:350103デフォルトの名無しさん
2010/08/27(金) 11:34:55現在ログインしているユーザがいるかの判定を行いたいのですが
どのようにすればいいでしょうか?
0104デフォルトの名無しさん
2010/08/27(金) 11:45:120105デフォルトの名無しさん
2010/08/27(金) 11:49:52しかし、プログラム名に依存するとはいえ、こんな基本的な API の呼び出しで例外が発生するとなると
Windows Vista って大丈夫なのかちょっと不安になります。
0106デフォルトの名無しさん
2010/08/27(金) 12:35:42悪い、XPだとできた
NT4で試したときにうまくいかなかくてな・・・
0107デフォルトの名無しさん
2010/08/27(金) 12:59:400108デフォルトの名無しさん
2010/08/27(金) 18:11:24GetCursorInfo()して取得したhCursorをLoadCursor(NULL,IDC_NO)と比較しても、反応してくれません。
0109デフォルトの名無しさん
2010/08/27(金) 19:51:57スリープとかは基本的にOSにとって想定外の事柄だったはず。
0110デフォルトの名無しさん
2010/08/27(金) 19:59:51直前にフラグをセットしても、実際にSleepが呼び出されるまでは起きている状態なので
この状態でスレッドを起こす処理が入ってしまい色々と問題が起きてしまってます。
Sleepからの解除はコールバック設定出来るのですが…
0111デフォルトの名無しさん
2010/08/27(金) 20:14:45寝てる側はイベント待機させていおいて 起こす側はSetEventするだけで済むようにしたり
共有フラグ使うならクリティカルセクション使うとか
0112デフォルトの名無しさん
2010/08/27(金) 21:56:19原理的に不可能
チェック関数から戻った直後にスレッド切り替えが発生して
そのスレッドが起きたらどうなるの?
原理的に不可能なはずのIsBadReadPtrとかは存在してて
deprecateされてるのはご愛嬌
0113デフォルトの名無しさん
2010/08/27(金) 22:00:28OLEドラッグアンドドロップならIDropTarget::DragOverから戻ってきたときにpdwEffectを見る
OLEドラッグアンドドロップでない場合とか自分がdrop sourceではなく
カーソルの状態を横から調べたいという場合は公開された方法はなさげ
0114デフォルトの名無しさん
2010/08/29(日) 10:57:18お前は10年以上前の知識で無い無い連呼してたのか・・・
公害級の老害だな
0115デフォルトの名無しさん
2010/08/29(日) 16:20:130116デフォルトの名無しさん
2010/08/29(日) 16:22:230117デフォルトの名無しさん
2010/08/29(日) 21:03:40ttp://msdn.microsoft.com/en-us/library/aa373235(v=VS.85).aspx
0118デフォルトの名無しさん
2010/08/29(日) 21:21:47Hoge(&H)|
---------
Foo(&F) |
---------
という二つの項目をもったメニューを動的に
------------------
Hoge(&H) →|Bar(&B)|
------------------
Foo(&F) |
---------
と作り替えるにはどうすればいいのでしょうか?
CMenu menu;
menu.LoadMenu(MAKEINTRESOURCE(IDR_POPUPMENU));
menu.GetSubMenu(0).InsertMenu(0, MF_STRING | MF_ENABLED | MF_BYPOSITION, 111, L"Bar(&B)");
とすると
---------
Bar(&B) |
---------
Hoge(&H)|
---------
Foo(&F) |
---------
となってしまいましたorz
0119デフォルトの名無しさん
2010/08/29(日) 21:42:010120デフォルトの名無しさん
2010/08/29(日) 22:11:550121デフォルトの名無しさん
2010/08/30(月) 21:11:35それは文字列変更するだけじゃんw
0122デフォルトの名無しさん
2010/08/30(月) 21:25:520123デフォルトの名無しさん
2010/08/30(月) 22:00:13Hogeをサブメニューにして下位にBarを入れたいんか。 "→"はそういうつもりだったか!
大いなる勘違い、すまんww
0124デフォルトの名無しさん
2010/08/30(月) 23:14:440125デフォルトの名無しさん
2010/08/30(月) 23:50:59そのハンドルからGetSubMenuでインデックス指定してサブメニューのハンドル取って
そのハンドルからサブメニューのHoge(&H)をSetMenuItemInfoでサブメニューに変更、そのときにCreateMenuでメニューを突っ込んでおく
で、そのメニューにInsertMenuItemでBar(&B)の項目を追加すると出来たけど、メンドイ
0126デフォルトの名無しさん
2010/08/31(火) 12:38:16C++のサーバー側では
hPipe = CreateNamedPipe(TEXT("\\\\.\\pipe\\Server"),
PIPE_ACCESS_INBOUND, // クライアントからサーバーへ
PIPE_TYPE_MESSAGE | PIPE_READMODE_MESSAGE | // メッセージとしてやりとり
PIPE_WAIT, // 受信するまで制御を返さない
1, // パイプに対する最大インスタンス
CONFIG_PIPE_SERVER_MAXOUTBUFFER, // 出力バッファ
CONFIG_PIPE_SERVER_MAXINBUFFER, // 入力バッファ
0, // タイムアウト
NULL);
で作り、クライアントは
hFile = CreateFile(PIPE_NAME, GENERIC_WRITE, 0,
0, OPEN_EXISTING, 0, 0);
でやっていますが、当初クライアント側で一つの関数内で実験的に
CreateFile→パイプへの書き込み処理→CloseHandle
という流れで作っていたのですが、最初の一回は通信成功するものの、二回目以降動きませんでした。
試行錯誤した結果、最初の一回目のCreateFileは成功してますが、二回目以降のCreateFileに失敗しています。
サーバー側の問題では無い事を確認するために、その関数内で
CreateFile→CloseHandle→CreateFile→CloseHandle
という流れにしてみると、やはり余計なコードも処理も入ってないにもかかわらず
二回目のCreateFileに失敗します。ちゃんとCloseHandleしているのになぜ失敗するのでしょうか?
0127126
2010/08/31(火) 12:49:42CreateFile→パイプへの書き込み処理→CloseHandle
に直してから、次の操作をしてみました。
�@サーバー立ち上げ
�Aクライアント立ち上げ
�Bクライアントでパイプ通信→成功
�Cクライアント終了
�Dクライアント再立ち上げでパイプ通信→CreateFile失敗
サーバーを立ち上げ直さないと、二回目のCreateFileに失敗します。
0128デフォルトの名無しさん
2010/08/31(火) 13:04:000129126
2010/08/31(火) 13:28:37アドバイスありがとう御座います。
ERROR_PIPE_BUSY 231 0x000000E7 すべてのパイプ インスタンスがビジーです。
このエラーがでました。
パイプのハンドルの開放や再接続に思った以上に時間がかかるのか、
なにか手順が欠けているのか不明で引き続き調べています。
0130126
2010/08/31(火) 14:32:12サーバー側でのパイプ作成時のインスタンス数を3くらいに増やしても結果は同じでした。
(つながったままのが最大2個残っても再度CreateFile出来るかと思った)
時間が思った以上にかかるのかと思い、一回目の通信と二回目の通信に一分くらい開けても
結果は同じでした。さすがにこれ以上長いのはあり得ない様な気がします。
自分が参考にしたサイトでは使われてなかったサーバー側のdisconnectNamedPipeを一回通信のたびに
実行しても戻り値を見ると失敗しており、結果も変わりませんでした。
そもそもクライアント側のCloseHandleは戻り値を見ると成功しています。
関数内でClosehandleとCreateFileを挟まずに連続でWritefileとシグナルイベント発生のみをすると
正常に複数回通信できます。
ただ、プログラム開始時のみCreateFileして終了時にclosehandleするようにすれば部分的には解決しますが、
本質的に理解出来ないままになる上に、クライアントの再起動後に接続出来なくなってしまいます。
原因が想像つく方おられませんでしょうか?
0131デフォルトの名無しさん
2010/08/31(火) 14:38:500132デフォルトの名無しさん
2010/08/31(火) 14:43:210133126
2010/08/31(火) 14:53:00一応このサイトを参考にしています。
クライアント側はC#なので少し内容が違ってますが、動きの基本は同じです。
0134126
2010/08/31(火) 15:18:20通信一回ごとにDisconnectNamedPipeとCloseHandleを行い、
必然的に必要になってくるCreateNamedPipeを通信一回ごとに作り直せば動きます。
名前付きパイプというのはこういうものなんでしょうか?
クライアントとの接続確立一回に対して、サーバーもパイプを一回ずつ作っていく物なんでしょうか?
サーバーは一度作っておけば、何度でもクライアントとつなぎ直せると思ってたのですが、
間違いでしょうか?
0135デフォルトの名無しさん
2010/08/31(火) 16:07:150136131
2010/08/31(火) 16:07:24こんな感じでどうかな。
client
CreateFile(pNamePipe, GENERIC_WRITE, FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
mode = PIPE_READMODE_MESSAGE| PIPE_WAIT;
SetNamedPipeHandleState(hPipe, &mode, NULL, NULL);
WriteFile(hPipe, pMessage, length, &bytesWrite, NULL);
CloseHandle(hPipe);
0137デフォルトの名無しさん
2010/08/31(火) 16:41:40CreateNamedPipe→ConnectNamedPipe→ReadFile→DisconnectNamedPipe→ConnectNamedPipeに戻ってループ
0138126
2010/08/31(火) 16:46:44パイプのハンドルはサーバー側しか分からず、クライアント側はパイプの名前で指定して、
ファイルハンドルを取得し、WriteFileの第一引数はそのファイルハンドルになり、
SetNamedPipeHandleStateの第一引数に入れられるものが分からないのですが、
ファイルハンドルとパイプのハンドルは同じ物でしょうか?
一応やってみるとプログラムに例外が発生してフリーズしました。
0139デフォルトの名無しさん
2010/08/31(火) 17:00:53一応やってみるとプログラムに例外が発生してフリーズしました。
一応やってみるとプログラムに例外が発生してフリーズしました。
一応やってみるとプログラムに例外が発生してフリーズしました。
一応やってみるとプログラムに例外が発生してフリーズしました。
0140126
2010/08/31(火) 17:00:56分からない事だらけで想像でしかありませんが、DisconnectNamedPipeがサーバー側からの切断、
クライアント側はファイルハンドルのclosehandleで切断になるのかなと想像してます。
んでクライアント側から切断したあと、ConnectNamedPipeでまたないとひょっとしたら
クライアントのCreateFileで成功しないのかもしれない、つまりそれが当たりかもしれないとも思いつつ、
引数がなんか面倒そうなのと、眠気が限界なので起きてから試そうと思います。
いろいろアドバイスくださった方々ありがとうございました。
0141131
2010/08/31(火) 17:11:17disconnect a pipe handle from its previous client
before the handle can be connected to another client by
using the ConnectNamedPipe function.
0142デフォルトの名無しさん
2010/08/31(火) 23:36:50もしありましたら教えて下さい。
0143126
2010/09/01(水) 09:32:34猫でもわかるのサイトと変えたのはシグナルによるタイミング同期ではなく、
サーバー側でConnectNamedPipeを実行。これによりクライアントがCreateFileするまで処理が止まります。
そして情報のやり取りが終った跡、DisconnectNamedPipe。
ここで全ての原因の秘密仕様として接続をConncectNamedPipeでやって置かなければ
ERROR_INVALID_HANDLEがでてDisconnectが成功しない。
その結果クライアントと繋がったままのような状態になり、クライアントの二回目の接続で失敗します。
参考にしたサイトではConnectNamedPipeを使用しておらず、ググって似たような事が起こってる質問に対しては
「Connectしないで何故一回でも成功しているのか、そっちのほうが不思議だ」などの書き込みもあり、
正規の方法ではないのかもしれません。
少なくとも二回目の接続を通常の手段で行うことが不可能な作りなのではないかと思いました。
0144デフォルトの名無しさん
2010/09/01(水) 10:18:120145デフォルトの名無しさん
2010/09/01(水) 10:40:27MSDN読めとしかいいようがないw
0146デフォルトの名無しさん
2010/09/01(水) 10:46:270148デフォルトの名無しさん
2010/09/01(水) 12:50:330149デフォルトの名無しさん
2010/09/01(水) 12:51:09Unicodeの依存文字使われたときってどう管理すればいいのかな?
普通にUnicodeとして書き出すと、ファイルから編集出来ないけど、アプリで管理できればおkなの?
0150デフォルトの名無しさん
2010/09/01(水) 13:00:4595でも使ってんの?
0151デフォルトの名無しさん
2010/09/01(水) 13:06:39notepad.exeでもないし
emacsかな
0152デフォルトの名無しさん
2010/09/01(水) 13:17:550153デフォルトの名無しさん
2010/09/01(水) 14:15:14MultiByteToWideChar()
0154デフォルトの名無しさん
2010/09/01(水) 14:43:57WriteFile( hFile, szBuffer, lstrlen(szBuffer) << 1, &dwWriteSize, NULL );
こんな感じで書き出すと、"S A M P L E"ってなるけど
0155デフォルトの名無しさん
2010/09/01(水) 14:51:170156デフォルトの名無しさん
2010/09/01(水) 15:35:13マジサンクス!所で、Unicodeで出力したテキストって98でも普通に表示できるの?
98ってW系の関数なかったような
0157デフォルトの名無しさん
2010/09/01(水) 15:44:150158デフォルトの名無しさん
2010/09/01(水) 15:57:070159デフォルトの名無しさん
2010/09/01(水) 15:58:22Unicodeフォントを用意すれば表示は出来る
0160デフォルトの名無しさん
2010/09/01(水) 18:21:530161142
2010/09/01(水) 19:17:39それでは、同じくWH_CALLWNDPROCフックにて、例えば、全てのウインドウのWM_CLOSEを受け取る場合、
何所でサブクラス化を行い、解除すればよいのでしょうか。
因みに、ここでの「全てのウインドウ」はタスクバーに表示されるようなものです。
0162デフォルトの名無しさん
2010/09/01(水) 19:23:251個1個サブクラス化してまわればいいだろ
0163デフォルトの名無しさん
2010/09/01(水) 21:25:51おつむがガラパゴス文字コード依存なんだろ
0164デフォルトの名無しさん
2010/09/01(水) 21:27:040165デフォルトの名無しさん
2010/09/01(水) 21:38:560166デフォルトの名無しさん
2010/09/01(水) 22:01:540167デフォルトの名無しさん
2010/09/02(木) 14:26:51ではどのように表現すべきでしょうか?
0168デフォルトの名無しさん
2010/09/02(木) 23:00:510169142
2010/09/04(土) 16:33:49ウインドウハンドルを取得する方法が分かりません。
ご教授お願いします。
0170デフォルトの名無しさん
2010/09/04(土) 19:43:540171デフォルトの名無しさん
2010/09/05(日) 01:00:53は成功するんだけど、
CreateDialog(hInstance, TEXT("IDD_DIALOG1"), hwnd, DlgProc);
が失敗するのは何故?
http://msdn.microsoft.com/ja-jp/library/cc410690.aspxには二番目の引数のlpTemplateには
「ダイアログボックステンプレートの名前を指定する NULL で終わる文字列へのポインタか〜」
って記述があるんだけど
0172デフォルトの名無しさん
2010/09/05(日) 01:02:280173デフォルトの名無しさん
2010/09/05(日) 09:46:07MAKEINTRESOURCEで成功するってことは IDD_DIALOG1 は整数値のリソース識別子なんだろ
そして "IDD_DIALOG1" っていう文字列でのリソース識別子は存在しない → 失敗する
0174デフォルトの名無しさん
2010/09/05(日) 13:42:44IDD_DIALOG1
ってやらないで、
"IDD_DIALOG1"
ってやればTEXTの方使える。
両者は別物なので両方作ったりもできるよ
0175デフォルトの名無しさん
2010/09/06(月) 16:26:33どういうスタイルで作ればいいでしょうか?
WS_BORDER | WS_POPUPだと、同じ形だけどDwmExtendFrameIntoClientAreaをしたときに
フレームだけ描画されてウインドウ内が完全に透明になってしまいます
0176デフォルトの名無しさん
2010/09/07(火) 11:49:570177デフォルトの名無しさん
2010/09/07(火) 17:13:050178デフォルトの名無しさん
2010/09/07(火) 17:25:370179デフォルトの名無しさん
2010/09/07(火) 17:57:55時刻をポーリングする以外に何かAPIでコールバックしてくれるようなものってありますか?
0180デフォルトの名無しさん
2010/09/07(火) 18:20:09waitable timerを使えば時間になったら起こしてもらうことができる。
0181デフォルトの名無しさん
2010/09/07(火) 18:33:36期待した動作ができそうです。ありがとうございました
0182デフォルトの名無しさん
2010/09/08(水) 01:08:19親ウィンドウをデスクトップにするスタイルじゃなくてか?
0183デフォルトの名無しさん
2010/09/08(水) 01:19:01case WM_VSCROLLで分岐処理して、ScrollWindow()、UpdateWindow()と関数を使うまでは、分かるのですが、その後、WM_PAINTに飛んでから、どう書いていったらよいのでしょうか?
猫でもわかる、を参考にしているのですが、そこでは、画面全体の画像をクライアント領域に貼る、という話の流れなので、そうではなくてごく普通のスクロールをさせるにはどうすればよいのでしょうか。
0184デフォルトの名無しさん
2010/09/08(水) 01:23:290185デフォルトの名無しさん
2010/09/08(水) 01:37:32表示されるべき内容をそのまま描画するだけ。
ぶっちゃけ表示領域を全更新してしまってもいいが、
それだとScrollWindowの意味があまり無くなってしまうから、
通常はスクロールの結果無効領域になった箇所を描画する。
ちなみに、スクロールに応じてSetWindow/ViewOrgExしてくれるような
サービスは一切無いので全て自分で管理するように。
0186デフォルトの名無しさん
2010/09/08(水) 01:54:350187デフォルトの名無しさん
2010/09/08(水) 10:05:070188デフォルトの名無しさん
2010/09/08(水) 14:40:07WM_PAINTではビットマップ貼るだけ
描画に必要な情報だけ保持
0189デフォルトの名無しさん
2010/09/08(水) 14:50:04それダブルバッファリング
0190デフォルトの名無しさん
2010/09/08(水) 15:01:420191デフォルトの名無しさん
2010/09/08(水) 18:52:540192デフォルトの名無しさん
2010/09/08(水) 20:35:450193デフォルトの名無しさん
2010/09/08(水) 21:33:290194デフォルトの名無しさん
2010/09/08(水) 21:47:280195デフォルトの名無しさん
2010/09/09(木) 00:56:500196デフォルトの名無しさん
2010/09/09(木) 01:13:150197デフォルトの名無しさん
2010/09/09(木) 19:12:090198デフォルトの名無しさん
2010/09/10(金) 01:12:540199デフォルトの名無しさん
2010/09/10(金) 07:18:070200デフォルトの名無しさん
2010/09/10(金) 08:59:090201デフォルトの名無しさん
2010/09/10(金) 21:58:440202デフォルトの名無しさん
2010/09/11(土) 01:33:19ひぃ!今何時?
ふぅ.. まだ平気あと5分
へっ?急がなきゃ
ホッ!トミルクでGO! 1日は断然万全
0203デフォルトの名無しさん
2010/09/11(土) 11:39:18[OK]
0204183
2010/09/11(土) 13:26:18ブラウザを作っていて、単純に(ソケットで受信したHTTPの)文字列を描画したいのです。今のままだと、クライアント領域にはすべての文字列が描画されていないので。
>>185
ありがとうございます。
「表示されるべき内容」って僕の場合だと文字列のことですかね・・・?
いまいちこのあたりの背景がわかっていないで質問しています。
スクロールって自分で文字列を少しづつ描画させていくのでしょうか? それとも関数を使えば、スクロールすると勝手に文字列が見えてくるものなんでしょうか。
0205デフォルトの名無しさん
2010/09/11(土) 14:26:010206デフォルトの名無しさん
2010/09/11(土) 15:14:58お前はエディットコントロールでも貼り付けておけ
0207デフォルトの名無しさん
2010/09/11(土) 16:20:51デフォルトプロシージャに処理させずに自分で書き直した方が速いと思うけどね。
0208デフォルトの名無しさん
2010/09/11(土) 16:29:160209デフォルトの名無しさん
2010/09/11(土) 16:53:450210デフォルトの名無しさん
2010/09/11(土) 17:41:43おまいはなにかをいわんとしてなにもいっておらんのう
0211デフォルトの名無しさん
2010/09/11(土) 17:46:210212デフォルトの名無しさん
2010/09/11(土) 18:02:570213デフォルトの名無しさん
2010/09/12(日) 00:14:430214デフォルトの名無しさん
2010/09/12(日) 17:28:22どんなときですか?
0215デフォルトの名無しさん
2010/09/12(日) 17:31:12ちょっと笑った
0216デフォルトの名無しさん
2010/09/12(日) 18:14:180217デフォルトの名無しさん
2010/09/12(日) 18:16:330218デフォルトの名無しさん
2010/09/12(日) 18:24:540219デフォルトの名無しさん
2010/09/12(日) 18:34:260220デフォルトの名無しさん
2010/09/12(日) 20:06:23っていうか、マルチスレッド当たり前のこのご時世にその質問はないわ……
0221デフォルトの名無しさん
2010/09/12(日) 20:08:020222デフォルトの名無しさん
2010/09/12(日) 20:09:320223デフォルトの名無しさん
2010/09/12(日) 20:14:360224デフォルトの名無しさん
2010/09/12(日) 20:28:491イベント
2ミューテクス
3クリティカルセクション
4セマフォ
5砂時計カーソル
異論は認める
0225デフォルトの名無しさん
2010/09/12(日) 20:31:36http://s-project.appspot.com/notes_vc.html
かつてRitcherのWin32 Q&Aに載ってたOPTEXみたいなもの。そういやあれも
最初のバージョンにはバグがあったな。マルチスレッドの同期はそれだけ難しいってこと
0226デフォルトの名無しさん
2010/09/12(日) 21:14:48iPad
iPod
すべてまとめると
iPhoge
で桶
0227デフォルトの名無しさん
2010/09/16(木) 12:21:54入力された文字列やコントロール幅、フォントに応じて高さを自動的に変えたい
のですが、
何か良い方法はありませんでしょうか。
エディットボックスのデバイスコンテキストと描画領域をコピーして、
そこへDrawTextで文字列を書き、戻り値を取得する方法を考えたのですが、
うまくできません…
0228デフォルトの名無しさん
2010/09/16(木) 17:41:040229デフォルトの名無しさん
2010/09/16(木) 19:17:56なんとなくDCにフォントを選択していない予感がする。
0230デフォルトの名無しさん
2010/09/16(木) 20:09:50どのようにすればよいでしょうか?もちろん、起動時にUACのダイアログを表示します。
起動されるプログラムはマニフェストを付加していません。
0231デフォルトの名無しさん
2010/09/16(木) 20:15:080232デフォルトの名無しさん
2010/09/16(木) 20:16:22試したけど起動する
0233227
2010/09/17(金) 01:49:53それ最初にやらかしましたw
横に同じ条件で実際にDrawText実行して、すぐに気づきましたが…
結局エディットコントロールのサイズを取得するときに
EM_GETRECTメッセージ使わずに、GetClientRect使っていたために
ズレが発生していたのが原因で自己解決しました。
DrawText関数と、DT_CALCRECTフラグの組み合わせでうまくいきました。
スタティックコントロールだと、GetClientRect使わないとナンですけどね。。
0234230
2010/09/17(金) 09:43:22ありがとうございます。 今から試してみますm(_ _)m
0235デフォルトの名無しさん
2010/09/18(土) 02:31:56AutoSize的なコトを実現する上手い方法はありませんか?
チェックボックスのクライアント領域から、フォーカス枠のつく文字列の描かれる部分の領域を
計算できなくて困っています。
OBM_CHECKBOXESでチェックボックスのアイコンのサイズを得て、
そこからフォーカス枠2px分と、枠とチェックボックスの間5px分、
そして文字列の領域の横幅よりも広ければ、問題なく描画される"だろう"と言うところまではわかるのですが、
その文字列の領域がクライアント領域からどれだけずれているかを、
確かに求める方法がわかりません。
0236デフォルトの名無しさん
2010/09/18(土) 02:43:53sizerでも使えよ
拘る意味がない
0238デフォルトの名無しさん
2010/09/18(土) 08:06:420239デフォルトの名無しさん
2010/09/19(日) 01:00:150240デフォルトの名無しさん
2010/09/19(日) 01:09:49出てくるようなウィンドウネームが拾えるのですが
サービスに登録して動作させると
SYSTEM AGENT COM WINDOWといった見たことの無い
ウィンドウネームが帰ってきます。
EnumWindows
OpenInputDesktopやOpenDesktopを使ってEnumDesktopWindows
も試してみましたが結果は同じでした。
サービスに登録して動かす場合から、見えているウィンドウ名を
取得するにはどうすればよいのでしょうか。
0241デフォルトの名無しさん
2010/09/19(日) 01:43:21ttp://msdn.microsoft.com/ja-jp/windows/dd871151.aspx
0242240
2010/09/19(日) 02:13:14ありがとうございます。
セッション1と0と言う事で見えないとの理解でよいでしょうか。
XP・7の互換性を考えながらと言う点はさておき、
使用OSがXPなので見えても良い様に思い
OpenDesktop("default"・・・・
OpenDesktop("winsta0\default"・・・・
ともしてみましたが結果変わらずでした。。
どうも、勘違いか設定が違うのでしょうね。
「サービスはユーザに見えないデスクトップ上で動いている」
との助言よりもう少しデスクトップの指定方法を考えて見ます。
・・・違うデスクトップの感知は出来ないなんてないですよね(汗
0243240
2010/09/19(日) 02:35:10すいません。やっと意味が分かりました。。
たとえOpenDesktop("winsta0\default"としても
説明:既存のデスクトップのハンドルを取得します。
なので無駄なのですね。。。
ちょっと指定方法を考えます。ありがとうございます。
0244デフォルトの名無しさん
2010/09/19(日) 02:49:40サービスのプロパティで
「デスクトップとの対話を許可」
のチェックボックスはどうなってる?
0245デフォルトの名無しさん
2010/09/19(日) 03:54:15SetThreadDesktop
ハンドルを取得しただけじゃ何も起こるわけないだろ
0246デフォルトの名無しさん
2010/09/19(日) 13:02:41ほうが良いですか?
0247デフォルトの名無しさん
2010/09/19(日) 13:10:200248デフォルトの名無しさん
2010/09/19(日) 13:13:010249デフォルトの名無しさん
2010/09/19(日) 13:15:21そしてマネージスレッドとアンマネージスレッドは混在させるべきでないから
無理に覚えなくていい
0250デフォルトの名無しさん
2010/09/19(日) 13:18:08while(1)
{
if(flag){
flag = 0;
main()
}
else{
flag = 1;
thread_func();
}
}
0251デフォルトの名無しさん
2010/09/19(日) 13:30:08そうですか。
APIを使って勉強する場合、.NETでは学べない何か利点はありますか?
0252デフォルトの名無しさん
2010/09/19(日) 13:32:200253デフォルトの名無しさん
2010/09/19(日) 13:42:28C#で勉強します。
0254デフォルトの名無しさん
2010/09/19(日) 13:44:530255デフォルトの名無しさん
2010/09/19(日) 13:45:370256デフォルトの名無しさん
2010/09/19(日) 14:32:280257デフォルトの名無しさん
2010/09/19(日) 18:07:25今からは .NET が主流になるの?
0258デフォルトの名無しさん
2010/09/19(日) 18:15:56もちろんそれだけじゃなくて機能はいろいろ追加されてるけど
0259デフォルトの名無しさん
2010/09/19(日) 18:43:26EnumDesktopWindowsはだめだっけ?
0260デフォルトの名無しさん
2010/09/19(日) 20:14:48どうやってきれいにしたらいいでしょうか
0261デフォルトの名無しさん
2010/09/19(日) 20:27:340262デフォルトの名無しさん
2010/09/20(月) 00:22:28なるほど、サンクス
2つ目の質問についてはどうなのだろう?
0263デフォルトの名無しさん
2010/09/20(月) 00:47:40ジャンルによる
処理速度が必要なものはWin32API
開発速度が必要なものは.Net
0264デフォルトの名無しさん
2010/09/20(月) 00:58:42おぉ、分かりやすい回答ありがとう
.NETは一段階はさむから処理速度が Win32API に劣るが、開発が簡単というわけか
0265235
2010/09/20(月) 00:58:58文字領域から、GetWindowRectにあたる大きさを測れないといけないので、
目的と手段が逆転してしまいます…
>>238
やっぱそれしかないッスか…
どんな環境でも、この値が同じならいいんですけどねぇ
0266デフォルトの名無しさん
2010/09/20(月) 01:01:390267デフォルトの名無しさん
2010/09/20(月) 02:04:28いわゆるWIN32APIは使わない
KeInitializeMutexとかZwSetEventとかドライバ用のAPIを使う
0268デフォルトの名無しさん
2010/09/20(月) 02:18:27QueryPerformanceCounterはCPUクロック周波数が動的に変動する環境では使えず、
timeGetTimeは精度がPCの時計に依存するので、私の環境では12時間で1秒ほど遅れてしまいます
他にタイマーとして使えるAPIをどなたか教えていただけないでしょうか
0269デフォルトの名無しさん
2010/09/20(月) 02:21:11過去スレのどっかにURLあるはず
0270デフォルトの名無しさん
2010/09/20(月) 02:24:06先ずは、四人の中国人哲学者が四本の箸で飯を食う話を知っておいた方がいい。
0271デフォルトの名無しさん
2010/09/20(月) 03:50:25過去スレを見れる範囲で1年分探してみたのですが、
システム時刻を取得するものしか見つけられませんでした
検索キーワードだけでも教えていただけないでしょうか
0272デフォルトの名無しさん
2010/09/20(月) 04:41:200273デフォルトの名無しさん
2010/09/20(月) 05:25:02なるほど。Win32 APIますます知る必要ないな。
0274デフォルトの名無しさん
2010/09/20(月) 09:16:31どんな環境でも確実に正しい計測をしたいというなら、それは無理。
何代か前の家のPCなんか、一時間に分単位で時間がずれたりしてたしなw
0275デフォルトの名無しさん
2010/09/20(月) 10:30:510276デフォルトの名無しさん
2010/09/20(月) 12:09:13そういう問題があるからQueryPerformanceCounterは別のハードウェアカウンタ使ってCPUのクロックカウンタは使ってないよ。
時間と時刻のどっちの制度が欲しいの?
0277268
2010/09/20(月) 13:16:29それは全く考えてませんでした
確かにそれなら小さな誤差に抑えられますね
インターネット環境が必須のソフトなので今回はこれで実現できそうです
>>274
うちもOSの時計は酷くずれますが、QueryPerformanceCounterは24時間くらいの計測では目で見てわかるほどの誤差はありませんでした
確実に正確な計測は無理でしょうけど、OSの時計よりはマシな時計を持ってるんじゃないかなーと
>>276
ソースは他人のブログですが、環境によってはCPUのクロックを使用するそうです
自分の環境でもQueryPerformanceFrequencyはCPUのクロックとおぼしき数値を返します
あと欲しかったのは時間の方です
皆さん回答ありがとうございました
timeGetTime+NTPで実現してみようと思います
0278240
2010/09/20(月) 15:46:13>>259
前回はダメしたが解決しました。
教えて頂いたことを調べなおして以下を使用し解決しました。
OpenWindowStation
SetProcessWindowStation
OpenDesktop
SetThreadDesktop
ご助力頂いた方々と場を借りたことに感謝ですm(__)m
0279デフォルトの名無しさん
2010/09/20(月) 17:16:35そのブログの記事って古くないか?
QueryPerformanceCounterがCPUのクロック変動の影響受けてたのって
2006年くらいの話だと思うが。
0280デフォルトの名無しさん
2010/09/20(月) 17:31:52俺の環境じゃ検証できないから信憑性についてはアレだけど
0281デフォルトの名無しさん
2010/09/20(月) 20:48:54というのがあるらしい。
説明を読む限り精度はtimeGetTimeと同程度っぽいけど
0282デフォルトの名無しさん
2010/09/20(月) 21:22:35HALによるのかな?
QueryPerformanceFrequencyでCPUクロックぽいすうちなら信用できない。
1.193182MHzとか3.579545MHzの分周ぽかったらAPM由来のカウンタで信用するとかで判断できないか?
0283デフォルトの名無しさん
2010/09/20(月) 21:38:530284デフォルトの名無しさん
2010/09/20(月) 21:48:42こっちのほうが精度がいいのか。おいらのBIOSはどうかな?
0285デフォルトの名無しさん
2010/09/20(月) 21:50:05精度じゃなくて分解能だった
0286デフォルトの名無しさん
2010/09/20(月) 22:00:09常に2000110000 だたよ。。。アチャー
CrystalCPUID で見てEIST発動時でも変わらず
同環境のVirtualBox上のXPは常に3579545
0287デフォルトの名無しさん
2010/09/20(月) 22:00:462045781って数字が出たんだがこりゃ何じゃ?
0288デフォルトの名無しさん
2010/09/20(月) 22:10:20実時間の計測に使えるかは試した?
QueryPerformanceFrequencyで得られる値が常に一定なのは普通だと思うけど・・・
0289デフォルトの名無しさん
2010/09/20(月) 22:59:30CPUクロックが使われててかつクロック可変の環境では役に立たない
0290デフォルトの名無しさん
2010/09/21(火) 00:16:06これはAMDのドライバ提供で修正されたし、
以降のCPUが対応を放置したりするような事はないと思うのだけどなあ。
CPUドライバが更新されていないXPでないと再現しなさそう。
0291デフォルトの名無しさん
2010/09/21(火) 00:17:45MSが決めた仕様は変えられないだろ
0292デフォルトの名無しさん
2010/09/21(火) 00:30:39としか定義されていないから大丈夫だろ。
0293デフォルトの名無しさん
2010/09/21(火) 00:33:03> The frequency cannot change while the system is running.
0294デフォルトの名無しさん
2010/09/21(火) 00:46:42それはRDTSCを自分で使っていたアプリじゃねーの?
0295デフォルトの名無しさん
2010/09/21(火) 02:01:05CRT
0296デフォルトの名無しさん
2010/09/21(火) 07:54:12一応別件扱いなんじゃないかと思う。
KB895980とKB909944がそれぞれに対応するんじゃないかな。
>>293
それはQueryPerformanceFrequencyの返す値を指しているだけだから、
Counterがクロック可変でも一定の速度で刻む値を返せない理由にはならない気が。
どう実装するのかは良く判らないけど。
0297デフォルトの名無しさん
2010/09/22(水) 00:45:46理論的には確かに不可能ではなさそうだけど
実際に一定の速度で刻むように実装されてると期待できるような状況なのかな
絵に描いた餅じゃ結局使えないんで
0298デフォルトの名無しさん
2010/09/22(水) 10:01:08296 名前:いやあ名無しってほんとにいいもんですね[sage] 投稿日:2010/09/22(水) 09:32:58 発信元:221.30.178.167 [1/3]
プログラム板に書き込めないからここに書くけど、Spy++みたいにD&Dでウィンドウハンドルを得るにはどうすればいいの?
Spy++でSpy++をSpyできなくて困る。
297 名前:いやあ名無しってほんとにいいもんですね[sage] 投稿日:2010/09/22(水) 09:38:50 発信元:221.29.84.207 [2/2]
書けるけど?
298 名前:いやあ名無しってほんとにいいもんですね[sage] 投稿日:2010/09/22(水) 09:58:33 発信元:221.30.178.167 [2/3]
あ、本当だ
0299デフォルトの名無しさん
2010/09/22(水) 10:05:36胸が熱くなるな
0300デフォルトの名無しさん
2010/09/22(水) 10:07:520301デフォルトの名無しさん
2010/09/22(水) 10:12:16やだ。。。いますごく恥ずかしいです。。。
0302デフォルトの名無しさん
2010/09/22(水) 10:32:36WindowFromPoint
0303デフォルトの名無しさん
2010/09/22(水) 16:19:59どういう実装方法が一般的?
0304デフォルトの名無しさん
2010/09/22(水) 16:28:350305デフォルトの名無しさん
2010/09/22(水) 16:32:330306デフォルトの名無しさん
2010/09/22(水) 16:34:070307デフォルトの名無しさん
2010/09/22(水) 18:35:35IP出るのか
0308デフォルトの名無しさん
2010/09/22(水) 20:37:10もしかしてボタンに貼り付けるっていう考え方が間違ってる?
0309デフォルトの名無しさん
2010/09/22(水) 20:47:440310デフォルトの名無しさん
2010/09/22(水) 20:49:590311デフォルトの名無しさん
2010/09/22(水) 20:57:390312デフォルトの名無しさん
2010/09/22(水) 23:51:01レスありがとうございます
>>310さんの方法で実現することが出来ました
助かりました、感謝します
0313デフォルトの名無しさん
2010/09/23(木) 18:31:47TrackMouseEvent() を使う以外に方法はありますか?
0314デフォルトの名無しさん
2010/09/23(木) 18:34:070315デフォルトの名無しさん
2010/09/23(木) 18:49:06こんな便利なAPIがあったとは…!!
ありがとうございます
0316デフォルトの名無しさん
2010/09/24(金) 11:27:24CreateHardLinkして作った新しいリンクを消す方法ってない?
UNIXのunlink(2)相当のことをしたいのだけど
0317デフォルトの名無しさん
2010/09/24(金) 17:04:31DeleteFile
0318デフォルトの名無しさん
2010/09/24(金) 17:57:15質問の意図が伝わっていないようだ
FILE_SHARE_DELETE無しでCreateFileされているとDeleteFileはできない
iノード相当のディレクトリエントリだけを消したいのですよ
0319デフォルトの名無しさん
2010/09/24(金) 18:56:230321デフォルトの名無しさん
2010/09/24(金) 22:38:230322デフォルトの名無しさん
2010/09/25(土) 00:45:17(DeleteFileは>>319の方法で実装されている)
たぶんPOSIXサブシステムのunlinkのために存在するんだろう
0323デフォルトの名無しさん
2010/09/25(土) 14:47:470324デフォルトの名無しさん
2010/09/25(土) 16:09:130325デフォルトの名無しさん
2010/09/25(土) 17:59:470326デフォルトの名無しさん
2010/09/25(土) 18:47:28スクリーンセーバー 起動中
でぐぐれ
0327デフォルトの名無しさん
2010/09/25(土) 19:21:190328デフォルトの名無しさん
2010/09/25(土) 19:48:260329デフォルトの名無しさん
2010/09/25(土) 20:30:25ttp://www.geocities.jp/masa7251/tips/api/api00018.html
0330デフォルトの名無しさん
2010/09/25(土) 20:39:52まとめな思考のなら分かるだろうお前はまちがてるとりうことに
俺はプログラムーだから分かるんたがあまりにも非生産的だろう
0331デフォルトの名無しさん
2010/09/25(土) 20:45:550332デフォルトの名無しさん
2010/09/25(土) 20:51:340333316
2010/09/25(土) 20:52:29SetFileInformationByHandle(FileDispositionInfo)による方法:
・Handle取得時のAccessRightsにDELETEが無いとアクセス権無しで失敗
・AccessRightsにDELETEを指定するとそもそもHandleを取れない
ntdll.dll!NtDeleteFileによる方法:
・STATUS_SHARING_VIOLATIONで失敗
・別プロセスのCreateFileでFILE_SHARE_DELETEが指定されていれば成功(DeleteFileと同じ)
・undocumented.ntinternals.netにはできるようなことが書いてあるが既に古い情報なのではなかろうか
誰か実際に成功する方法を知らない?
0334デフォルトの名無しさん
2010/09/25(土) 20:54:140335デフォルトの名無しさん
2010/09/25(土) 21:05:510336デフォルトの名無しさん
2010/09/26(日) 01:42:52確保したポインタの内容を読み込むプログラムを実行していると、VC++のデバッグ出力に
x.exe の 0x001df64a で初回の例外が発生しました: 0xC0000005: 場所 0xfeeefeee を読み込み中にアクセス違反が発生しました。
という出力が頻繁に表示されるのですが、解決策はありますか?
ちなみに、スレッド1のデータ追加処理を実行している間は、フラグを立てて、
スレッド2の読み込み処理をwhile(flag) Sleep(1); のように停止させています。
0337デフォルトの名無しさん
2010/09/26(日) 01:46:410338デフォルトの名無しさん
2010/09/26(日) 01:51:12クリティカルセッションか、ミューテックスくらいかねぇー。
処理間隔空けるのもいいかもねー。
0339デフォルトの名無しさん
2010/09/26(日) 02:00:00便利なAPIですね!
ありがとうございます
0340デフォルトの名無しさん
2010/09/26(日) 02:01:06ソース張ってみ
0341デフォルトの名無しさん
2010/09/26(日) 02:10:560342デフォルトの名無しさん
2010/09/26(日) 02:25:430343デフォルトの名無しさん
2010/09/26(日) 02:36:11>スレッド2の読み込み処理をwhile(flag) Sleep(1); のように停止させています。
もし仮にそのようなロジックでするなら while(flag) よりも
read/writeそれぞれでシーケンシャルナンバーを記憶し
スレッド1でデータを追加→writeのシーケンシャルナンバーをインクリメント
スレッド2はreadのシーケンシャルナンバーがwriteのそれより小さかったら読み込み・インクリメント
にしたほうが ま だ ま し
0344336
2010/09/26(日) 02:53:01本当にありがとうございます
よくよく考えたら、1ミリ秒あればかなり処理が進んでしまってますねw
0345デフォルトの名無しさん
2010/09/26(日) 09:22:34何も対策しないで他スレッドから見ると、
flagは立っているのにデータはまだ追加されていない状態があり得るからな。
まあ、クリティカルセクションを使った時点で問題無くなったとは思うが。
0346デフォルトの名無しさん
2010/09/26(日) 17:21:12ま だ ま し とか言って無知な自分をごまかしてるわけねw
0347デフォルトの名無しさん
2010/09/26(日) 17:37:23スレッドの基礎レベルだ。勉強しなおした方が良い
0348デフォルトの名無しさん
2010/09/26(日) 17:51:08最近は、自前でクリティカルセクションを管理するよりも、
たとえばIntel TBBやVC++10のconcurret_queueみたいに、
同期処理入りのライブラリを使う方向に進んでいるように思う。
0349デフォルトの名無しさん
2010/09/26(日) 17:57:44//デスクトップのハンドルを得る
p = FindWindow("Progman", "Program Manager");
p = FindWindowEx(p, NULL, "SHELLDLL_DefView", NULL);
p = FindWindowEx(p, NULL, "SysListView32", NULL);
//デスクトップにF5のkeydownメッセージを送信
SendMessage(p,WM_KEYDOWN,VK_F5,0);
//-----------------------------------------
環境はWindowsXPproSP3 32bit VC++Express2010
エクスプローラに更新通知出したいのだけどだめだったワケワカメドンダンズオシエテケレ
0350デフォルトの名無しさん
2010/09/26(日) 18:00:360351デフォルトの名無しさん
2010/09/26(日) 18:02:360352デフォルトの名無しさん
2010/09/26(日) 18:09:51ライブラリなど共通部分でできることなんて同じ作業を等分割するくらいしかない
しかも等分割で扱えるデータなんてあまりない
0353349
2010/09/26(日) 18:14:05お手数かけました
0354デフォルトの名無しさん
2010/09/26(日) 18:38:23と、ごっちゃになる。あんまり使ったこと無いけどね。
0355デフォルトの名無しさん
2010/09/26(日) 18:43:34ポインタじゃない奴の変数をpにするのはいただけないな
0356デフォルトの名無しさん
2010/09/26(日) 18:49:59ハンドルてポインタだとおもってました。どもです。
0357デフォルトの名無しさん
2010/09/26(日) 19:01:29ポインタかもしれないしそうじゃないかもしれない。
なんだかわからないし意識してはならないそういうもの。
実際はただのテーブルのインデックスらしいが。
0358デフォルトの名無しさん
2010/09/26(日) 19:01:57マルチスレッドプログラムも書けるよ。
GoogleのGoみたいに、そういう書き方ができる言語を使ったほうが
コーディングの効率はいいだろうけどね。
0359デフォルトの名無しさん
2010/09/26(日) 19:11:42昔はポインタだったから許容範囲でしょう。
0360デフォルトの名無しさん
2010/09/26(日) 19:27:21今のところ、Cではポインタのtypedefで定義している。
C++でnullptrキーワードが導入されるけど、
ハンドルに対しても使うべきか自分の中では審議中。
0361デフォルトの名無しさん
2010/09/26(日) 20:03:26型チェック機構厳しすぎだろ
0362デフォルトの名無しさん
2010/09/26(日) 20:37:51特にそうでもない。というかどこを緩められるんだ?
0363デフォルトの名無しさん
2010/09/26(日) 23:55:46SHChangeNotify
0364デフォルトの名無しさん
2010/09/27(月) 08:23:04勝手にhageんな
0365デフォルトの名無しさん
2010/09/27(月) 11:46:47シェル操作のAPIなんて便利なものがあったんですね。全部レジストリやメッセージ経由だと思ってました。サンクス
0366デフォルトの名無しさん
2010/09/27(月) 11:53:560367デフォルトの名無しさん
2010/09/27(月) 12:03:570368デフォルトの名無しさん
2010/09/27(月) 16:14:430369デフォルトの名無しさん
2010/09/27(月) 16:14:560370デフォルトの名無しさん
2010/09/27(月) 20:19:280371デフォルトの名無しさん
2010/09/27(月) 21:57:210372デフォルトの名無しさん
2010/09/27(月) 21:58:040373デフォルトの名無しさん
2010/09/27(月) 22:06:320374デフォルトの名無しさん
2010/09/28(火) 01:02:390375デフォルトの名無しさん
2010/09/28(火) 01:17:330376デフォルトの名無しさん
2010/09/28(火) 09:00:41いいからAPI出せや
0377デフォルトの名無しさん
2010/09/28(火) 12:04:27知るAPIはありますか? 無ければ簡単に知るすべはないでしょうか?
0378デフォルトの名無しさん
2010/09/28(火) 12:16:57エレベーターがなんちゃら
0379デフォルトの名無しさん
2010/09/28(火) 13:00:40知らないならレスしないでください。ウザいだけです。
0380デフォルトの名無しさん
2010/09/28(火) 13:24:19getuser
0381デフォルトの名無しさん
2010/09/28(火) 13:34:530382デフォルトの名無しさん
2010/09/28(火) 17:55:58うおおおおおお!!!!
0383デフォルトの名無しさん
2010/09/28(火) 18:32:120384デフォルトの名無しさん
2010/09/28(火) 18:37:350385デフォルトの名無しさん
2010/09/28(火) 19:03:250386デフォルトの名無しさん
2010/09/28(火) 19:12:170387デフォルトの名無しさん
2010/09/28(火) 19:13:270388デフォルトの名無しさん
2010/09/28(火) 19:14:450389デフォルトの名無しさん
2010/09/28(火) 19:20:440390デフォルトの名無しさん
2010/09/28(火) 19:24:010391デフォルトの名無しさん
2010/09/28(火) 19:25:350392デフォルトの名無しさん
2010/09/28(火) 19:26:050393デフォルトの名無しさん
2010/09/28(火) 19:30:130394デフォルトの名無しさん
2010/09/28(火) 19:37:330395デフォルトの名無しさん
2010/09/28(火) 19:40:150396デフォルトの名無しさん
2010/09/28(火) 19:42:240397デフォルトの名無しさん
2010/09/28(火) 19:51:230398デフォルトの名無しさん
2010/09/28(火) 20:53:022chはもう死んでいる
0399デフォルトの名無しさん
2010/09/28(火) 20:55:160400デフォルトの名無しさん
2010/09/28(火) 21:13:510401デフォルトの名無しさん
2010/09/28(火) 21:17:100402デフォルトの名無しさん
2010/09/28(火) 21:21:430403デフォルトの名無しさん
2010/09/28(火) 21:24:470404デフォルトの名無しさん
2010/09/28(火) 21:25:39つ鏡
0405デフォルトの名無しさん
2010/09/28(火) 21:27:210406デフォルトの名無しさん
2010/09/28(火) 21:35:190407デフォルトの名無しさん
2010/09/29(水) 01:36:540408デフォルトの名無しさん
2010/09/29(水) 01:45:500409デフォルトの名無しさん
2010/09/29(水) 04:40:59それ、何するために存在するんだろ
0410デフォルトの名無しさん
2010/09/29(水) 07:08:270411デフォルトの名無しさん
2010/09/29(水) 07:28:26128ビット分もデータを転送するのが大変だった時代の名残。
0412デフォルトの名無しさん
2010/09/29(水) 09:22:35今度使ってみようかな
0413デフォルトの名無しさん
2010/09/29(水) 18:18:410414デフォルトの名無しさん
2010/09/29(水) 18:48:380415デフォルトの名無しさん
2010/09/29(水) 19:37:380416デフォルトの名無しさん
2010/09/29(水) 19:38:190417デフォルトの名無しさん
2010/09/29(水) 21:40:060418デフォルトの名無しさん
2010/09/29(水) 23:01:030419デフォルトの名無しさん
2010/09/29(水) 23:19:090420デフォルトの名無しさん
2010/09/29(水) 23:53:500421デフォルトの名無しさん
2010/09/29(水) 23:56:090422デフォルトの名無しさん
2010/09/29(水) 23:58:160423デフォルトの名無しさん
2010/09/30(木) 00:00:190424デフォルトの名無しさん
2010/09/30(木) 00:02:240425デフォルトの名無しさん
2010/09/30(木) 00:02:49unionなら何かエロイのは分かる
0426デフォルトの名無しさん
2010/09/30(木) 00:03:540427デフォルトの名無しさん
2010/09/30(木) 00:04:270428デフォルトの名無しさん
2010/09/30(木) 00:04:580429デフォルトの名無しさん
2010/09/30(木) 00:05:32代入してどうすんだ
0430デフォルトの名無しさん
2010/09/30(木) 00:06:060431デフォルトの名無しさん
2010/09/30(木) 00:07:070432デフォルトの名無しさん
2010/09/30(木) 00:08:510433デフォルトの名無しさん
2010/09/30(木) 00:10:170434デフォルトの名無しさん
2010/09/30(木) 00:13:25お前、いたんだ。
0435デフォルトの名無しさん
2010/09/30(木) 00:13:41このままじゃCopyRectがかわいそう
0436デフォルトの名無しさん
2010/09/30(木) 00:16:55あわてて洗濯物を捕り込む奴挙手。
0437デフォルトの名無しさん
2010/09/30(木) 03:23:540438デフォルトの名無しさん
2010/09/30(木) 03:35:260439デフォルトの名無しさん
2010/09/30(木) 04:05:04>>421
>>422
>>423
>>424
>>426
>>428
>>430
>>431
>>432
>>433
>>434
>>436
お前ファビョりすぎ
0440デフォルトの名無しさん
2010/09/30(木) 09:16:060441デフォルトの名無しさん
2010/09/30(木) 09:35:330442デフォルトの名無しさん
2010/09/30(木) 10:02:130443デフォルトの名無しさん
2010/09/30(木) 10:17:260444デフォルトの名無しさん
2010/09/30(木) 10:39:170445デフォルトの名無しさん
2010/09/30(木) 10:47:190446デフォルトの名無しさん
2010/09/30(木) 10:56:280447デフォルトの名無しさん
2010/09/30(木) 11:20:57MakeSureDirectoryPathExistsWの代わりはShCreateDirectoryExを使えと書いてあるな
0448デフォルトの名無しさん
2010/09/30(木) 12:59:30そう考えていた時期が俺にもありました。
0449デフォルトの名無しさん
2010/09/30(木) 14:17:290450デフォルトの名無しさん
2010/09/30(木) 14:30:44FreeLibraryAndExitThread 関数は、次のように実装されています。
FreeLibrary(hModule);
ExitThread(dwExitCode);
わからん・・・
0451デフォルトの名無しさん
2010/09/30(木) 14:57:12DLLにスレッドプロシージャがあった場合
FreeLibraryから帰った瞬間に落ちる
0452デフォルトの名無しさん
2010/09/30(木) 18:59:170453デフォルトの名無しさん
2010/09/30(木) 19:08:39int wmain(int, wchar_t**) や __wargvが使えなかった頃のためのAPIだからな
0454デフォルトの名無しさん
2010/09/30(木) 19:17:22自分で自分をアンロードしたいと思ったことがなかったからわからなかった。
勝手にExitThreadするとCRTのクリーンアップ処理が走らなさそうだけど
(実質)CRT使用禁止でCreateThreadとかするの?
0455デフォルトの名無しさん
2010/09/30(木) 19:36:290456デフォルトの名無しさん
2010/09/30(木) 22:26:220457デフォルトの名無しさん
2010/09/30(木) 22:28:540458デフォルトの名無しさん
2010/09/30(木) 22:30:220459デフォルトの名無しさん
2010/09/30(木) 22:36:580460デフォルトの名無しさん
2010/09/30(木) 22:39:130461デフォルトの名無しさん
2010/09/30(木) 22:45:28画面に部品を貼り付けて、ソースを生成してくれるような
ヴィジュアルエディタっていうものは、Win32APIではございませんか?
0462デフォルトの名無しさん
2010/09/30(木) 22:51:11っMFC
って言うか製品版のVCってできないっけ?
0463デフォルトの名無しさん
2010/09/30(木) 22:52:420464デフォルトの名無しさん
2010/09/30(木) 22:54:310465デフォルトの名無しさん
2010/09/30(木) 22:58:020466デフォルトの名無しさん
2010/09/30(木) 23:01:22明らかにメクラが関数命名してる
http://www.php.net/manual/ja/ref.strings.php
0467デフォルトの名無しさん
2010/09/30(木) 23:04:010468デフォルトの名無しさん
2010/09/30(木) 23:17:45ありがとうございます
製品版ならできるのですね。。。
MFCとWin32APIの違いをよくわかっておらず
とぼけたことを利いてしまっておりました。すみません
0469デフォルトの名無しさん
2010/09/30(木) 23:29:50でもC++./CLIできるんだから大丈夫だよね。
0470デフォルトの名無しさん
2010/09/30(木) 23:37:560471デフォルトの名無しさん
2010/10/01(金) 01:01:060472デフォルトの名無しさん
2010/10/01(金) 01:12:350473デフォルトの名無しさん
2010/10/01(金) 05:04:200474デフォルトの名無しさん
2010/10/01(金) 06:07:330475デフォルトの名無しさん
2010/10/01(金) 07:33:320476デフォルトの名無しさん
2010/10/01(金) 10:16:350477デフォルトの名無しさん
2010/10/01(金) 11:22:140478デフォルトの名無しさん
2010/10/01(金) 11:35:390479デフォルトの名無しさん
2010/10/01(金) 11:40:50#define DateTime_GetSystemtime(hdp, pst) (DWORD)SNDMSG(hdp, DTM_GETSYSTEMTIME, 0, (LPARAM)(pst))
#define SNDMSG ::SendMessage
http://msdn.microsoft.com/en-us/library/bb761769(VS.85).aspx
wParam Must be zero.
lParam A pointer to a SYSTEMTIME structure.
typedef struct _SYSTEMTIME {
WORD wYear;
WORD wMonth;
WORD wDayOfWeek;
WORD wDay;
WORD wHour;
WORD wMinute;
WORD wSecond;
WORD wMilliseconds;
} SYSTEMTIME, *PSYSTEMTIME, *LPSYSTEMTIME;
なので普通に対応してるよ。
内部的にというのではなく表示させたいという事であれば
DateTime_SetFormatのマクロを使って年月日時分秒のフォーマットを指定してやりゃいいよ
0480デフォルトの名無しさん
2010/10/01(金) 11:48:46後になっちゃうけど研究してみる。忙しい時間にありがと。
0481デフォルトの名無しさん
2010/10/01(金) 12:00:330482デフォルトの名無しさん
2010/10/01(金) 12:07:400483デフォルトの名無しさん
2010/10/01(金) 13:10:490484デフォルトの名無しさん
2010/10/01(金) 13:24:30ネットからもってくる以外にも方法は有る。
0485デフォルトの名無しさん
2010/10/01(金) 13:29:190486479
2010/10/01(金) 14:02:08普通に拾えるけどなぁ
case WM_INITDIALOG:
SendMessage(GetDlgItem(hwnd,IDC_DATETIMEPICKER1),DTM_SETFORMAT,NULL,(LPARAM)"yyy/MM/dd HH:mm:ss");
return FALSE;
case WM_COMMAND:
switch(LOWORD(wp)){
case IDC_BUTTON_SET
{
SYSTEMTIME st;
GetLocalTime(&st);
DateTime_SetSystemtime(GetDlgItem(hwnd,IDC_DATETIMEPICKER1),GDT_VALID,&st);
}
return FALSE;
case IDC_BUTTON_GET
{
SYSTEMTIME st;
std::stringstream ss;
DateTime_GetSystemtime(GetDlgItem(hwnd,IDC_DATETIMEPICKER1),&st);
ss << "wYear : " << st.wYear << "\n" <<
"wMonth : " << st.wMonth << "\n" <<
"wDay : " << st.wDay << "\n" <<
"wHour : " << st.wHour << "\n" <<
"wMinute : " << st.wMinute << "\n" <<
"wSecond : " << st.wSecond << "\n" <<
"wMilliseconds : " << st.wMilliseconds << std::endl;
MessageBox(NULL,ss.str().c_str(),"",MB_OK);
}
return FALSE;
0487デフォルトの名無しさん
2010/10/01(金) 14:16:550488デフォルトの名無しさん
2010/10/01(金) 14:50:280489デフォルトの名無しさん
2010/10/01(金) 15:01:560490デフォルトの名無しさん
2010/10/01(金) 15:18:040491デフォルトの名無しさん
2010/10/01(金) 15:41:290492デフォルトの名無しさん
2010/10/01(金) 16:35:240493デフォルトの名無しさん
2010/10/01(金) 19:32:010494デフォルトの名無しさん
2010/10/01(金) 19:34:170495デフォルトの名無しさん
2010/10/01(金) 19:38:200496デフォルトの名無しさん
2010/10/01(金) 19:40:27CopyRect (C) 2010
0497デフォルトの名無しさん
2010/10/01(金) 19:43:350498デフォルトの名無しさん
2010/10/01(金) 23:47:49#pragma comment(lib, "Advapi32.lib")
#include <windows.h>
#include <stdio.h>
int main() {
char buf[MAX_PATH] = "";
DWORD size = sizeof(buf);
DWORD type = 0;
LONG errcode = RegGetValueA(
HKEY_CURRENT_USER,
"Environment",
"TEMP",
RRF_RT_REG_EXPAND_SZ,
&type,
(PVOID) buf,
&size);
printf("code: %ld\n", errcode); // ERROR_INVALID_PARAMETER
printf("type: %d\n", type);
printf("size: %d\n", size);
printf("value: %s\n", buf);
return 0;
}
RRF_RT_REG_EXPAND_SZ | RRF_NOEXPAND にするとなぜか成功するんだが。
0499デフォルトの名無しさん
2010/10/02(土) 00:01:36知るのってどうすればいいの?
単純に考えると
・ボタンにフォーカスが当たってる、かつボタンのリージョン内にカーソルがある場合のWM_LBUTTONUP
・スペースキー押下
で判断すればいいと思うんだけど正しい取り方とかありますか?
あと、別の話だけどボタン上でマウスダウンしてそのまま親ウインドウまで持ってって
マウスアップすると親Windowクリックしても親ウインドウにフォーカスが行かない気がする
バグかなこれ・・
0500デフォルトの名無しさん
2010/10/02(土) 00:04:38バグじゃなかったボタンからフォーカス外れないだけだった
0501デフォルトの名無しさん
2010/10/02(土) 00:33:200502デフォルトの名無しさん
2010/10/02(土) 02:11:38winreg.hに解答が載っていた。
ドキュメントの方が説明不足っぽいなあ。
0503デフォルトの名無しさん
2010/10/02(土) 02:34:30あー、本当だ。これはひどいな。
- RRF_RT_REG_EXPAND_SZ は RRF_NOEXPAND と一緒に指定しなければならない
- RRF_RT_REG_SZ は環境変数の展開までやってくれる
とヘッダーに書いてあった。
ありがとうございました。
0504デフォルトの名無しさん
2010/10/02(土) 03:40:37ページアウトされないメモリを確保したい場合、どの API 呼べばよい?
デバイスドライバしかできないのかなぁ。。
教えてエロい人!
0505デフォルトの名無しさん
2010/10/02(土) 04:43:35セグメント指定して確保じゃなかったかな
0506デフォルトの名無しさん
2010/10/02(土) 07:57:22AWE(Address Windowing Extensions)関連のAPIを使えば良かった筈。
グループポリシーで「メモリ内のページのロック」が許可されているユーザーしか使えないけど。
0507デフォルトの名無しさん
2010/10/02(土) 10:32:570508デフォルトの名無しさん
2010/10/02(土) 15:12:25目的:管理者がProgram Files以下にインストールしたアプリを一般ユーザが使用する時に
確実にその時点での最新版にするアップデートプログラムを作りたい。
検討した手段:
特権必須 - ソフト自体は権限いらないのにアップデートのためだけの管理者縛りは入れたくない
サービス化 - 常駐は避けたい
BITS - IBackgroundCopyJob2::SetNotifyCmdLineに期待してみたが、
ユーザ権限で起動されるらしい(当たり前だけど)
0509デフォルトの名無しさん
2010/10/02(土) 15:20:180510デフォルトの名無しさん
2010/10/02(土) 15:25:130511504
2010/10/02(土) 15:47:35>>505
セグメントの種類に関わらずページアウトの対象っぽい・・・
>>506
AWE把握!調査してみまつ
ただ制限があると不特定多数を利用者に位置づけられないですねぇ。
>>507
VirtualLock でイケル!と思ったんだけど、
プロセスごとページアウトされると全部イッチャウっぽい。
0512デフォルトの名無しさん
2010/10/02(土) 15:55:19タスクスケジューラ
0513デフォルトの名無しさん
2010/10/02(土) 16:30:46runasだと管理者のIDとパスワードが必須になるので要求を満たせません。
あと最新であることを保証するために
ショートカット→アップデートプログラム→アプリ本体という順番で起動します。
>>512
タスクスケジューラで特定アプリを起動する前という条件指定できますか?
0514デフォルトの名無しさん
2010/10/02(土) 17:05:20天才ハッカーによるプログマリングのバイブルだ
http://studiokingyo.fc2web.com/
0515デフォルトの名無しさん
2010/10/02(土) 17:08:48すげー!!!
高度な内容のレベルが高いために俺の技術が高みに向上が著しいぞ
初心者だけでなく、プロもここみてより一掃の勉強を実行するべk
0517デフォルトの名無しさん
2010/10/02(土) 17:11:330518デフォルトの名無しさん
2010/10/02(土) 17:12:25まぁ初心者なら知らないのも無理はないな社会の上で活躍してるプロプログラマーならjkだな
0519デフォルトの名無しさん
2010/10/02(土) 17:14:01確かにプログラミンと関わりがない人間には理解できないだろうな内容がすごく高度的で
0520デフォルトの名無しさん
2010/10/02(土) 17:14:290521デフォルトの名無しさん
2010/10/02(土) 17:19:100522デフォルトの名無しさん
2010/10/02(土) 17:20:570523デフォルトの名無しさん
2010/10/02(土) 17:23:09レベル高いなーまだ発見されてないAPIまで載ってる
0524デフォルトの名無しさん
2010/10/02(土) 17:25:590525デフォルトの名無しさん
2010/10/02(土) 17:26:240526デフォルトの名無しさん
2010/10/02(土) 17:27:240527デフォルトの名無しさん
2010/10/02(土) 17:35:300528デフォルトの名無しさん
2010/10/02(土) 17:50:45ここ笑うところ?
0529デフォルトの名無しさん
2010/10/02(土) 18:07:52どうでもいいけどsuidなんて過去の遺物だろ。
M$がサービスでも用意してくれてなければ無理に決まってる。
用意されてたとしても任意のプログラムでOKとかはないだろうから署名とか要るんでない?
0530デフォルトの名無しさん
2010/10/02(土) 18:22:580531あぼーん
NGNG0532デフォルトの名無しさん
2010/10/02(土) 18:44:22未知のAPIが発見された
0533あぼーん
NGNG0534デフォルトの名無しさん
2010/10/02(土) 18:48:44お前は無限の猿定理の猿か
0535デフォルトの名無しさん
2010/10/02(土) 18:51:420536デフォルトの名無しさん
2010/10/02(土) 19:25:46妙に説明的なのが残念。35点
0537デフォルトの名無しさん
2010/10/02(土) 22:56:100538あぼーん
NGNG0539デフォルトの名無しさん
2010/10/02(土) 23:21:410540デフォルトの名無しさん
2010/10/02(土) 23:41:170541デフォルトの名無しさん
2010/10/02(土) 23:52:240542デフォルトの名無しさん
2010/10/03(日) 00:25:05ただし内部処理ではOSごとに異なった実装になっている
0543デフォルトの名無しさん
2010/10/03(日) 02:38:32釣りかとオモタ
0544あぼーん
NGNG0545あぼーん
NGNG0546あぼーん
NGNG0547デフォルトの名無しさん
2010/10/03(日) 06:19:060548デフォルトの名無しさん
2010/10/03(日) 06:48:380549デフォルトの名無しさん
2010/10/03(日) 06:58:190550デフォルトの名無しさん
2010/10/03(日) 07:07:310551デフォルトの名無しさん
2010/10/03(日) 08:43:390552デフォルトの名無しさん
2010/10/03(日) 08:47:130553デフォルトの名無しさん
2010/10/03(日) 08:56:310554あぼーん
NGNG0555あぼーん
NGNG0556デフォルトの名無しさん
2010/10/03(日) 16:54:27自作アプリへのフリックの影響を無効にしたいのです。
コンパネのペンとタッチのフリックを有効にしても、
IEやメモ帳はその影響を受けていないようです。
大元のチェックを外せばもちろん目的は達せられますが
そうではなく、IEやメモ帳のようにフリックの影響を受け
ないようにするにはどうしたらいいでしょうか?
タブレット関係のメッセージを適切に処理すればいいのかも
しれませんが、情報が少なくて困っております。
それともドライバの設定のどこかに、影響させないアプリを
登録とかするんでしょうか?
よろしくお願いします。
0557デフォルトの名無しさん
2010/10/03(日) 18:17:450558デフォルトの名無しさん
2010/10/03(日) 18:24:160559デフォルトの名無しさん
2010/10/03(日) 18:46:210560デフォルトの名無しさん
2010/10/03(日) 18:53:56http://msdn.microsoft.com/en-us/library/ms701172(VS.85).aspx
0561あぼーん
NGNG0562デフォルトの名無しさん
2010/10/03(日) 19:56:48サービスにするしかないと思う。
サービスだからと言って常駐する必要はない。
アップデート確認が終わったらとっとと終了すればいい。
確かGoogleのアップデータがそういう挙動だったはず。
0563デフォルトの名無しさん
2010/10/03(日) 20:23:250564あぼーん
NGNG0565デフォルトの名無しさん
2010/10/03(日) 20:49:53あまりしつこくすると、荒らしとして報告するよ。
0566あぼーん
NGNG0567あぼーん
NGNG0568デフォルトの名無しさん
2010/10/03(日) 20:57:110569デフォルトの名無しさん
2010/10/03(日) 21:01:03とりあえずお前ら空気嫁
0570デフォルトの名無しさん
2010/10/03(日) 21:03:390571デフォルトの名無しさん
2010/10/03(日) 21:23:47すまん、元の質問をよく読んでいなかった。
Googleのはスタートアップ: 自動 (遅延開始)だから、
アプリ起動時のアップデートではないんだろうな。
0572デフォルトの名無しさん
2010/10/03(日) 21:27:59Program Filesにインストールするなとか平然と書いてあったり
常時昇格を要求したりと行儀最悪なのしか見たことないなー
0573デフォルトの名無しさん
2010/10/03(日) 21:36:060574デフォルトの名無しさん
2010/10/03(日) 21:41:02最近のウインドウズはウイルス対策やその他の事情で、
プログラムファイルずに書き込むのにはアドミンとかの特権がいるの。
0575デフォルトの名無しさん
2010/10/03(日) 21:45:20なるほど ネトゲってその辺適当なのか
0576デフォルトの名無しさん
2010/10/03(日) 21:49:03特権がいるのはC:\とかでも同じ話だし。
問題になるのは6.0以降のバーチャルストアの方。
0577デフォルトの名無しさん
2010/10/03(日) 21:50:010578デフォルトの名無しさん
2010/10/03(日) 22:15:580579デフォルトの名無しさん
2010/10/03(日) 22:58:250580デフォルトの名無しさん
2010/10/03(日) 23:03:56でも、気を抜いてるとあっという間に尻の毛まで抜かれる。
0581デフォルトの名無しさん
2010/10/04(月) 00:06:250582デフォルトの名無しさん
2010/10/04(月) 00:17:47BREAK状態が解除された事はどうやって検出すれば良いでしょうか?
0584デフォルトの名無しさん
2010/10/04(月) 02:58:58最新版かどうかを確認するだけなら管理者権限いらないんだから、
アップデートが必要なときだけ管理者権限を要求するようにしたら?
Program Files内のファイルを更新するのに管理者権限が必要なのは自然だと思う。
0585デフォルトの名無しさん
2010/10/04(月) 05:32:43ClickOnce使えば10秒で解決する問題だな
0586デフォルトの名無しさん
2010/10/04(月) 07:41:05例: Secondary Logonサービス
サービスのインストールはできないけどそれはインストーラがやればいいでしょ。
suidバイナリのインストールだって一般ユーザーはできないんだし
0587デフォルトの名無しさん
2010/10/04(月) 09:09:09EV_BREAK状態じゃなくなったらとか
0588デフォルトの名無しさん
2010/10/04(月) 09:45:32EV_BREAKはBREAK状態になると飛んでくるイベントなのですが。
それの状態はどのように取得するのですか?
0589デフォルトの名無しさん
2010/10/04(月) 11:53:40BREAK信号ってのは、要は一定期間シリアル通信でゼロを送り続けた状態(スタート/ストップビットもない)
だから解除ってのはないけど
敢えて言うなら、何らかの通常の通信が送られてきた場合がそれに当たるんじゃないかと
0590デフォルトの名無しさん
2010/10/04(月) 12:07:21送信側はSetCommBreakでブレーク状態(信号線を0に落とす)を設定して、ClearCommBreakで
解除できますよね。
やはり、タイムアウト設定して、読んでみてエラー(CE_BREAK)で確認するしかないのでしょうか。
この方法はフレームエラーとか拾っちゃっうと分離が面倒そうだなあ。
0591デフォルトの名無しさん
2010/10/04(月) 12:42:36Secondary Loginって自動起動じゃね?
停止した状態でrunasしてみたら失敗したし
0592デフォルトの名無しさん
2010/10/04(月) 17:49:240593デフォルトの名無しさん
2010/10/04(月) 18:20:22BREAK信号の処理はやったことないからわからないけど
他の人も書いてるEV_BREAKの検出だけやって、通常の待ち受けしてればいいんじゃないの
MSDNの中に、やり方が書いてありそうだけど
0594デフォルトの名無しさん
2010/10/04(月) 22:39:13んー? うちのSecondary Logonは停止してたしrunasで勝手に実行中になったけどなあ。
0595デフォルトの名無しさん
2010/10/04(月) 22:59:32Administratorsのユーザなら勝手にサービス起動したがUsersだとエラー吐いたぞ
0596デフォルトの名無しさん
2010/10/04(月) 23:08:520597デフォルトの名無しさん
2010/10/04(月) 23:25:16UAC有効にしてるせい?
0598デフォルトの名無しさん
2010/10/04(月) 23:26:470599デフォルトの名無しさん
2010/10/05(火) 05:33:260600デフォルトの名無しさん
2010/10/05(火) 09:15:230601うざお
2010/10/05(火) 09:42:13みなさんは、プログラム書くとき、毎回
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpCmd, int nShow)
こういうのを、手打ちしてマウスか?
それとも、どこかメモ帳とかにコピペして、使ってますか?
どうやって管理していますか?
0602デフォルトの名無しさん
2010/10/05(火) 10:29:550603うざお
2010/10/05(火) 10:35:00覚えてないのは、どうしてますか?僕も、このくらいなら、覚えましたが、
ウインドクラスの登録、とか、覚えていないのが、多いです
0604デフォルトの名無しさん
2010/10/05(火) 10:48:200605デフォルトの名無しさん
2010/10/05(火) 10:51:510606うざお
2010/10/05(火) 10:52:26覚えるのは、無駄な努力ですか
0607デフォルトの名無しさん
2010/10/05(火) 11:00:36使ってたら勝手に覚えるもんだろ。
0608デフォルトの名無しさん
2010/10/05(火) 11:01:11おれは暗記とか苦手だから苦労して覚えるより毎回調べる方が労力が安いと思ってる
そのへんは人によって違うだろうから自分にとっていいと思う方を選べばいいんじゃね
0609デフォルトの名無しさん
2010/10/05(火) 11:01:220610うざお
2010/10/05(火) 11:06:08なんか、ウィンドウズプログラミングの本見たら、ソースがすごい量あるので、
これ全部覚えるのは、難しいと思いました。
0611デフォルトの名無しさん
2010/10/05(火) 11:11:100612うざお
2010/10/05(火) 11:21:53しかも、長い単語は、登録できない
0613デフォルトの名無しさん
2010/10/05(火) 11:43:54ウザ男?
マジウゼーっス
0614デフォルトの名無しさん
2010/10/05(火) 12:05:210615デフォルトの名無しさん
2010/10/05(火) 12:21:180616デフォルトの名無しさん
2010/10/05(火) 12:32:290617デフォルトの名無しさん
2010/10/05(火) 12:37:210618デフォルトの名無しさん
2010/10/05(火) 13:08:280619うざお
2010/10/05(火) 17:17:12真面目に、質問します
プログラミングで、windowsは、なれない型や構造体、引数、などが、多いですが
そういうのを、全部覚えるのが、普通ですか?
僕は、結構馬鹿なので、覚えられるか、微妙です
そういう場合、いい保存方法の知恵があったら、教えてください
環境は、xpでeclipse CDTを使ってます
0620616
2010/10/05(火) 17:25:19ありがとうございます。試してみますm(_ _)m
0621デフォルトの名無しさん
2010/10/05(火) 17:30:49カレー作るとしたら材料に何がいるか考えればいいのと同じ
0622デフォルトの名無しさん
2010/10/05(火) 19:11:18DLLプリロード攻撃について調べていて
根本的なところでわからなくなったので質問します。
>>69, >>90 あたりに情報が出てますがあまり話題にはなってないみたいで。
DLLの明示的なロードはLoadLibrary関数を使うわけで、
ここで引数に絶対パスを使わずに名前だけを指定すると
カレントディレクトリから同名の不正DLLがロードされるかも
しれないから危ないよ、ってことだと思ってます。
この場合、暗黙的なロードの場合も同様の脆弱性があると考えても
いいんでしょうか?カレントからロードするのは同じだと思うのですが。
0623デフォルトの名無しさん
2010/10/05(火) 19:26:260624デフォルトの名無しさん
2010/10/05(火) 19:41:43LoadTimeLinkingに関してはそうじゃない?
まぁKernel32はKnownDllだからRunTimeLinkingに直してLoadLibraryすればいいけど
0625デフォルトの名無しさん
2010/10/05(火) 20:00:39ねえよ
>>624
お前どんだけあほなの
MSDNぐらい読んだら
0626デフォルトの名無しさん
2010/10/05(火) 20:02:320627デフォルトの名無しさん
2010/10/05(火) 20:08:560628デフォルトの名無しさん
2010/10/05(火) 20:28:430629622
2010/10/05(火) 20:59:17動作の本質的な違いがわかってないからですかね。
>>624
自作のDLLを 暗黙的なロードしていた場合のようなケースを
言いたかったです。情報足りませんでしたね。
Windowsプログラミングに疎いんですが、KnwnDllでもなく
マニフェストをつけていないような自作DLLを暗黙的ロードで
使うことは、よくあることだと思っているんですが。
脆弱性に関する情報にはそこが特に明記されていないのがわからなくて。
それとも、そもそも暗黙的なロードをそんな使い方するな、ってことですかね?
0630デフォルトの名無しさん
2010/10/05(火) 21:00:000631デフォルトの名無しさん
2010/10/05(火) 22:06:12神
0632デフォルトの名無しさん
2010/10/05(火) 22:40:360633デフォルトの名無しさん
2010/10/05(火) 22:43:400634デフォルトの名無しさん
2010/10/05(火) 22:49:170635デフォルトの名無しさん
2010/10/05(火) 22:53:25APIフックでにすげかえればいいんでないの
0636デフォルトの名無しさん
2010/10/05(火) 22:59:040637デフォルトの名無しさん
2010/10/05(火) 23:02:21調べてみたらWM_SETTEXTもらってた@@;
サンクス
0638デフォルトの名無しさん
2010/10/05(火) 23:02:42継承してオーバーライドだろ
0639デフォルトの名無しさん
2010/10/05(火) 23:03:57>>636のまんまいうとおりだったw
ありがとうございます。
0640デフォルトの名無しさん
2010/10/05(火) 23:06:18おとといプログラミングはじめたばかりでよくわからない@@
win32ってcじゃないの??敬称ってC++じゃないの??
0641デフォルトの名無しさん
2010/10/05(火) 23:06:570642デフォルトの名無しさん
2010/10/05(火) 23:08:120643デフォルトの名無しさん
2010/10/05(火) 23:11:260644デフォルトの名無しさん
2010/10/05(火) 23:14:44実際使ってみるとcの関数で満足なんでクラスの使い道がよくわからなくて・・・
0645デフォルトの名無しさん
2010/10/05(火) 23:20:03悪いこと言わないから、C++を勉強したほうがいい
0646デフォルトの名無しさん
2010/10/05(火) 23:23:290647デフォルトの名無しさん
2010/10/05(火) 23:25:52了解です。がんばってみます!!
0648デフォルトの名無しさん
2010/10/05(火) 23:27:56でも俺はだまされない(キリッ
0649デフォルトの名無しさん
2010/10/05(火) 23:54:110650デフォルトの名無しさん
2010/10/06(水) 00:59:030651デフォルトの名無しさん
2010/10/06(水) 01:56:24I'm crazy! HaHaHa...
0652デフォルトの名無しさん
2010/10/06(水) 02:02:09……ないよな?
0653デフォルトの名無しさん
2010/10/06(水) 02:26:44XPにしかないDLLを使うならリンカオプションでサブシステムバージョンを5.1
VistaにしかないDLLを使うなら6.0
Win7にしかないDLLを使うなら6.1にすればいい
0654デフォルトの名無しさん
2010/10/06(水) 08:18:04スレッドハンドルが返ってきますが、そのスレッドハンドルを使って、そのスレッドが
存在しているかどうか調べる方法はありますでしょうか。
スレッドの終了までメインプロセスにてSleepで待機して、スレッドが終了したら
新しいスレッドを作成するというをしたいです。
よろしくお願いします。
0655654
2010/10/06(水) 08:39:27WaitForSingleObject(hThreadHandle, INFINITE); /* スレッド終了まで待つ */
ありがとうございました。
0656デフォルトの名無しさん
2010/10/06(水) 09:21:430657デフォルトの名無しさん
2010/10/06(水) 09:39:250658デフォルトの名無しさん
2010/10/06(水) 12:09:360659デフォルトの名無しさん
2010/10/06(水) 15:42:42方法そのものは間違ってないし
0660デフォルトの名無しさん
2010/10/06(水) 15:46:50一番良いのを頼む
0661デフォルトの名無しさん
2010/10/06(水) 16:28:37MsgWaitForMultipleObjectsEx
0662デフォルトの名無しさん
2010/10/06(水) 18:56:340663デフォルトの名無しさん
2010/10/06(水) 19:32:540664デフォルトの名無しさん
2010/10/06(水) 20:54:33いたら友達になりましょう><
私は19歳♀です♪
0665デフォルトの名無しさん
2010/10/06(水) 21:28:560666デフォルトの名無しさん
2010/10/06(水) 21:53:120667デフォルトの名無しさん
2010/10/06(水) 22:31:310668デフォルトの名無しさん
2010/10/06(水) 23:37:480669デフォルトの名無しさん
2010/10/06(水) 23:39:400670デフォルトの名無しさん
2010/10/06(水) 23:44:510671デフォルトの名無しさん
2010/10/07(木) 02:59:21んで>>638が言ってた内容、どのような設計のクラスを想定しての指示だったのか未だわかりません。なのでそのことについて何かしら助言をいただけたらうれしいです・・・
プログラマの間で常識となってるWin32、C++における基礎的な設計方針か何かあるのでしょうか?
0672デフォルトの名無しさん
2010/10/07(木) 06:35:420673デフォルトの名無しさん
2010/10/07(木) 07:27:100674デフォルトの名無しさん
2010/10/07(木) 09:10:470675デフォルトの名無しさん
2010/10/07(木) 09:19:280676デフォルトの名無しさん
2010/10/07(木) 09:47:000677デフォルトの名無しさん
2010/10/07(木) 09:49:510678デフォルトの名無しさん
2010/10/07(木) 14:13:300679デフォルトの名無しさん
2010/10/07(木) 14:24:490680671
2010/10/07(木) 14:33:45なにかきまりきまった事があるのだと思ってました。サンクス。
0681デフォルトの名無しさん
2010/10/07(木) 14:42:490682デフォルトの名無しさん
2010/10/07(木) 15:15:370684デフォルトの名無しさん
2010/10/07(木) 15:47:02ありがとうございました;;w;;ノシ
0685デフォルトの名無しさん
2010/10/07(木) 16:49:59実現するためのAPIは存在するでしょうか?
0686デフォルトの名無しさん
2010/10/07(木) 17:01:570687デフォルトの名無しさん
2010/10/07(木) 17:09:170688685
2010/10/07(木) 17:24:52ありがとうございます。
LoadUserProfile を調べてたところ、レジストリハイブのロードを見つけたので、これで実装できそうな気がします。
試してみます。
0689デフォルトの名無しさん
2010/10/07(木) 18:22:210690デフォルトの名無しさん
2010/10/07(木) 18:23:010691デフォルトの名無しさん
2010/10/07(木) 19:25:38ログイン中のアカウントだけだからなあ
0692デフォルトの名無しさん
2010/10/07(木) 20:37:02直後にCB_GETLBTEXTLENとCB_GETLBTEXTすると長さが一致しない。
0693デフォルトの名無しさん
2010/10/07(木) 21:34:36XP:C:\Documents and Settings
Vista:C:\User
0694デフォルトの名無しさん
2010/10/07(木) 21:40:23ANSI-Unicode変換レイヤ(本名は忘れた)の影響じゃないか?
0695デフォルトの名無しさん
2010/10/07(木) 21:51:43%HOMEDRIVE%%HOMEPATH%の1つ上を取るのは?
0696デフォルトの名無しさん
2010/10/07(木) 22:06:24直では無理
0697デフォルトの名無しさん
2010/10/07(木) 22:31:03HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\ProfilesDirectory
直読みで
どうせユーザープロファイルってここと関わりのない別の任意の場所に作る事ができるし
0698デフォルトの名無しさん
2010/10/07(木) 23:09:480699デフォルトの名無しさん
2010/10/07(木) 23:14:090700デフォルトの名無しさん
2010/10/07(木) 23:24:17その為にまず、説明のハンドルをFindWindowExで取得しようと思っているのですが、
現在、FindWindowExでメッセージボックスのハンドルを親に指定して、
IntPtr.Zeroから検索を開始して、1個目に!マークのアイコンのハンドルが返り
2個目に説明部分のハンドルが返ってくるので、この方法で動作しているのですが、
このような親以下の2個目という特定の仕方でも大丈夫でしょうか?
クラス名を指定できれば良いのですが、!マークのアイコンと説明は同じStaticクラスなので
どちらなのか特定できないです。
確実な方法があったら教えていただきたいです。
0701デフォルトの名無しさん
2010/10/07(木) 23:57:540702デフォルトの名無しさん
2010/10/08(金) 00:00:56どちらも取得してテキストの内容なり矩形で判別すればいいだけでは?
0703デフォルトの名無しさん
2010/10/08(金) 00:06:10最近はダイナミック・リアサインが主流
0704デフォルトの名無しさん
2010/10/08(金) 00:08:56ANSIビルドでビジュアルスタイル使ってる?
0705デフォルトの名無しさん
2010/10/08(金) 00:13:23アイコンのほうはSS_ICONがついてるな
0706デフォルトの名無しさん
2010/10/08(金) 00:31:59open->record->stop->saveが一つの関数内で実行されると保存できるんですが、
open->recordとstop->saveを別にやるとファイルが保存されてない。
なぜに?
0707デフォルトの名無しさん
2010/10/08(金) 01:48:090708デフォルトの名無しさん
2010/10/08(金) 01:50:570709デフォルトの名無しさん
2010/10/08(金) 06:56:39よく分からない。
>>704
ANSIだけどwin2000だからビジュアルスタイルは使えない。
長めの文字列を渡すとCB_GETLBTEXTの時に今度はアクセス違反で落ちる。
どのみち長さを制限しなきゃいけないとは思っていたけど、扱いづらいな。
0710デフォルトの名無しさん
2010/10/08(金) 07:12:56いや、だから変換レイヤの影響だろうって。ちゃんと調べてみな。
0711デフォルトの名無しさん
2010/10/08(金) 07:43:450712デフォルトの名無しさん
2010/10/08(金) 09:17:35timeBeginPeriod関数で精度を上げたいと思うんですが、
これを呼び出すタイミングって
ゲーム開始時に呼び出しといて、
ゲーム終了時にtimeEndPeriodを呼び出すだけでいいんですか?
それともFPS制御をしてる処理部分だけをこれらの関数で囲めばいいんですか?
0713デフォルトの名無しさん
2010/10/08(金) 09:42:53時間を取得する瞬間だけではなく
精度制御したい期間全てを囲む必要がある
ただしシステム全体に影響を与えてしまうので
ゲーム全体ではなく設定画面の表示中などもし精度が不要なら戻した方が良い
0714デフォルトの名無しさん
2010/10/08(金) 09:46:28ということは精度に影響してくる部分だけでいいってことですよね?
timeGetTimeとかSleepを使ってる部分だけで使えばよいということですよね?
0715デフォルトの名無しさん
2010/10/08(金) 09:48:050716デフォルトの名無しさん
2010/10/08(金) 09:49:06timeEndPeriodの意味ないよね
0717デフォルトの名無しさん
2010/10/08(金) 09:52:25Sleep使う前後だけ囲んだらダメだよ。
Sleepを使うループを囲まないとダメ。
っていうか、今どきのPCで気にするような問題ではないので
WinMainの頭で設定しちゃっていい。
そんなの気にしてたらメディアプレーヤーも使えない。
0718デフォルトの名無しさん
2010/10/08(金) 09:54:40デジタルってそういうもん
0719デフォルトの名無しさん
2010/10/08(金) 10:07:59丁寧にありがとうございます。Sleepごと囲むようにします。
ありがとうございました。
0720デフォルトの名無しさん
2010/10/08(金) 10:20:360721デフォルトの名無しさん
2010/10/08(金) 10:26:34理詰めで解けると思うんだが
0722デフォルトの名無しさん
2010/10/08(金) 12:15:30どのAPI使えばいいんですか?
RadeonのCCCでDesktopの明るさを設定するような感じのものです。
0723デフォルトの名無しさん
2010/10/08(金) 13:13:070724デフォルトの名無しさん
2010/10/08(金) 15:42:16MSLUってやつ? 9x系じゃないから関係なさそう。
0725デフォルトの名無しさん
2010/10/08(金) 20:01:25int index = 0;
LVITEM li = { LVIF_TEXT, index, 0, 0, 0, (LPWSTR)_T("hoge"), 0, 0, 0 };
ListView_InsertItem( hWnd_list, &li );
LVFINDINFO lf = { LVFI_STRING, _T("hoge"), 0, 0, 0 };
int index_of_hoge = ListView_FindItem( hWnd_list, 0, &lf );
上記のコードのようにhogeがリストの先頭にある場合に、index_of_hogeが-1になってしまうのですが、
何が間違っているのでしょうか?
先頭以外ではちゃんと正しいインデックスが得られているのですが。
0726デフォルトの名無しさん
2010/10/08(金) 20:08:54ListView_FindItemの第二引数は-1にすべきでは?
ListView_FindItem Macro
http://msdn.microsoft.com/en-us/library/bb761242.aspx
0727デフォルトの名無しさん
2010/10/08(金) 20:37:56上手くいきました。ありがとうございます。
0728デフォルトの名無しさん
2010/10/08(金) 20:47:570729デフォルトの名無しさん
2010/10/08(金) 21:52:250730デフォルトの名無しさん
2010/10/08(金) 22:02:160731デフォルトの名無しさん
2010/10/08(金) 22:03:14WaitForSingleObject
0732デフォルトの名無しさん
2010/10/08(金) 22:59:460733デフォルトの名無しさん
2010/10/08(金) 23:28:110734デフォルトの名無しさん
2010/10/08(金) 23:58:39PsSetLoadImageNotifyRoutine
0735デフォルトの名無しさん
2010/10/09(土) 00:07:060736デフォルトの名無しさん
2010/10/09(土) 00:20:03テンプレ追加したらどうだろうか
0737728
2010/10/09(土) 00:21:41>>731
どうもです、その関数は以前簡単に調べたことがあったんですが
例があらかじめわかっているプロセスの監視ばかりだったので別の方法を模索していました
その関数で上のようなことができるんならもっと調べてみますが…
>>734-735
どうもです、調べてみたら英語ばかりですね…なかなか時間がかかりそうです
0738デフォルトの名無しさん
2010/10/09(土) 00:24:13いい考えだな。
0739デフォルトの名無しさん
2010/10/09(土) 00:34:270740デフォルトの名無しさん
2010/10/09(土) 00:36:33これはもっと評価されるべきjkwww
0741デフォルトの名無しさん
2010/10/09(土) 00:47:260742デフォルトの名無しさん
2010/10/09(土) 00:52:390743デフォルトの名無しさん
2010/10/09(土) 00:57:38おいアホ、ちゃんと>>514って書いとけ気がきかねーな
0744デフォルトの名無しさん
2010/10/09(土) 00:59:470746デフォルトの名無しさん
2010/10/09(土) 01:10:190747デフォルトの名無しさん
2010/10/09(土) 01:11:440748デフォルトの名無しさん
2010/10/09(土) 01:13:450749デフォルトの名無しさん
2010/10/09(土) 01:15:23お前らはサイト見るときまずは広告を片っ端からクリックしていくのか?ww
0750デフォルトの名無しさん
2010/10/09(土) 01:46:180751デフォルトの名無しさん
2010/10/09(土) 01:48:390752デフォルトの名無しさん
2010/10/09(土) 01:55:030753デフォルトの名無しさん
2010/10/09(土) 01:56:470754デフォルトの名無しさん
2010/10/09(土) 02:11:020755デフォルトの名無しさん
2010/10/09(土) 02:37:050756デフォルトの名無しさん
2010/10/09(土) 03:27:060757デフォルトの名無しさん
2010/10/09(土) 07:29:340758デフォルトの名無しさん
2010/10/09(土) 08:32:330759デフォルトの名無しさん
2010/10/09(土) 08:35:02過去にそういう例があった
0760デフォルトの名無しさん
2010/10/09(土) 08:51:02しかもAPIだけじゃなく様々なライブラリまで網羅している
0761デフォルトの名無しさん
2010/10/09(土) 09:57:510762デフォルトの名無しさん
2010/10/09(土) 09:58:210763デフォルトの名無しさん
2010/10/09(土) 10:02:330764デフォルトの名無しさん
2010/10/09(土) 10:11:230765デフォルトの名無しさん
2010/10/09(土) 10:18:300766デフォルトの名無しさん
2010/10/09(土) 10:46:2416bitの時代はちゃんとtimeBeginPeriodに対応して呼び出す必要があったが
今は終了すると自動的にtimeEndPeriodされるようだ。
0767デフォルトの名無しさん
2010/10/09(土) 11:09:170768デフォルトの名無しさん
2010/10/09(土) 14:03:540769デフォルトの名無しさん
2010/10/09(土) 18:38:350770デフォルトの名無しさん
2010/10/09(土) 19:23:160771デフォルトの名無しさん
2010/10/09(土) 19:43:58たぶん>>716の意図とは違うけど質問
0772デフォルトの名無しさん
2010/10/09(土) 19:54:280773デフォルトの名無しさん
2010/10/09(土) 19:55:43デフォルトが1xミリ秒とかなんだよ
0774デフォルトの名無しさん
2010/10/09(土) 20:02:290775デフォルトの名無しさん
2010/10/09(土) 20:05:550776デフォルトの名無しさん
2010/10/09(土) 20:11:12ブラウザがChromeだとか
0777デフォルトの名無しさん
2010/10/09(土) 20:13:420778デフォルトの名無しさん
2010/10/09(土) 20:30:41分解能を変える必要があるのかと
μsecまで高精度化できるならまだしも
0779デフォルトの名無しさん
2010/10/09(土) 20:32:08それこそ1msec以下は設定できない
0780デフォルトの名無しさん
2010/10/09(土) 20:32:150781デフォルトの名無しさん
2010/10/09(土) 20:35:21Windowsが100nsで保持してるのを知らないアホ
0782デフォルトの名無しさん
2010/10/09(土) 20:53:480783デフォルトの名無しさん
2010/10/09(土) 21:09:340784デフォルトの名無しさん
2010/10/09(土) 21:26:32FILETIME構造体ではファイル時間が100ナノ秒間隔でカウントされてた
本気でそんな精度があるのかどうかは俺は知らない
0785デフォルトの名無しさん
2010/10/09(土) 21:30:03timeBeginPeriodは1ミリ秒が限界ということだよね。
0786デフォルトの名無しさん
2010/10/09(土) 21:32:140787デフォルトの名無しさん
2010/10/09(土) 23:43:33timeBeginPeriodの精度はそんなに高くない
たまに1msで回ってくれることもある、程度のもの
0788デフォルトの名無しさん
2010/10/10(日) 03:59:030789デフォルトの名無しさん
2010/10/10(日) 04:08:270790デフォルトの名無しさん
2010/10/10(日) 04:16:250791デフォルトの名無しさん
2010/10/10(日) 08:47:560792デフォルトの名無しさん
2010/10/10(日) 09:46:51timeBeginPeriodは最小で1msの精度になるってことだろ。
0793デフォルトの名無しさん
2010/10/10(日) 13:38:350794デフォルトの名無しさん
2010/10/10(日) 14:08:430795デフォルトの名無しさん
2010/10/10(日) 14:18:30あるのかよ・・・
0796デフォルトの名無しさん
2010/10/10(日) 14:23:32joyGetPosExだなw
0797デフォルトの名無しさん
2010/10/10(日) 15:48:42MSDNでもググル検索に引っかからない関数けっこうあるのな
0798デフォルトの名無しさん
2010/10/10(日) 17:01:130799デフォルトの名無しさん
2010/10/10(日) 17:01:26これが正しい挙動なんでしょうか?
他のコントロールはちゃんと表示されるのですが。
case WM_CREATE:
// 背景の作成
CreateWindowEx( 0 , _T("STATIC") , NULL , WS_CHILD | WS_VISIBLE ,
0 , 0 , WINDOW_WIDTH , WINDOW_HEIGHT , hWnd , NULL , g_hInst , NULL );
// タブコントロールの作成
CreateWindowEx( 0 , WC_TABCONTROL , NULL , WS_CHILD | WS_VISIBLE ,
TAB_X , TAB_Y , TAB_WIDTH , TAB_HEIGHT , hWnd , NULL , g_hInst , NULL );
// 他のコントロールの作成
...
0800デフォルトの名無しさん
2010/10/10(日) 20:07:020801デフォルトの名無しさん
2010/10/10(日) 21:10:38ゲームパッドとかジョイパッドとかいろいろ呼び名あって統一されてない気がするけど
0802デフォルトの名無しさん
2010/10/10(日) 21:13:010803デフォルトの名無しさん
2010/10/10(日) 21:37:190804デフォルトの名無しさん
2010/10/10(日) 21:50:23開発者向けは知らんが
少なくともエンドユーザー向けには「ゲームコントローラー」のようだな
Windows7のコントロールパネル見る限り
0805デフォルトの名無しさん
2010/10/10(日) 22:01:48STATICをそんな使い方してもいいのか・・・?
0806デフォルトの名無しさん
2010/10/10(日) 22:48:12やっぱりSTATICの使い方が不適切だったみたいです。
背景をSTATICで設定するのをやめて、hbrBackgroundで設定したら正しく表示されるようになりました。
ウィンドウクラスの設定の部分はコピペで作っていたので、こんな問題があるとは知りませんでした。
ありがとうございます。
0807デフォルトの名無しさん
2010/10/11(月) 00:31:340808デフォルトの名無しさん
2010/10/11(月) 00:52:14EnabledプロパティをAPIを使ってTrue/Falseを切り替えたいのですが
どんな方法で出来ますか?
コントロールのハンドルは取得出来ています。
0809808
2010/10/11(月) 01:14:47SendMessageでWM_ENABLEを送ったらテキストボックスをTrueに設定できました。
ボタンも同じように試したのですが、フォーカスが設定されるだけで
Trueにならないのですが、ボタンはこの方法では無理でしょうか?
0810デフォルトの名無しさん
2010/10/11(月) 01:57:52button.Enable = True;とでもしろよ
0811デフォルトの名無しさん
2010/10/11(月) 07:21:160812デフォルトの名無しさん
2010/10/11(月) 07:26:320813デフォルトの名無しさん
2010/10/11(月) 07:33:270814デフォルトの名無しさん
2010/10/11(月) 07:51:240815デフォルトの名無しさん
2010/10/11(月) 07:53:240816デフォルトの名無しさん
2010/10/11(月) 10:46:580817デフォルトの名無しさん
2010/10/11(月) 12:43:450818デフォルトの名無しさん
2010/10/11(月) 13:22:080819デフォルトの名無しさん
2010/10/11(月) 13:35:510820デフォルトの名無しさん
2010/10/11(月) 13:44:440821デフォルトの名無しさん
2010/10/11(月) 16:30:470822デフォルトの名無しさん
2010/10/11(月) 16:41:290823デフォルトの名無しさん
2010/10/11(月) 17:35:460824デフォルトの名無しさん
2010/10/11(月) 18:41:020825デフォルトの名無しさん
2010/10/11(月) 18:52:030826デフォルトの名無しさん
2010/10/11(月) 19:09:500827デフォルトの名無しさん
2010/10/11(月) 19:32:470828デフォルトの名無しさん
2010/10/11(月) 20:20:370829デフォルトの名無しさん
2010/10/11(月) 20:23:52ここで問題、bool が1ビットではなく8ビットも使っている理由とは?
0830デフォルトの名無しさん
2010/10/11(月) 20:33:380831デフォルトの名無しさん
2010/10/11(月) 20:35:480832デフォルトの名無しさん
2010/10/11(月) 20:40:210833デフォルトの名無しさん
2010/10/11(月) 20:45:170834デフォルトの名無しさん
2010/10/11(月) 20:49:00BOOLとBOOLEANとboolの区別が出来るようになれよ
0835デフォルトの名無しさん
2010/10/11(月) 20:54:56簡易ブログで呟くつもりが間違ってスレで呟いたら、いつの間にかクイズに正解していた!
何を
0836デフォルトの名無しさん
2010/10/11(月) 22:42:330837デフォルトの名無しさん
2010/10/11(月) 22:53:00神サイト
0838デフォルトの名無しさん
2010/10/11(月) 22:53:240839デフォルトの名無しさん
2010/10/11(月) 23:04:540840デフォルトの名無しさん
2010/10/11(月) 23:17:23お前のせいでこのスレ終わりかけたんだぞ分かってんのか?このまま終わるかかもだが
0841デフォルトの名無しさん
2010/10/12(火) 01:10:320842デフォルトの名無しさん
2010/10/12(火) 01:18:370843デフォルトの名無しさん
2010/10/12(火) 01:21:52全角文字にした途端にデフォルトの文字サイズに戻ってしまいます。
プロシージャのところで止めておかなければいけないメッセージでもあるんでしょうか?
0844デフォルトの名無しさん
2010/10/12(火) 04:18:56再帰とかで試していたがわけわからなくなってきた
0845デフォルトの名無しさん
2010/10/12(火) 04:55:350846デフォルトの名無しさん
2010/10/12(火) 07:29:200847デフォルトの名無しさん
2010/10/12(火) 09:17:470848デフォルトの名無しさん
2010/10/12(火) 10:19:090849デフォルトの名無しさん
2010/10/12(火) 10:49:210850デフォルトの名無しさん
2010/10/12(火) 11:08:37, ´::::::::::::::::::::` 、
/::::::::::::::::::::::::::::::::::::::::::\
/| /::::::::::::::::::::::::::::::::::::::::::::::::::::::ヽ_
/ | /`i::::::::::/::::::::::::::::::::::::::::::l::::::::::::::::::i::ヽ
`'ー-‐''" ヽ、_. i::::::|:::::::/:::::::::::::::::,ィ:::::::::::::!:l::::l::::::::::l:::::',
/. |::::::!::::::!:/::l:::::l::::/ |:::::::::::::|:l、:l::::::::::|::::::i
か っ も | . l::::::l::::::|:i::::l:::::l:/ l:::::::::::::}ハ::|:::::::::li::::::l
ァ て う. |...!:::::lヽ:::!:!::::!:::::!--‐'!:,::::::::/ー|::|:::::::::!l::::::l
| 約 ペ ヽ|:::::l `!:|::::l、:::| 、 lハW, - l/|::::::/ l::::::l
| 束 ロ >::l |::l::::|cにニヽ r ニヽ/::::/:i. l::::::l
| し ペ /:::::! l::ヽ::!、 ////////// i.l/::::| !:::::l
| た ロ |.l:::::l _!:::::`i:.`i 、 _(二コ _, ィく_!::::l:::l !:::::l
| じ は | !::::l/:.:.ヽ:::::l:.:.:! \ ̄/ !:.l:.:.|::::l:/ヽ. l:::::l
ッ .ゃ .し |l:::::i:.:.:.:.、:.:.\l:.:.:lr/^^くv'^ヽ:.!:.:l/':.:.:.:} l:::::l
! ! な な !::::l|:.:.:.:.:.\:.:.:.ヽ{__ } _{_':.:.:.:/:.:.:.i !:::::!
い .い ヽ、_.:.:.::.:.:ヽ:.:./:.:.:.`.く!/:.:.:.i:.:/:.:.:.:.:.:.| l:::::l
で ./ :.:.:.:.:.:.:.:∨:.:.:.:.:.:.o〉:.:.:.:.:.V:.:.:.:.:.:.:/ !:::::!
す /. !:.:.:.:.:.:/:.:.:.:.:.:.o〈:.:o:.:.:.:.:.\:.:.:.:.} l:::::l
〈 ヽ:.:.:./:.:.:.:.:.:.:.:.:.:/:ヽ:.:.:.:.:.:.:.:.:ヽ:./ l:::::l
0851デフォルトの名無しさん
2010/10/12(火) 11:29:480852デフォルトの名無しさん
2010/10/12(火) 12:41:270853デフォルトの名無しさん
2010/10/12(火) 18:14:490854デフォルトの名無しさん
2010/10/12(火) 18:24:58succ n = n + 1
0855デフォルトの名無しさん
2010/10/12(火) 19:48:430856デフォルトの名無しさん
2010/10/12(火) 20:10:48これを L" " で埋める命令はない?
0857デフォルトの名無しさん
2010/10/12(火) 20:12:380858デフォルトの名無しさん
2010/10/12(火) 20:20:330859デフォルトの名無しさん
2010/10/12(火) 20:32:000860デフォルトの名無しさん
2010/10/12(火) 20:33:470861デフォルトの名無しさん
2010/10/12(火) 20:47:480862デフォルトの名無しさん
2010/10/12(火) 20:54:090863デフォルトの名無しさん
2010/10/12(火) 22:07:520864デフォルトの名無しさん
2010/10/12(火) 22:20:220865デフォルトの名無しさん
2010/10/12(火) 22:21:370866デフォルトの名無しさん
2010/10/12(火) 22:32:090867デフォルトの名無しさん
2010/10/12(火) 22:34:020868デフォルトの名無しさん
2010/10/12(火) 22:48:030869デフォルトの名無しさん
2010/10/12(火) 22:52:03WCHAR buf[256];
LPWSTR sp=L" ";
int i;
for(i=0;i<sizeof(buf);i++){
buf[i]=sp[0];
}
0870デフォルトの名無しさん
2010/10/12(火) 22:54:17あうとーーーーーーー。
0871デフォルトの名無しさん
2010/10/12(火) 23:04:52君合格
0872デフォルトの名無しさん
2010/10/12(火) 23:20:010873デフォルトの名無しさん
2010/10/12(火) 23:30:15ダウト
0874デフォルトの名無しさん
2010/10/12(火) 23:39:290875デフォルトの名無しさん
2010/10/13(水) 00:18:03rep movsw
0876デフォルトの名無しさん
2010/10/13(水) 00:20:26なんか地味に面倒そうだ。
0877デフォルトの名無しさん
2010/10/13(水) 03:15:370878デフォルトの名無しさん
2010/10/13(水) 07:34:380879デフォルトの名無しさん
2010/10/13(水) 09:39:480880デフォルトの名無しさん
2010/10/13(水) 10:14:160881デフォルトの名無しさん
2010/10/13(水) 10:20:42int i;
WCHAR buf[256];
FillMemory(buf,sizeof(buf));
for(i=0;i<_countof(buf)-1;i++){
lstrcatW(buf,L" ");
}
0882デフォルトの名無しさん
2010/10/13(水) 11:21:32それもダウトォォォォー!!!1!
0883デフォルトの名無しさん
2010/10/13(水) 11:24:30WCHAR buf[256]=" (中略) ";
0884デフォルトの名無しさん
2010/10/13(水) 16:16:230885デフォルトの名無しさん
2010/10/13(水) 16:19:510886デフォルトの名無しさん
2010/10/13(水) 18:02:560887デフォルトの名無しさん
2010/10/13(水) 18:25:160888デフォルトの名無しさん
2010/10/13(水) 18:28:390889デフォルトの名無しさん
2010/10/13(水) 18:57:080890デフォルトの名無しさん
2010/10/13(水) 19:16:250891デフォルトの名無しさん
2010/10/13(水) 19:27:42いちいち変換するのが面倒でそういうの使う時はついANSIになってしまう
0892デフォルトの名無しさん
2010/10/13(水) 19:28:42多分うにこーどでないとバグる
0893デフォルトの名無しさん
2010/10/13(水) 19:31:320894デフォルトの名無しさん
2010/10/13(水) 19:34:210895デフォルトの名無しさん
2010/10/13(水) 19:47:450896デフォルトの名無しさん
2010/10/13(水) 20:06:56↑これ8バイト
0897デフォルトの名無しさん
2010/10/13(水) 20:18:05WS_HIDEなままで
これのHDCから見た目撮れる?
0898デフォルトの名無しさん
2010/10/13(水) 20:48:590899デフォルトの名無しさん
2010/10/13(水) 21:12:470900デフォルトの名無しさん
2010/10/13(水) 21:15:370901デフォルトの名無しさん
2010/10/13(水) 21:27:470902デフォルトの名無しさん
2010/10/13(水) 21:41:230903デフォルトの名無しさん
2010/10/13(水) 22:04:55このサイトは次スレからテンプレ入りする約束が確約された専門技術高度情報である
0904デフォルトの名無しさん
2010/10/13(水) 22:12:120905デフォルトの名無しさん
2010/10/13(水) 22:28:50いい加減にしろ
誰も認めてないだろ
0907デフォルトの名無しさん
2010/10/13(水) 22:58:27openprocess関数を失敗させる
みたいな
0908デフォルトの名無しさん
2010/10/13(水) 23:05:05なりすましはやめてくれないかな
0909デフォルトの名無しさん
2010/10/13(水) 23:10:09瞬時に終わらせるとか
0910デフォルトの名無しさん
2010/10/13(水) 23:10:35ANSIというか他のプラットフォームではUTF-8なこと前提でワイド文字を使わないな
0911デフォルトの名無しさん
2010/10/13(水) 23:11:00Protected Processにする(Vista以降)
0912デフォルトの名無しさん
2010/10/13(水) 23:40:250913デフォルトの名無しさん
2010/10/13(水) 23:44:20sptd.sysとかネトゲのゲームガードのようなマルウェアまがいのことしないと無理
少なくともスレ違い
0914デフォルトの名無しさん
2010/10/13(水) 23:47:55CreateProcessのセキュリティ記述子を設定すればできるよ。
エクスプローラとかから起動されると設定されていないので、
必要な設定にして自分自身をCreateProcessで再起動するようにする。
0915>>907です
2010/10/13(水) 23:52:02OSは気にしないので、外部プロセスがreadprocessmemoryなどでメモリを読み取れなくさせようと思います。
DLL Injectionで何かをフックすれば可能ですかね?
0916>>907
2010/10/13(水) 23:58:40なるほど。createprocessのセキュリティ記述子の設定して再起動ですか。。
簡単なサンプル頂けませんか?
0917デフォルトの名無しさん
2010/10/14(木) 00:05:50今後はwchar_t決め打ちが流行る
0918デフォルトの名無しさん
2010/10/14(木) 00:40:050919デフォルトの名無しさん
2010/10/14(木) 00:51:060920デフォルトの名無しさん
2010/10/14(木) 01:01:310921>>907
2010/10/14(木) 01:13:59普通にメモリ読み込めるんですけど・・・・
#include <windows.h>
#include <aclapi.h>
int WINAPI WinMain(HINSTANCE hinst, HINSTANCE hinstPrev, LPSTR lpszCmdLine, int nCmdShow)
{
TCHAR szAccountName[256];
DWORD dwSize;
DWORD dwResult;
EXPLICIT_ACCESS explicitAccess;
PACL pDacl;
DWORD dwAccessMask = FILE_GENERIC_WRITE | FILE_EXECUTE | GENERIC_READ;
dwSize = sizeof(szAccountName) / sizeof(TCHAR);
GetUserName(szAccountName, &dwSize);
BuildExplicitAccessWithName(&explicitAccess, szAccountName, dwAccessMask, GRANT_ACCESS, 0);
SetEntriesInAcl(1, &explicitAccess, NULL, &pDacl);
if (SetNamedSecurityInfo(TEXT("test.exe"), SE_FILE_OBJECT, DACL_SECURITY_INFORMATION | PROTECTED_DACL_SECURITY_INFORMATION, NULL, NULL, pDacl, NULL) == ERROR_SUCCESS)
MessageBox(NULL, TEXT("DACLの設定に成功しました。"), TEXT("OK"), MB_OK);
else
MessageBox(NULL, TEXT("DACLの設定に失敗しました。"), NULL, MB_ICONWARNING);
LocalFree(pDacl);
return 0;
}
0922>>907
2010/10/14(木) 01:15:34この部分をWRITEだけにたら、起動すらできなくなります。
起動はできるけど、あくまで外部プロセスからメモリを読み取らせないのであって、起動自体に制限はかけたくないです。
よろしくお願いします。
0923デフォルトの名無しさん
2010/10/14(木) 01:16:330924>>907
2010/10/14(木) 01:42:47#include <stdio.h>
int main()
{
PROCESS_INFORMATION pi;
STARTUPINFO si;
int ret;
ZeroMemory(&si, sizeof (si));
si.cb = sizeof (si);
ret = CreateProcess(NULL,"C:\\test\\test.exe",NULL,NULL,FALSE,NORMAL_PRIORITY_CLASS,
NULL, NULL, &si, &pi);
if (!ret) {
DWORD errcode = GetLastError();
char *lpMsgBuf;
fprintf(stderr, "起動失敗 %x\n", errcode);
FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,errcode,MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // 既定の言語
(LPTSTR) &lpMsgBuf,0,NULL);
fprintf(stderr, "エラー内容\n%s", lpMsgBuf);
exit(1);
}
CloseHandle(pi.hThread);
WaitForSingleObject(pi.hProcess, INFINITE);
CloseHandle(pi.hProcess);
return 0;
}
あれ・・・どうやって2つあわせたらいいんだろ・・・
0925デフォルトの名無しさん
2010/10/14(木) 02:05:02具体的にはボタン押下状態でODS_SELECTEDフラグが立ちません。
以下がボタンダウンしているにも関わらず青ボタンになります。
DRAWITEMSTRUCT* ds = (DRAWITEMSTRUCT*)lParam;
if(ds->itemState & ODS_SELECTED){
//赤でボタン描画(ボタンダウン状態)
}else{
//青でボタン描画(ボタンアップ状態)
}
itemStateの使い方が間違ってる/回避方法などあればご教授お願いします。
0926デフォルトの名無しさん
2010/10/14(木) 02:31:48分からないならレスしなければいいのにwwwwww
0927デフォルトの名無しさん
2010/10/14(木) 02:33:340928>>907
2010/10/14(木) 02:34:21ことによって、デバッガなどがReadProcessMemoryでメモリを読み取れなくさせるプログラムが、やっぱりわかりません。
どなたか、ご教授お願いします><
0929デフォルトの名無しさん
2010/10/14(木) 02:37:22ttp://www5b.biglobe.ne.jp/~kouta_y/c/src/c05.html
このページ内を
"ダブルクリックに反応させる"
で検索
0930デフォルトの名無しさん
2010/10/14(木) 02:38:21?ttp://eternalwindows.jp/security/accesscontrol/accesscontrol01.html
0931デフォルトの名無しさん
2010/10/14(木) 03:48:51readprocessmemoryの成功とは全く関係ない
922のようにexeを起動できるかどうかに関係するだけ
readprocessmemoryを失敗させるんなら
exeではなくプロセスのセキュリティ記述子を変更しないと
0932デフォルトの名無しさん
2010/10/14(木) 04:29:390933デフォルトの名無しさん
2010/10/14(木) 04:34:37ようres_unless
0934デフォルトの名無しさん
2010/10/14(木) 05:36:53こうゆうことか?
http://eternalwindows.jp/security/accesscontrol/accesscontrol13.html
0935デフォルトの名無しさん
2010/10/14(木) 05:44:36チート対策するほど需要(利益)のあるアプリが出来たのなら
そういうところ(人)に依頼すればいいだけでは?
そういう人の立場での質問だったらご愁傷さまですけど。
0936>>907
2010/10/14(木) 08:21:22ようはそんな感じですけど、
ターミネートプロセスの禁止ではなくREADの禁止だから〜
ってのと、CreateProcessで〜
ってのがよくわからなくなりました。
プロセス起動中のセキュリティとファイルのセキュリティ記述子が別ということはわかりました。
0937デフォルトの名無しさん
2010/10/14(木) 08:55:50全く知識の無い俺が該当ページのサンプルプログラムを見て勝手に想像すると
PROCESS_TERMINATE で TerminateProcess が禁止できるなら
PROCESS_VM_READ にすれば ReadProcessMemory が禁止できるはず!
って思ったりするが(以下ry
0938デフォルトの名無しさん
2010/10/14(木) 09:03:420939デフォルトの名無しさん
2010/10/14(木) 09:16:04こんなので対策出来ると思ってるの?
ユートピアすぎる
0940939
2010/10/14(木) 09:27:520941デフォルトの名無しさん
2010/10/14(木) 09:28:330942デフォルトの名無しさん
2010/10/14(木) 09:31:560943デフォルトの名無しさん
2010/10/14(木) 10:24:160944デフォルトの名無しさん
2010/10/14(木) 10:32:260945デフォルトの名無しさん
2010/10/14(木) 10:36:010946>>907
2010/10/14(木) 11:31:15実用性はまだないですが。
それでターゲットのセキュリティ記述子(プロセス
)を設定すればできると思ったわけですが
gameguardがいい見本でした。
0947>>907
2010/10/14(木) 11:34:240948デフォルトの名無しさん
2010/10/14(木) 11:46:000949デフォルトの名無しさん
2010/10/14(木) 11:49:200950デフォルトの名無しさん
2010/10/14(木) 12:19:44らしいのですが、どうなんでしょうか?
0951デフォルトの名無しさん
2010/10/14(木) 12:35:100952>>907
2010/10/14(木) 12:53:020953>>907
2010/10/14(木) 13:05:48RestartProcess(szKey, PROCESS_VM_READ);
これにしてみました。
#include <windows.h>
#include <aclapi.h>
void RestartProcess(LPTSTR lpszKey, DWORD dwRemoveAccess);
int WINAPI WinMain(HINSTANCE hinst, HINSTANCE hinstPrev, LPSTR lpszCmdLine, int nCmdShow)
{
TCHAR szKey[] = TEXT("restart-key");
if (lstrcmp(GetCommandLine(), szKey) != 0) {
MessageBox(NULL, TEXT("再起動します。"), TEXT("OK"), MB_OK);
RestartProcess(szKey, PROCESS_VM_READ);
return 0;
}
MessageBox(NULL, TEXT("終了します。"), TEXT("OK"), MB_OK);
return 0;
}
(省略・・・)
デバッガから普通にメモリ読み取れるんですけど・・・
コンパイルしました。
http://pinkch.info/win32/
0954デフォルトの名無しさん
2010/10/14(木) 13:35:220955デフォルトの名無しさん
2010/10/14(木) 14:12:56それくらい自分で予想もできないで人に聞くなら相応の金を払ってその手のを買うべき。
クラックやら何やらを行う人間はあらゆる穴を探そうとするしどの穴を使ったか教えてくれない。
0956デフォルトの名無しさん
2010/10/14(木) 14:14:22タスクマネージャ等でユーザーが明示的に切り替える場合を除いて
たとえば負荷状況に応じて自動的にCPUコア1に切り替わるといったことはあるんでしょうか?
0957デフォルトの名無しさん
2010/10/14(木) 14:35:390958デフォルトの名無しさん
2010/10/14(木) 15:17:43http://www.play21.jp/board/formz.cgi?action=res&resno=63456&id=dixq&from=tree#63503
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1048589220
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1048634055
0959デフォルトの名無しさん
2010/10/14(木) 16:17:45デバッガはさておき、とりあえず >>907 でやりたい事は実現できてるだろ?
0960デフォルトの名無しさん
2010/10/14(木) 17:12:210961デフォルトの名無しさん
2010/10/14(木) 17:41:16上にかいてあるようにSeDebugPrivilegeを有効にしたらプロセスのハンドルは取得できる
つまりデバッガがSeDebugPrivilegeを有効にしていたら
プロセスのセキュリティ記述子をいじってても無駄ということかね
0962>>907
2010/10/14(木) 17:47:14いまだできません。><
0963デフォルトの名無しさん
2010/10/14(木) 17:59:480964デフォルトの名無しさん
2010/10/14(木) 18:10:39は見えるで、
終了します。
も見えるってことなのかな?
0965デフォルトの名無しさん
2010/10/14(木) 19:18:45SetThreadAffinityMaskというAPIがある位だから、切り替わることもあるだろ。
CPUキャッシュとか勿体無いから、頻繁には切り替わらないだろうけど。
0966デフォルトの名無しさん
2010/10/14(木) 19:25:210967デフォルトの名無しさん
2010/10/14(木) 21:53:06Windows XP SP3
VC++7.0
VB6.0
■動作環境
Windows 7
ウィンドウズサービスをVC++で開発しています。
EnumWindowsを使用し、ウィンドウハンドルを取得して、VBにメッセージをPOSTする仕様です。
XPでは問題なく動作するのですが、
Windows 7ではEnumWindowsでVBのウィンドウハンドルが取得できません。
(EnumWindows自体は正常終了しています)
Windows 7でウィンドウハンドルを取得する方法はないでしょうか?
サービスはローカルシステムアカウントで動作しています。
0968デフォルトの名無しさん
2010/10/14(木) 22:02:310969デフォルトの名無しさん
2010/10/14(木) 22:06:34(管理者ならデフォルトで持ってる)アクセス許可無視して開けるから無駄
だから最初からVistaはProtected ProcessにしてXPは>>913だって言ってるのに。
自分で試さないと納得できないならなんで質問するの?
0970デフォルトの名無しさん
2010/10/14(木) 22:11:250971デフォルトの名無しさん
2010/10/14(木) 22:13:340972デフォルトの名無しさん
2010/10/14(木) 22:49:550973デフォルトの名無しさん
2010/10/14(木) 22:50:24* Kernel(OS)レベルでプロセスを保護
* Microsoft公認rootkit?
o デバッガのアタッチなどから保護する機能を提供
* ただしMicrosoftの認証が必要
0974デフォルトの名無しさん
2010/10/14(木) 22:59:380975デフォルトの名無しさん
2010/10/14(木) 23:05:450976デフォルトの名無しさん
2010/10/14(木) 23:09:340977デフォルトの名無しさん
2010/10/14(木) 23:14:24Win7にはないのかなぁ
0978デフォルトの名無しさん
2010/10/14(木) 23:25:060980デフォルトの名無しさん
2010/10/15(金) 00:25:150981デフォルトの名無しさん
2010/10/15(金) 01:28:490982>> 907
2010/10/15(金) 01:50:3932bit版ではGameMon.desは自分自身のプロセスさえも隠蔽していたが64bit版では隠蔽はされていなかった。
0983>>907
2010/10/15(金) 01:54:40GameGuardシステムについてはこちらにありました。
http://www.networktemple.com/forum/maplestory-discussion/17512-how-d-gameguard-work.html
私が作りたいのはこのメモリ遮断だけです。
すべてのプロセスを一度開いて
kernel32監視して〜
みたいな働きしているようなのですが…
0984デフォルトの名無しさん
2010/10/15(金) 02:13:31覗かれて困るようなことでもしてるのかな?
0985デフォルトの名無しさん
2010/10/15(金) 02:20:300986デフォルトの名無しさん
2010/10/15(金) 02:32:20お前の頭でどうにかできると思ってるのかと
0987デフォルトの名無しさん
2010/10/15(金) 02:56:270988デフォルトの名無しさん
2010/10/15(金) 02:59:48じゃなくて、他の方法考えたほうが良さそうだけど
読まれて困るデータのアドレスをもごもご...
0989デフォルトの名無しさん
2010/10/15(金) 03:32:16nProtectが動いている時限定で、特殊なint 2eHが有効になるから、
それを使えばいけそうな気もするする。
0991デフォルトの名無しさん
2010/10/15(金) 04:53:23そのコンソールアプリへctrl-cを送りたい場合はどうすればいいんでしょうか?
0992デフォルトの名無しさん
2010/10/15(金) 08:15:17kwsk頼む
int 2wh?
WallHack系ツールは不正プログラムとして落とされるはずだが…
0993デフォルトの名無しさん
2010/10/15(金) 12:36:320994デフォルトの名無しさん
2010/10/15(金) 12:37:340995デフォルトの名無しさん
2010/10/15(金) 16:10:200996>>907
2010/10/15(金) 19:19:10これってなんか関係ありますか?
0997デフォルトの名無しさん
2010/10/15(金) 19:21:350998>>907
2010/10/15(金) 19:25:370999デフォルトの名無しさん
2010/10/15(金) 19:41:191000デフォルトの名無しさん
2010/10/15(金) 19:43:4810011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。