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

Win32API質問箱 Build89

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん2010/08/22(日) 00:16:50
スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんや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/
000212010/08/22(日) 00:17:40
前スレ最初のやり取りを見て、過去スレのリンクは貼りませんでした。
0003デフォルトの名無しさん2010/08/22(日) 01:02:59
くるしゅうない
0004デフォルトの名無しさん2010/08/22(日) 03:08:07
聞いてくれ。
普通はスクロールバーのMAX値を
PAGE値より大きくすると、スクロールバーが表示され、
PAGE値より小さくすると、スクロールバーは非表示になるよな?
ところがMAX値を変更してこれを連続的に切り替えると、表示されるべきときにも1回おきに表示されないんだよ。
ちょっとみんなも試してみてくれ。
これって俺が悪いのかスクロールバーのバグなのか?
0005デフォルトの名無しさん2010/08/22(日) 08:52:13
static 禁止な
0006デフォルトの名無しさん2010/08/22(日) 10:41:58
新スレ乙
前スレ読んだけど面白かったw
0007デフォルトの名無しさん2010/08/22(日) 11:44:13
static int otsu = 1;
0008デフォルトの名無しさん2010/08/22(日) 14:43:06
前スレ>>949
>藤原氏の「Cプログラミング診断室」を熟読していまして、きれいで洗練さ>れたコードを目指しています

ttp://www.pro.or.jp/~fuji/mybooks/cdiag/
↑
Windowsプログラミングでこのサイトのことを真に受けて大丈夫?
0009デフォルトの名無しさん2010/08/22(日) 14:46:21
staticの意味を分かっていて疑問に思うなら向いてない
0010デフォルトの名無しさん2010/08/22(日) 15:30:56
MSDN が落ちているのはやっぱり、モマイラのせいか?
ttp://msdn.microsoft.com/ja-jp/library/
0011デフォルトの名無しさん2010/08/22(日) 15:31:43
落ちてないぞ
0012デフォルトの名無しさん2010/08/22(日) 16:00:06
>>11
午前中ずーっと落ちてんだが、やっと復旧したようだな、屈強なMicrosoft 鯖でも落ちることがあるんだ
0013デフォルトの名無しさん2010/08/22(日) 16:11:12
>>12
その鯖はlinuxかwindowsか?
0014デフォルトの名無しさん2010/08/22(日) 16:19:32
>>10
アク禁食らってただけとかw
まさかね
>>13
IISだろやっぱし
0015デフォルトの名無しさん2010/08/22(日) 16:23:49
aspxだからなあ
0016デフォルトの名無しさん2010/08/22(日) 19:07:18
>>8
Win32 APIとか以前のレベルの、
まさにstaticの意味を分かっていると自称してるような人間を晒しあげてる本だよ
0017デフォルトの名無しさん2010/08/22(日) 19:28:57
>>16
言語によってstaticの意味はかなり違う件
例えば極めて大雑把に言って
C:「綿密な調査無しで修正すると大きな影響を及ぼす可能性がある」
Java:「単にclass-uniqであり特定のinstanceに依存しない」
VC++とかだと文法が微妙に普通のCと違うところがあるから
Windowsで当てはまるかどうかは知らないが
0018デフォルトの名無しさん2010/08/22(日) 19:45:57
は?
0019デフォルトの名無しさん2010/08/22(日) 19:46:03
死ぬほどどうでもいい
0020デフォルトの名無しさん2010/08/22(日) 19:52:31
>>17 が何も分かっていない素人だということは良く分かった
0021デフォルトの名無しさん2010/08/22(日) 19:54:56
あんまり言うと、staticについて説明してみろって言われるぞ
0022デフォルトの名無しさん2010/08/22(日) 19:57:55
マニュアル読めよw
Cでは2つの意味しかないだろ
0023デフォルトの名無しさん2010/08/22(日) 20:19:46
Cに慣れてないことがわかるなw
0024デフォルトの名無しさん2010/08/22(日) 22:01:19
static が書かれているとソースが綺麗(キリ
002542010/08/22(日) 22:05:08
↓例えば普通のウィンドウのWM_LBUTTONUPのハンドラあたりでこんな感じでやってみて。お願い!
static 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:35
si.nMax == bLarge ? 100 : 10;
0027デフォルトの名無しさん2010/08/22(日) 22:36:19
やってみてじゃねえよ
ソース見直せ
002842010/08/22(日) 22:36:55
大変申し訳ない。原因が分かりました。
WM_SIZEのハンドラで、ページサイズを設定してたんですが
どうやらスクロールバーってのは「ページサイズだけ」を単独で設定するんじゃなく、
範囲といっしょに(SIF_RANGE | SIF_PAGE)設定してやらないといけない仕様のようですね。
これをSIF_PAGEだけ設定したのが原因のようです。
大して調べもせずに安易に頼ってしまって申し訳ない。
しかし、みんな知ってた?MSDNにも書いてないしなぁ・・・
0029デフォルトの名無しさん2010/08/22(日) 22:38:10
static変数の意味がわかってないw
0030デフォルトの名無しさん2010/08/22(日) 22:39:03
staticについて勉強しなおして来い
0031デフォルトの名無しさん2010/08/22(日) 22:44:37
case WM_LBUTTON_PRESSED:
static bool x=false;
::MessageBox(NULL,"注意",x?"あほ":"まぬけ",MB_OK);
x=!x;
break;

マウス左ボタンを押す度に
あほ、まぬけ
と交互にメッセージが出る?
0032デフォルトの名無しさん2010/08/22(日) 22:46:57
caseの中で変数宣言できたっけ
003342010/08/22(日) 22:47:16
分かりにくくてごめんなさい!case文じゃなくてメッセージハンドラとして関数化してます。
003442010/08/22(日) 22:54:18
あと、最小値・最大値を設定するとページサイズは初期値に戻っちゃうみたいです。
つまり範囲をセットする時にもページサイズもいっしょにセットしてやらないといけないみたいです。
こういうことって書籍とかにあまり書いて無いよね?俺が探すの下手なだけ・・・?
0035デフォルトの名無しさん2010/08/22(日) 23:04:20
こういういちいちうるさい奴がいるから、動物を電子レンジで乾かすなと注意書きが必要なんだろうな。
003642010/08/22(日) 23:15:09
>>35
ってことは俺の言ってること当たってるってわけね?サンキュー
0037デフォルトの名無しさん2010/08/22(日) 23:27:59
>>32
ブロック作れば可能
0038デフォルトの名無しさん2010/08/23(月) 00:31:58
lstrcpyとstrcpy_sはどっちがおすすめ?
0039デフォルトの名無しさん2010/08/23(月) 01:17:22
間を取ってstrncpy
0040デフォルトの名無しさん2010/08/23(月) 01:27:35
>>39
サンクス
0041デフォルトの名無しさん2010/08/23(月) 02:56:00
ダイアログのスクロールバーをいじっています。

サイズを変更した際に、スクロールバーのレンジを変更した後、
その結果によって、スクロールバーが出たり消えたりしますが
(SCROLLINFOのnMin,nMax,nPageの関係で。)、
この「出た」「消えた」を得られる方法はありませんか?

この「出た」「消えた」で、「縦スクロールが消えれば横サイズが増える」と言った具合に
ダイアログのクライアントサイズが変わってしまいますが、
それによるWM_SIZEがこないので、
「出た」「消えた」が発生した後、もう一度サイズを変えないと、
ダイアログ内のコントロールの並び替えがうまくできません。

稚拙な質問ですが、ご教授願います。
0042デフォルトの名無しさん2010/08/23(月) 03:09:52
入門書でstaticに関する記述を読むといいよ
0043デフォルトの名無しさん2010/08/23(月) 12:57:23
staticネタはもういい
0044デフォルトの名無しさん2010/08/23(月) 19:39:48
getpixelを使わず画像内の1ピクセルの色情報を出すことって可能?
どっかのメモリに配列になっていないのか
0045デフォルトの名無しさん2010/08/23(月) 19:42:26
出せるしなってる
DIB
0046デフォルトの名無しさん2010/08/23(月) 19:42:41
可能
0047412010/08/24(火) 05:12:40
static関係な…(ry

すみません、自己解決しました。
WM_SIZEで縦スクロールのレンジ変更した後、ウィンドウの幅が変わったら
もう一度WM_SIZEしようとしていたのですが、
PostMessageじゃなくて、SendMessageしていたため、
SendMessageが返ってきた後、もう一度古いサイズでコントロールの並び替えしていたのが原因でした。
static以前でお恥ずかしいでス…
0048デフォルトの名無しさん2010/08/24(火) 15:13:52
wchar_tとcharってunionで定義できないんですか?
struct S
union U{
wchar_t X[4]; //1
char X[4]; //2
};
みたいな感じでなぜ無理なんでしょうか?2で1が再定義されますとエラーがでる

ちなみにTCHAR使えよって思うかもしれませんが、
ちょっと説明長くなるので省略しますが、使えない状況にあります。
さらに、どちらかで統一して書けばいいだろと思われるかもしれませんが、
これもいろいろあって、統一は絶対にできない状態です

つまり、
0049デフォルトの名無しさん2010/08/24(火) 15:15:58
wchar_tとcharってunionで定義できないんですか?

struct 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:28
ごめん勘違いしてた
       wchar_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:06
スレ間違えてますよ
0052デフォルトの名無しさん2010/08/24(火) 15:29:05
とりあえず落ち着こうか
0053デフォルトの名無しさん2010/08/24(火) 19:05:12
TCHAR使えよ
0054デフォルトの名無しさん2010/08/24(火) 21:38:20
久しぶりに吹田
0055デフォルトの名無しさん2010/08/25(水) 00:46:37
和んだ
0056デフォルトの名無しさん2010/08/25(水) 01:47:31
すいません。以前他のアプリにキー入力イベントを送る方法を質問した者ですが、
対象アプリが対策をしたようで、対象アプリがアクティブになるとkeybd_eventも受け付けなくなってしまったようです。
対象アプリがノンアクティブのときはmouse_eventでマウスカーソルの移動ができるのですがアクティブにするとダメなようです。
どうしたらいいでしょうか。
0057デフォルトの名無しさん2010/08/25(水) 01:51:58
いたちごっこをしたいのか
0058デフォルトの名無しさん2010/08/25(水) 01:58:44
くそー。糞ゲーのくせにこういうところは全力なんだなー。
0059デフォルトの名無しさん2010/08/25(水) 02:02:22
ドライバを書く
0060デフォルトの名無しさん2010/08/25(水) 02:17:02
対策される度ここに聞きに来る気かよ…
BANされた方がいいかもね
0061デフォルトの名無しさん2010/08/25(水) 07:32:24
糞ゲーならやらなきゃいいのに。
馬鹿の考えることは微塵も理解できない。
0062デフォルトの名無しさん2010/08/25(水) 07:50:05
実はスカトロゲーの意
0063デフォルトの名無しさん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:06
んがんぐ
0069デフォルトの名無しさん2010/08/25(水) 12:06:36
安全でないライブラリのロードにより、リモートでコードが実行される
ttp://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:17
treectrlってlistctrlみたいに仮想で出来ないよね?
1万件前後を子ノードに追加したら糞重くてどうにかしたい
一応LPSTR_TEXTCALLBACKにしてTVM_INSERTITEMしてみてるけど
0071デフォルトの名無しさん2010/08/25(水) 23:15:41
>>67
フック

>>70
WM_SETREDRAW
0072デフォルトの名無しさん2010/08/26(木) 03:36:44
CreateSolidBrushを使用すると、外枠が黒で囲まれた四角が描けますが
この外枠と内側を同じ色にした四角を描くAPIがあれば教えてください
0073デフォルトの名無しさん2010/08/26(木) 08:07:34
CreateSolidBrushはブラシを作るだけで四角は描けません。
0074デフォルトの名無しさん2010/08/26(木) 09:34:58
FillRect
0075デフォルトの名無しさん2010/08/26(木) 11:51:19
外枠はBrushではなくPenの担当ではなくて?
0076672010/08/26(木) 17:07:00
>>71
回答有難うございます。
どう言ったメッセージをフックすれば宜しいのでしょうか。
0077デフォルトの名無しさん2010/08/26(木) 17:14:33
FillRect使うんだったらPenは関係ないね。
ごめんね
0078デフォルトの名無しさん2010/08/26(木) 18:32:11
Proxyに関するAPIの宣言について、参考になるHPでも置いていってくれないか?
真面目にググッた訳じゃないけど、エンドユーザー側の使い方しか出てこなくて、APIの宣言が分からなくて。
0079デフォルトの名無しさん2010/08/26(木) 18:34:30
いきなりどうしたの?
質問の続きならレス番書いてくれないか
0080デフォルトの名無しさん2010/08/26(木) 19:13:18
>>79
マルチしね
0081デフォルトの名無しさん2010/08/26(木) 19:14:14
ごめん
死ぬのは>>78だ
0082デフォルトの名無しさん2010/08/26(木) 19:14:51
むしろお前が
0083デフォルトの名無しさん2010/08/26(木) 19:20:49
10分間スリープモードにさせるとか出来るAPIない?
0084デフォルトの名無しさん2010/08/26(木) 19:24:12
>>82
死ね
0085デフォルトの名無しさん2010/08/26(木) 19:27:14
ttp://d.hatena.ne.jp/kawango/20090612/1244802392
他人を説得するとき、ぼくが必要だと思うのは、相手の言葉、相手の理屈をつかって話せないとだめだということだ。
自分の理屈は自分と同じ知識をもっているひとにしか通用しない。

相手が理解できない理屈をふりかざす人間が多すぎる。相手の知識、常識をつかって理屈をくみたてないと意味がない
0086デフォルトの名無しさん2010/08/26(木) 19:38:52
>>83
WaitableTimerを使うと、指定した時間に起こすことができる。
0087デフォルトの名無しさん2010/08/26(木) 19:40:24
>>83
たしか画面の外にマウスカーソルを持っていくとスリープするツールがあったような
0088デフォルトの名無しさん2010/08/26(木) 20:10:30
>>76
OSによる
タスクバーの部分がタブだったりツールバーだったりする
ググりゃ出てくる

explorer.exeにDLLを注入できればあとはいじり放題
0089デフォルトの名無しさん2010/08/26(木) 20:17:14
srud(>>80);
0090デフォルトの名無しさん2010/08/26(木) 20:19:17
セキュリティで保護された DLL のプリロードの攻撃を防ぐためにライブラリの読み込み
ttp://support.microsoft.com/kb/2389418/
0091デフォルトの名無しさん2010/08/26(木) 20:28:30
>>83
無い。
0092デフォルトの名無しさん2010/08/26(木) 22:11:46
>>91
あるだろ。
しかもすでに正解が書いてあるのに、どれだけ馬鹿なんだよ。
0093デフォルトの名無しさん2010/08/26(木) 23:05:04
>>92
無いよ。
馬鹿は発言するな。
0094デフォルトの名無しさん2010/08/27(金) 00:02:09
Thread.Sleepと電源のスリープ勘違いしてるとか救えなさすぎるだろ
0095デフォルトの名無しさん2010/08/27(金) 01:44:36
なんで俺が既にWaitableTimerで出来るって回答してるのに、無いとか言ってる奴がいるんだ。

ttp://msdn.microsoft.com/ja-jp/library/cc429355.aspx

fResume
タイマがシグナル状態になったときにシステムを中断電源節約モードから元に戻すかどうかを指定します。
0096デフォルトの名無しさん2010/08/27(金) 05:33:52
>>> from ctypes import *
>>> dueTime = c_longlong(100000000L)
>>> windll.kernel32.SetWaitableTimer(windll.kernel32.CreateWaitableTimerW(0,True,0),pointer(dueTime),0,0,0,True)
1
0097デフォルトの名無しさん2010/08/27(金) 05:45:13
>>95
>>94
0098デフォルトの名無しさん2010/08/27(金) 06:20:40
【古谷経衡】日韓のこれから NHKのこれから[桜H22/8/25]
ttp://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
>>94
タイマーを設定してから、休止モードなりスリープなりさせると、
その時間で復帰するんだよ。
無知なんだから黙っていればいいのに。
0100デフォルトの名無しさん2010/08/27(金) 07:19:10
スリープモードの話題に便乗
スリープモードに入ると、何かアプリにメッセージ来るの?
WM_ENDSSESION見たい感じで。WinVistaとか無いから調べられん
0101デフォルトの名無しさん2010/08/27(金) 07:42:19
Vista以降でもXPと同様、スリープに入る直前にWM_POWERBROADCASTが来る。
メッセージへの応答でスリープを拒否れないとか、
メッセージを送らずにスリープに入るのは不可能になったとかの違いはあるけど。
0102デフォルトの名無しさん2010/08/27(金) 08:46:35
飼い猫か嫁にPCの電源いれといてくれと頼んでおくほうが楽だな
0103デフォルトの名無しさん2010/08/27(金) 11:34:55
Windowsのサービスプログラムで、
現在ログインしているユーザがいるかの判定を行いたいのですが
どのようにすればいいでしょうか?
0104デフォルトの名無しさん2010/08/27(金) 11:45:12
GetUserName
0105デフォルトの名無しさん2010/08/27(金) 11:49:52
http://social.msdn.microsoft.com/forums/ja-JP/vcgeneralja/thread/68161dc5-4219-484b-9005-56a8022c9629/
しかし、プログラム名に依存するとはいえ、こんな基本的な API の呼び出しで例外が発生するとなると
 Windows Vista って大丈夫なのかちょっと不安になります。
0106デフォルトの名無しさん2010/08/27(金) 12:35:42
>>95
悪い、XPだとできた
NT4で試したときにうまくいかなかくてな・・・
0107デフォルトの名無しさん2010/08/27(金) 12:59:40
NT4ってACPI対応してたっけ…?
0108デフォルトの名無しさん2010/08/27(金) 18:11:24
ファイル等をドラッグ中に、マウスカーソルがIDC_NO(禁止カーソル)になった事を取得するにはどの関数を使えばよいのでしょうか。
GetCursorInfo()して取得したhCursorをLoadCursor(NULL,IDC_NO)と比較しても、反応してくれません。
0109デフォルトの名無しさん2010/08/27(金) 19:51:57
NT4だと独自実装のしかないんじゃなかったかな。
スリープとかは基本的にOSにとって想定外の事柄だったはず。
0110デフォルトの名無しさん2010/08/27(金) 19:59:51
あるスレッドがSleepしているかどうかを厳密にチェックする方法はありますか?

直前にフラグをセットしても、実際にSleepが呼び出されるまでは起きている状態なので
この状態でスレッドを起こす処理が入ってしまい色々と問題が起きてしまってます。

Sleepからの解除はコールバック設定出来るのですが…
0111デフォルトの名無しさん2010/08/27(金) 20:14:45
どちらかというと他のスレッドがスリープしているかを知らないで済むような仕組みを作った方が簡単
寝てる側はイベント待機させていおいて 起こす側はSetEventするだけで済むようにしたり
共有フラグ使うならクリティカルセクション使うとか
0112デフォルトの名無しさん2010/08/27(金) 21:56:19
>>110
原理的に不可能
チェック関数から戻った直後にスレッド切り替えが発生して
そのスレッドが起きたらどうなるの?

原理的に不可能なはずのIsBadReadPtrとかは存在してて
deprecateされてるのはご愛嬌
0113デフォルトの名無しさん2010/08/27(金) 22:00:28
>>108
OLEドラッグアンドドロップならIDropTarget::DragOverから戻ってきたときにpdwEffectを見る
OLEドラッグアンドドロップでない場合とか自分がdrop sourceではなく
カーソルの状態を横から調べたいという場合は公開された方法はなさげ
0114デフォルトの名無しさん2010/08/29(日) 10:57:18
>>106
お前は10年以上前の知識で無い無い連呼してたのか・・・
公害級の老害だな
0115デフォルトの名無しさん2010/08/29(日) 16:20:13
スリープ中に電源ボタンを押さずにソフト的に起こす方法ってない?
0116デフォルトの名無しさん2010/08/29(日) 16:22:23
Wake on LANとか?
0117デフォルトの名無しさん2010/08/29(日) 21:03:40
System Wake-up Events
ttp://msdn.microsoft.com/en-us/library/aa373235(v=VS.85).aspx
0118デフォルトの名無しさん2010/08/29(日) 21:21:47
---------
Hoge(&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:01
つ CMenu::ModifyMenu()
0120デフォルトの名無しさん2010/08/29(日) 22:11:55
MFCはスレ違い
0121デフォルトの名無しさん2010/08/30(月) 21:11:35
>>119
それは文字列変更するだけじゃんw
0122デフォルトの名無しさん2010/08/30(月) 21:25:52
MF_POPUPを付けたり外したりすればちゃんとそれに連動して変わるべ
0123デフォルトの名無しさん2010/08/30(月) 22:00:13
なんだ、"Hoge(&H)"を"Bar(&B)"に変えたいんじゃないのか。
Hogeをサブメニューにして下位にBarを入れたいんか。 "→"はそういうつもりだったか!
大いなる勘違い、すまんww
0124デフォルトの名無しさん2010/08/30(月) 23:14:44
人に説明するって難しいよNE!
0125デフォルトの名無しさん2010/08/30(月) 23:50:59
GetMenuでメニューのハンドル取って
そのハンドルからGetSubMenuでインデックス指定してサブメニューのハンドル取って
そのハンドルからサブメニューのHoge(&H)をSetMenuItemInfoでサブメニューに変更、そのときにCreateMenuでメニューを突っ込んでおく
で、そのメニューにInsertMenuItemでBar(&B)の項目を追加すると出来たけど、メンドイ
0126デフォルトの名無しさん2010/08/31(火) 12:38:16
C#でWIN32APIを使って名前付きパイプのクライアント側をつくっています。

C++のサーバー側では
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しているのになぜ失敗するのでしょうか?
01271262010/08/31(火) 12:49:42
クライアント側を元通りに
CreateFile→パイプへの書き込み処理→CloseHandle
に直してから、次の操作をしてみました。
�@サーバー立ち上げ
�Aクライアント立ち上げ
�Bクライアントでパイプ通信→成功
�Cクライアント終了
�Dクライアント再立ち上げでパイプ通信→CreateFile失敗

サーバーを立ち上げ直さないと、二回目のCreateFileに失敗します。
0128デフォルトの名無しさん2010/08/31(火) 13:04:00
GetLastErrorで詳細を調べる
01291262010/08/31(火) 13:28:37
>>128
アドバイスありがとう御座います。

ERROR_PIPE_BUSY 231 0x000000E7 すべてのパイプ インスタンスがビジーです。
このエラーがでました。
パイプのハンドルの開放や再接続に思った以上に時間がかかるのか、
なにか手順が欠けているのか不明で引き続き調べています。
01301262010/08/31(火) 14:32:12
何らかの手順ミスにより、クライアントのCloseHandleで接続が切れてないのかと思い、
サーバー側でのパイプ作成時のインスタンス数を3くらいに増やしても結果は同じでした。
(つながったままのが最大2個残っても再度CreateFile出来るかと思った)

時間が思った以上にかかるのかと思い、一回目の通信と二回目の通信に一分くらい開けても
結果は同じでした。さすがにこれ以上長いのはあり得ない様な気がします。

自分が参考にしたサイトでは使われてなかったサーバー側のdisconnectNamedPipeを一回通信のたびに
実行しても戻り値を見ると失敗しており、結果も変わりませんでした。

そもそもクライアント側のCloseHandleは戻り値を見ると成功しています。

関数内でClosehandleとCreateFileを挟まずに連続でWritefileとシグナルイベント発生のみをすると
正常に複数回通信できます。
ただ、プログラム開始時のみCreateFileして終了時にclosehandleするようにすれば部分的には解決しますが、
本質的に理解出来ないままになる上に、クライアントの再起動後に接続出来なくなってしまいます。

原因が想像つく方おられませんでしょうか?
0131デフォルトの名無しさん2010/08/31(火) 14:38:50
serverでDisconnectNamedPipe - CloseHandleをしていないとか。
0132デフォルトの名無しさん2010/08/31(火) 14:43:21
memory leak
01331262010/08/31(火) 14:53:00
http://homepage2.nifty.com/c_lang/intro2/no_122.htm
一応このサイトを参考にしています。
クライアント側はC#なので少し内容が違ってますが、動きの基本は同じです。
01341262010/08/31(火) 15:18:20
>>131

通信一回ごとにDisconnectNamedPipeとCloseHandleを行い、
必然的に必要になってくるCreateNamedPipeを通信一回ごとに作り直せば動きます。

名前付きパイプというのはこういうものなんでしょうか?
クライアントとの接続確立一回に対して、サーバーもパイプを一回ずつ作っていく物なんでしょうか?
サーバーは一度作っておけば、何度でもクライアントとつなぎ直せると思ってたのですが、
間違いでしょうか?
0135デフォルトの名無しさん2010/08/31(火) 16:07:15
それはパイプじゃなくてソケットだな
01361312010/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:40
DisconnectしたらConnectしなおさないといけないんじゃないの?
CreateNamedPipe→ConnectNamedPipe→ReadFile→DisconnectNamedPipe→ConnectNamedPipeに戻ってループ
01381262010/08/31(火) 16:46:44
>>136
パイプのハンドルはサーバー側しか分からず、クライアント側はパイプの名前で指定して、
ファイルハンドルを取得し、WriteFileの第一引数はそのファイルハンドルになり、
SetNamedPipeHandleStateの第一引数に入れられるものが分からないのですが、
ファイルハンドルとパイプのハンドルは同じ物でしょうか?

一応やってみるとプログラムに例外が発生してフリーズしました。
0139デフォルトの名無しさん2010/08/31(火) 17:00:53
一応やってみるとプログラムに例外が発生してフリーズしました。
一応やってみるとプログラムに例外が発生してフリーズしました。
一応やってみるとプログラムに例外が発生してフリーズしました。
一応やってみるとプログラムに例外が発生してフリーズしました。
一応やってみるとプログラムに例外が発生してフリーズしました。
01401262010/08/31(火) 17:00:56
>>137
分からない事だらけで想像でしかありませんが、DisconnectNamedPipeがサーバー側からの切断、
クライアント側はファイルハンドルのclosehandleで切断になるのかなと想像してます。

んでクライアント側から切断したあと、ConnectNamedPipeでまたないとひょっとしたら
クライアントのCreateFileで成功しないのかもしれない、つまりそれが当たりかもしれないとも思いつつ、
引数がなんか面倒そうなのと、眠気が限界なので起きてから試そうと思います。

いろいろアドバイスくださった方々ありがとうございました。
01411312010/08/31(火) 17:11:17
The server process must call DisconnectNamedPipe to
disconnect 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
WH_CALLWNDPROCでフックしたメッセージを、サブクラス化以外で潰す方法はありますか?
もしありましたら教えて下さい。
01431262010/09/01(水) 09:32:34
二回目の接続に成功しました。
猫でもわかるのサイトと変えたのはシグナルによるタイミング同期ではなく、
サーバー側でConnectNamedPipeを実行。これによりクライアントがCreateFileするまで処理が止まります。
そして情報のやり取りが終った跡、DisconnectNamedPipe。
ここで全ての原因の秘密仕様として接続をConncectNamedPipeでやって置かなければ
ERROR_INVALID_HANDLEがでてDisconnectが成功しない。

その結果クライアントと繋がったままのような状態になり、クライアントの二回目の接続で失敗します。

参考にしたサイトではConnectNamedPipeを使用しておらず、ググって似たような事が起こってる質問に対しては
「Connectしないで何故一回でも成功しているのか、そっちのほうが不思議だ」などの書き込みもあり、
正規の方法ではないのかもしれません。
少なくとも二回目の接続を通常の手段で行うことが不可能な作りなのではないかと思いました。
0144デフォルトの名無しさん2010/09/01(水) 10:18:12
日本語で桶
0145デフォルトの名無しさん2010/09/01(水) 10:40:27
>>143
MSDN読めとしかいいようがないw
0146デフォルトの名無しさん2010/09/01(水) 10:46:27
最初にgoogle先生に聞くんじゃなくてMSDN読めよ…
01471312010/09/01(水) 10:58:37
>>143
これはひどい
0148デフォルトの名無しさん2010/09/01(水) 12:50:33
ワッ
0149デフォルトの名無しさん2010/09/01(水) 12:51:09
ユーザが入力したデータをファイルに保存して、そのファイルを再度読み込んだりする状況で
Unicodeの依存文字使われたときってどう管理すればいいのかな?
普通にUnicodeとして書き出すと、ファイルから編集出来ないけど、アプリで管理できればおkなの?
0150デフォルトの名無しさん2010/09/01(水) 13:00:45
>普通にUnicodeとして書き出すと、ファイルから編集出来ない

95でも使ってんの?
0151デフォルトの名無しさん2010/09/01(水) 13:06:39
なんだろうな
notepad.exeでもないし
emacsかな
0152デフォルトの名無しさん2010/09/01(水) 13:17:55
ファイルに保存するだけならぴゅう太でカセットテープでも問題ないが
0153デフォルトの名無しさん2010/09/01(水) 14:15:14
WideCharToMultiByte()
MultiByteToWideChar()
0154デフォルトの名無しさん2010/09/01(水) 14:43:57
TCHAR szBuffer[256] = TEXT("SAMPLE");
WriteFile( hFile, szBuffer, lstrlen(szBuffer) << 1, &dwWriteSize, NULL );

こんな感じで書き出すと、"S A M P L E"ってなるけど
0155デフォルトの名無しさん2010/09/01(水) 14:51:17
Byte Order Markがない
0156デフォルトの名無しさん2010/09/01(水) 15:35:13
>>155
マジサンクス!所で、Unicodeで出力したテキストって98でも普通に表示できるの?
98ってW系の関数なかったような
0157デフォルトの名無しさん2010/09/01(水) 15:44:15
補足。表示出来るのって意味は、鷗のようにUnicode依存文字のことね
0158デフォルトの名無しさん2010/09/01(水) 15:57:07
当たり前だけど表示できない
0159デフォルトの名無しさん2010/09/01(水) 15:58:22
Windows95からTextOutWやExtTextOutWはサポートされている
Unicodeフォントを用意すれば表示は出来る
0160デフォルトの名無しさん2010/09/01(水) 18:21:53
Unicode依存文字って言い方に抵抗を感じる…
01611422010/09/01(水) 19:17:39
改めて調べてみましたが、どうやらサブクラス化以外の方法は無いようでした。

それでは、同じくWH_CALLWNDPROCフックにて、例えば、全てのウインドウのWM_CLOSEを受け取る場合、
何所でサブクラス化を行い、解除すればよいのでしょうか。

因みに、ここでの「全てのウインドウ」はタスクバーに表示されるようなものです。
0162デフォルトの名無しさん2010/09/01(水) 19:23:25
フック関係ねえじゃん
1個1個サブクラス化してまわればいいだろ
0163デフォルトの名無しさん2010/09/01(水) 21:25:51
>>160
おつむがガラパゴス文字コード依存なんだろ
0164デフォルトの名無しさん2010/09/01(水) 21:27:04
WH_CBTじゃあかんの?
0165デフォルトの名無しさん2010/09/01(水) 21:38:56
今昔文字鏡やTRONコードなどその他の文字セットに含まれずUnicodeにのみ含まれる文字がUnicode依存文字
0166デフォルトの名無しさん2010/09/01(水) 22:01:54
厨くさい表現
0167デフォルトの名無しさん2010/09/02(木) 14:26:51
>>160
ではどのように表現すべきでしょうか?
0168デフォルトの名無しさん2010/09/02(木) 23:00:51
iCod
01691422010/09/04(土) 16:33:49
WH_CBTで試みたのですが、HCBT_DESTROYWNDが飛んできた際、
ウインドウハンドルを取得する方法が分かりません。
ご教授お願いします。

0170デフォルトの名無しさん2010/09/04(土) 19:43:54
MSDNのCBTProcのところを読み直すと良いよ。
0171デフォルトの名無しさん2010/09/05(日) 01:00:53
CreateDialog(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), hwnd, DlgProc);
は成功するんだけど、

CreateDialog(hInstance, TEXT("IDD_DIALOG1"), hwnd, DlgProc);
が失敗するのは何故?

http://msdn.microsoft.com/ja-jp/library/cc410690.aspxには二番目の引数のlpTemplateには
「ダイアログボックステンプレートの名前を指定する NULL で終わる文字列へのポインタか〜」
って記述があるんだけど
0172デフォルトの名無しさん2010/09/05(日) 01:02:28
Cの基本からやりなおしておけ
0173デフォルトの名無しさん2010/09/05(日) 09:46:07
>>171
MAKEINTRESOURCEで成功するってことは IDD_DIALOG1 は整数値のリソース識別子なんだろ
そして "IDD_DIALOG1" っていう文字列でのリソース識別子は存在しない → 失敗する
0174デフォルトの名無しさん2010/09/05(日) 13:42:44
リソースエディタでダイアログ作る時、
IDD_DIALOG1
ってやらないで、
"IDD_DIALOG1"
ってやればTEXTの方使える。
両者は別物なので両方作ったりもできるよ
0175デフォルトの名無しさん2010/09/06(月) 16:26:33
ALT+TABで表示されるダイアログと同じスタイルのダイアログを作りたいのですが、
どういうスタイルで作ればいいでしょうか?

WS_BORDER | WS_POPUPだと、同じ形だけどDwmExtendFrameIntoClientAreaをしたときに
フレームだけ描画されてウインドウ内が完全に透明になってしまいます
0176デフォルトの名無しさん2010/09/07(火) 11:49:57
普通にCreateWindowじゃねぇの?
0177デフォルトの名無しさん2010/09/07(火) 17:13:05
CreateWindowするときのウインドウスタイルをしりたいのです
0178デフォルトの名無しさん2010/09/07(火) 17:25:37
窓のスタイルを記録するツールでも作れば
0179デフォルトの名無しさん2010/09/07(火) 17:57:55
タスクスケジューラを使わずに自前で定時処理(毎時0分と30分等)をしたいのですが、
時刻をポーリングする以外に何かAPIでコールバックしてくれるようなものってありますか?
0180デフォルトの名無しさん2010/09/07(火) 18:20:09
>>179
waitable timerを使えば時間になったら起こしてもらうことができる。
0181デフォルトの名無しさん2010/09/07(火) 18:33:36
>>180
期待した動作ができそうです。ありがとうございました
0182デフォルトの名無しさん2010/09/08(水) 01:08:19
>>177
親ウィンドウをデスクトップにするスタイルじゃなくてか?
0183デフォルトの名無しさん2010/09/08(水) 01:19:01
WIN32API初心者なのですが、スクロールを実装するところで数日躓いています。
case WM_VSCROLLで分岐処理して、ScrollWindow()、UpdateWindow()と関数を使うまでは、分かるのですが、その後、WM_PAINTに飛んでから、どう書いていったらよいのでしょうか?

猫でもわかる、を参考にしているのですが、そこでは、画面全体の画像をクライアント領域に貼る、という話の流れなので、そうではなくてごく普通のスクロールをさせるにはどうすればよいのでしょうか。
0184デフォルトの名無しさん2010/09/08(水) 01:23:29
なにをどうしたいの?
0185デフォルトの名無しさん2010/09/08(水) 01:37:32
>>183
表示されるべき内容をそのまま描画するだけ。
ぶっちゃけ表示領域を全更新してしまってもいいが、
それだとScrollWindowの意味があまり無くなってしまうから、
通常はスクロールの結果無効領域になった箇所を描画する。
ちなみに、スクロールに応じてSetWindow/ViewOrgExしてくれるような
サービスは一切無いので全て自分で管理するように。
0186デフォルトの名無しさん2010/09/08(水) 01:54:35
ダブルバッファリングだろ常考
0187デフォルトの名無しさん2010/09/08(水) 10:05:07
別にこの場合はシングルバッファでもかまわん
0188デフォルトの名無しさん2010/09/08(水) 14:40:07
俺はクライアント領域サイズのビットマップ作っといてスクロールしたらビットマップの描画更新
WM_PAINTではビットマップ貼るだけ
描画に必要な情報だけ保持
0189デフォルトの名無しさん2010/09/08(水) 14:50:04
>>188
それダブルバッファリング
0190デフォルトの名無しさん2010/09/08(水) 15:01:42
似てるけど
0191デフォルトの名無しさん2010/09/08(水) 18:52:54
似てる
0192デフォルトの名無しさん2010/09/08(水) 20:35:45
似てる・・・だと
0193デフォルトの名無しさん2010/09/08(水) 21:33:29
似てるんじゃね?
0194デフォルトの名無しさん2010/09/08(水) 21:47:28
似て非なるもの?
0195デフォルトの名無しさん2010/09/09(木) 00:56:50
似てそうで似てないけど少しだけ似てる
0196デフォルトの名無しさん2010/09/09(木) 01:13:15
GPUに直結してるかどうかの違いしかなくない?
0197デフォルトの名無しさん2010/09/09(木) 19:12:09
は?
0198デフォルトの名無しさん2010/09/10(金) 01:12:54
ひ?
0199デフォルトの名無しさん2010/09/10(金) 07:18:07
ふ?
0200デフォルトの名無しさん2010/09/10(金) 08:59:09
ほ?
0201デフォルトの名無しさん2010/09/10(金) 21:58:44
へ?
0202デフォルトの名無しさん2010/09/11(土) 01:33:19
はっ!やだ朝だ
ひぃ!今何時?
ふぅ.. まだ平気あと5分
へっ?急がなきゃ
ホッ!トミルクでGO! 1日は断然万全
0203デフォルトの名無しさん2010/09/11(土) 11:39:18
猛烈な一般保護違反が発生しました。


         [OK]
02041832010/09/11(土) 13:26:18
>>184
ブラウザを作っていて、単純に(ソケットで受信したHTTPの)文字列を描画したいのです。今のままだと、クライアント領域にはすべての文字列が描画されていないので。

>>185
ありがとうございます。
「表示されるべき内容」って僕の場合だと文字列のことですかね・・・?
いまいちこのあたりの背景がわかっていないで質問しています。
スクロールって自分で文字列を少しづつ描画させていくのでしょうか? それとも関数を使えば、スクロールすると勝手に文字列が見えてくるものなんでしょうか。
0205デフォルトの名無しさん2010/09/11(土) 14:26:01
そんな漠然とした質問じゃ、いろいろとしか言いようがない。
0206デフォルトの名無しさん2010/09/11(土) 15:14:58
自分で書かなきゃ誰が書いてくれると思ってるんだよ。
お前はエディットコントロールでも貼り付けておけ
0207デフォルトの名無しさん2010/09/11(土) 16:20:51
スクロールメッセージのデフォルト動作は中途半端だから、
デフォルトプロシージャに処理させずに自分で書き直した方が速いと思うけどね。
0208デフォルトの名無しさん2010/09/11(土) 16:29:16
何がわかっていないのかをわかっていないひとだということだけはわかった
0209デフォルトの名無しさん2010/09/11(土) 16:53:45
なるほど、わからん。
0210デフォルトの名無しさん2010/09/11(土) 17:41:43
>>208
おまいはなにかをいわんとしてなにもいっておらんのう
0211デフォルトの名無しさん2010/09/11(土) 17:46:21
とりあえずメッセージがとんできたときにスクロールした分だけ文字列を書き直せ。
0212デフォルトの名無しさん2010/09/11(土) 18:02:57
嘘を嘘と見抜けない人には2chは向いていないと思う
0213デフォルトの名無しさん2010/09/12(日) 00:14:43
フォントのサイズと行数とスクロールバーの位置さえわかれば自前でなんとかなる
0214デフォルトの名無しさん2010/09/12(日) 17:28:22
今の時代でAPIのセマフォやイベント同期オブジェクトを使う状況とは
どんなときですか?
0215デフォルトの名無しさん2010/09/12(日) 17:31:12
時代と来ましたか
ちょっと笑った
0216デフォルトの名無しさん2010/09/12(日) 18:14:18
スマポとかセマフォとか勝手に略されてもわからねえんだよおおお
0217デフォルトの名無しさん2010/09/12(日) 18:16:33
セマフォはフルネームでセマ、、、、セマ、、、なんだっけ?
0218デフォルトの名無しさん2010/09/12(日) 18:24:54
SemaphoreはSemaphoreだろ。
0219デフォルトの名無しさん2010/09/12(日) 18:34:26
セマートフォン
0220デフォルトの名無しさん2010/09/12(日) 20:06:23
セマフォは略称じゃねぇだろ……
っていうか、マルチスレッド当たり前のこのご時世にその質問はないわ……
0221デフォルトの名無しさん2010/09/12(日) 20:08:02
スマートポン
0222デフォルトの名無しさん2010/09/12(日) 20:09:32
甲種腕木式二灯場内出発信号機
0223デフォルトの名無しさん2010/09/12(日) 20:14:36
Metered Sectionってどうすれば使えるの?
0224デフォルトの名無しさん2010/09/12(日) 20:28:49
抱いてみたい同期オブジェクトランキング
1イベント
2ミューテクス
3クリティカルセクション
4セマフォ
5砂時計カーソル

異論は認める
0225デフォルトの名無しさん2010/09/12(日) 20:31:36
APIじゃないよ。しかもバグがあったらしい
http://s-project.appspot.com/notes_vc.html
かつてRitcherのWin32 Q&Aに載ってたOPTEXみたいなもの。そういやあれも
最初のバージョンにはバグがあったな。マルチスレッドの同期はそれだけ難しいってこと
0226デフォルトの名無しさん2010/09/12(日) 21:14:48
iPhone
iPad
iPod
すべてまとめると
iPhoge
で桶
0227デフォルトの名無しさん2010/09/16(木) 12:21:54
自動的に折り返されるエディットコントロールで、
入力された文字列やコントロール幅、フォントに応じて高さを自動的に変えたい
のですが、
何か良い方法はありませんでしょうか。

エディットボックスのデバイスコンテキストと描画領域をコピーして、
そこへDrawTextで文字列を書き、戻り値を取得する方法を考えたのですが、
うまくできません…
0228デフォルトの名無しさん2010/09/16(木) 17:41:04
Windows APIはアセンブラ相当。
0229デフォルトの名無しさん2010/09/16(木) 19:17:56
>>227
なんとなくDCにフォントを選択していない予感がする。
0230デフォルトの名無しさん2010/09/16(木) 20:09:50
管理者権限の無いプログラムから、他のプログラムを管理者権限で起動させるためには
どのようにすればよいでしょうか?もちろん、起動時にUACのダイアログを表示します。

起動されるプログラムはマニフェストを付加していません。
0231デフォルトの名無しさん2010/09/16(木) 20:15:08
ShellExecuteEx SHELLEXECUTEINFO.lpVerb = "runas"
0232デフォルトの名無しさん2010/09/16(木) 20:16:22
ShellExecute RunAsはマニフェスト要らないと思うけど
試したけど起動する
02332272010/09/17(金) 01:49:53
>>229
それ最初にやらかしましたw
横に同じ条件で実際にDrawText実行して、すぐに気づきましたが…

結局エディットコントロールのサイズを取得するときに
EM_GETRECTメッセージ使わずに、GetClientRect使っていたために
ズレが発生していたのが原因で自己解決しました。
DrawText関数と、DT_CALCRECTフラグの組み合わせでうまくいきました。

スタティックコントロールだと、GetClientRect使わないとナンですけどね。。
02342302010/09/17(金) 09:43:22
>> 231, 232

ありがとうございます。 今から試してみますm(_ _)m
0235デフォルトの名無しさん2010/09/18(土) 02:31:56
Win32 APIで、チェックボックスやラジオボタンなどのボタンコントロールの
AutoSize的なコトを実現する上手い方法はありませんか?

チェックボックスのクライアント領域から、フォーカス枠のつく文字列の描かれる部分の領域を
計算できなくて困っています。

OBM_CHECKBOXESでチェックボックスのアイコンのサイズを得て、
そこからフォーカス枠2px分と、枠とチェックボックスの間5px分、
そして文字列の領域の横幅よりも広ければ、問題なく描画される"だろう"と言うところまではわかるのですが、
その文字列の領域がクライアント領域からどれだけずれているかを、
確かに求める方法がわかりません。
0236デフォルトの名無しさん2010/09/18(土) 02:43:53
>>235
sizerでも使えよ
拘る意味がない
02372352010/09/18(土) 03:07:05
>>236
すでにWTLでがりがり書いてしまっているので、今更wxとかには移せないです…
0238デフォルトの名無しさん2010/09/18(土) 08:06:42
実際に書いてから修正する
0239デフォルトの名無しさん2010/09/19(日) 01:00:15
GetWindowRectじゃダメかい?
0240デフォルトの名無しさん2010/09/19(日) 01:09:49
EnumWndProcをEXEファイルで使用するとタスクマネージャで
出てくるようなウィンドウネームが拾えるのですが
サービスに登録して動作させると
SYSTEM AGENT COM WINDOWといった見たことの無い
ウィンドウネームが帰ってきます。
EnumWindows
OpenInputDesktopやOpenDesktopを使ってEnumDesktopWindows
も試してみましたが結果は同じでした。
サービスに登録して動かす場合から、見えているウィンドウ名を
取得するにはどうすればよいのでしょうか。
0241デフォルトの名無しさん2010/09/19(日) 01:43:21
サービスはユーザに見えないデスクトップ上で動いている
ttp://msdn.microsoft.com/ja-jp/windows/dd871151.aspx
02422402010/09/19(日) 02:13:14
>>241
ありがとうございます。
セッション1と0と言う事で見えないとの理解でよいでしょうか。
XP・7の互換性を考えながらと言う点はさておき、
使用OSがXPなので見えても良い様に思い
OpenDesktop("default"・・・・
OpenDesktop("winsta0\default"・・・・
ともしてみましたが結果変わらずでした。。
どうも、勘違いか設定が違うのでしょうね。
「サービスはユーザに見えないデスクトップ上で動いている」
との助言よりもう少しデスクトップの指定方法を考えて見ます。
・・・違うデスクトップの感知は出来ないなんてないですよね(汗
02432402010/09/19(日) 02:35:10
「サービスはユーザに見えないデスクトップ上で動いている」
すいません。やっと意味が分かりました。。
たとえOpenDesktop("winsta0\default"としても
説明:既存のデスクトップのハンドルを取得します。
なので無駄なのですね。。。
ちょっと指定方法を考えます。ありがとうございます。
0244デフォルトの名無しさん2010/09/19(日) 02:49:40
>>240
サービスのプロパティで
「デスクトップとの対話を許可」
のチェックボックスはどうなってる?
0245デフォルトの名無しさん2010/09/19(日) 03:54:15
>>243
SetThreadDesktop
ハンドルを取得しただけじゃ何も起こるわけないだろ
0246デフォルトの名無しさん2010/09/19(日) 13:02:41
Windowsでマルチスレッドの勉強したいんですけど、APIを使う方法を知っておいた
ほうが良いですか?
0247デフォルトの名無しさん2010/09/19(日) 13:10:20
API使わずにどうやってマルチスレッドに・・・openmpか
0248デフォルトの名無しさん2010/09/19(日) 13:13:01
.NETでできるかなと思ったので。
0249デフォルトの名無しさん2010/09/19(日) 13:15:21
.NETだけでできる
そしてマネージスレッドとアンマネージスレッドは混在させるべきでないから
無理に覚えなくていい
0250デフォルトの名無しさん2010/09/19(日) 13:18:08
int flag = 0;

while(1)
{
  if(flag){
    flag = 0;
    main()
  }
  else{
    flag = 1;
    thread_func();
  }
}
0251デフォルトの名無しさん2010/09/19(日) 13:30:08
>>249
そうですか。
APIを使って勉強する場合、.NETでは学べない何か利点はありますか?
0252デフォルトの名無しさん2010/09/19(日) 13:32:20
ない
0253デフォルトの名無しさん2010/09/19(日) 13:42:28
レスありがとうございました。
C#で勉強します。
0254デフォルトの名無しさん2010/09/19(日) 13:44:53
ある
0255デフォルトの名無しさん2010/09/19(日) 13:45:37
ないアル
0256デフォルトの名無しさん2010/09/19(日) 14:32:28
またひとり.NETerが増えたのだ……
0257デフォルトの名無しさん2010/09/19(日) 18:07:25
Win32API と .NET ってどのような違いがあるの?
今からは .NET が主流になるの?
0258デフォルトの名無しさん2010/09/19(日) 18:15:56
.netはwin32apiをラップしたような感じ
もちろんそれだけじゃなくて機能はいろいろ追加されてるけど
0259デフォルトの名無しさん2010/09/19(日) 18:43:26
>>243
EnumDesktopWindowsはだめだっけ?
0260デフォルトの名無しさん2010/09/19(日) 20:14:48
STATICコントロールのテキストを変更すると表示にゴミが残ることがあるんですけど
どうやってきれいにしたらいいでしょうか
0261デフォルトの名無しさん2010/09/19(日) 20:27:34
InvalidateRect
0262デフォルトの名無しさん2010/09/20(月) 00:22:28
>>258
なるほど、サンクス
2つ目の質問についてはどうなのだろう?
0263デフォルトの名無しさん2010/09/20(月) 00:47:40
>.Netが主流
ジャンルによる
処理速度が必要なものはWin32API
開発速度が必要なものは.Net
0264デフォルトの名無しさん2010/09/20(月) 00:58:42
>>263
おぉ、分かりやすい回答ありがとう
.NETは一段階はさむから処理速度が Win32API に劣るが、開発が簡単というわけか
02652352010/09/20(月) 00:58:58
>>239
文字領域から、GetWindowRectにあたる大きさを測れないといけないので、
目的と手段が逆転してしまいます…

>>238
やっぱそれしかないッスか…
どんな環境でも、この値が同じならいいんですけどねぇ
0266デフォルトの名無しさん2010/09/20(月) 01:01:39
ドライバ作る人はセマフォ、ミューテックス、待機APIとか使うのか。
0267デフォルトの名無しさん2010/09/20(月) 02:04:28
>>266
いわゆるWIN32APIは使わない
KeInitializeMutexとかZwSetEventとかドライバ用のAPIを使う
0268デフォルトの名無しさん2010/09/20(月) 02:18:27
Windows環境で実時間を計測したいのですが、
QueryPerformanceCounterはCPUクロック周波数が動的に変動する環境では使えず、
timeGetTimeは精度がPCの時計に依存するので、私の環境では12時間で1秒ほど遅れてしまいます
他にタイマーとして使えるAPIをどなたか教えていただけないでしょうか
0269デフォルトの名無しさん2010/09/20(月) 02:21:11
FAQ
過去スレのどっかにURLあるはず
0270デフォルトの名無しさん2010/09/20(月) 02:24:06
>>246
先ずは、四人の中国人哲学者が四本の箸で飯を食う話を知っておいた方がいい。
0271デフォルトの名無しさん2010/09/20(月) 03:50:25
>>269
過去スレを見れる範囲で1年分探してみたのですが、
システム時刻を取得するものしか見つけられませんでした
検索キーワードだけでも教えていただけないでしょうか
0272デフォルトの名無しさん2010/09/20(月) 04:41:20
NTPじゃだめなん?
0273デフォルトの名無しさん2010/09/20(月) 05:25:02
>>267
なるほど。Win32 APIますます知る必要ないな。
0274デフォルトの名無しさん2010/09/20(月) 09:16:31
>>268
どんな環境でも確実に正しい計測をしたいというなら、それは無理。
何代か前の家のPCなんか、一時間に分単位で時間がずれたりしてたしなw
0275デフォルトの名無しさん2010/09/20(月) 10:30:51
>>261 サンクス!
0276デフォルトの名無しさん2010/09/20(月) 12:09:13
>>268
そういう問題があるからQueryPerformanceCounterは別のハードウェアカウンタ使ってCPUのクロックカウンタは使ってないよ。
時間と時刻のどっちの制度が欲しいの?
02772682010/09/20(月) 13:16:29
>>272
それは全く考えてませんでした
確かにそれなら小さな誤差に抑えられますね
インターネット環境が必須のソフトなので今回はこれで実現できそうです

>>274
うちもOSの時計は酷くずれますが、QueryPerformanceCounterは24時間くらいの計測では目で見てわかるほどの誤差はありませんでした
確実に正確な計測は無理でしょうけど、OSの時計よりはマシな時計を持ってるんじゃないかなーと

>>276
ソースは他人のブログですが、環境によってはCPUのクロックを使用するそうです
自分の環境でもQueryPerformanceFrequencyはCPUのクロックとおぼしき数値を返します
あと欲しかったのは時間の方です

皆さん回答ありがとうございました
timeGetTime+NTPで実現してみようと思います
02782402010/09/20(月) 15:46:13
240,242,243です。
>>259
前回はダメしたが解決しました。
教えて頂いたことを調べなおして以下を使用し解決しました。
OpenWindowStation
SetProcessWindowStation
OpenDesktop
SetThreadDesktop
ご助力頂いた方々と場を借りたことに感謝ですm(__)m
0279デフォルトの名無しさん2010/09/20(月) 17:16:35
>>277
そのブログの記事って古くないか?
QueryPerformanceCounterがCPUのクロック変動の影響受けてたのって
2006年くらいの話だと思うが。
0280デフォルトの名無しさん2010/09/20(月) 17:31:52
277じゃないけどググったら2010-05の記事で検証してるブログ出てきたぞ
俺の環境じゃ検証できないから信憑性についてはアレだけど
0281デフォルトの名無しさん2010/09/20(月) 20:48:54
Windows 7ではさらにAPIが増えててQueryUnbiasedInterruptTime
というのがあるらしい。
説明を読む限り精度はtimeGetTimeと同程度っぽいけど
0282デフォルトの名無しさん2010/09/20(月) 21:22:35
>>280
HALによるのかな?
QueryPerformanceFrequencyでCPUクロックぽいすうちなら信用できない。
1.193182MHzとか3.579545MHzの分周ぽかったらAPM由来のカウンタで信用するとかで判断できないか?
0283デフォルトの名無しさん2010/09/20(月) 21:38:53
HPETだと周波数はいくつになるの?
0284デフォルトの名無しさん2010/09/20(月) 21:48:42
ググルと14318180って数字が出てきたな。
こっちのほうが精度がいいのか。おいらのBIOSはどうかな?
0285デフォルトの名無しさん2010/09/20(月) 21:50:05
>>284
精度じゃなくて分解能だった
0286デフォルトの名無しさん2010/09/20(月) 22:00:09
XPで確かめてみたM/BはDP35DP、CPUはC2D E4400
常に2000110000 だたよ。。。アチャー
CrystalCPUID で見てEIST発動時でも変わらず

同環境のVirtualBox上のXPは常に3579545
0287デフォルトの名無しさん2010/09/20(月) 22:00:46
うちのPCでQueryPerformanceFrequencyを実行すると
2045781って数字が出たんだがこりゃ何じゃ?
0288デフォルトの名無しさん2010/09/20(月) 22:10:20
>>286
実時間の計測に使えるかは試した?
QueryPerformanceFrequencyで得られる値が常に一定なのは普通だと思うけど・・・
0289デフォルトの名無しさん2010/09/20(月) 22:59:30
そういう仕様なもんだから
CPUクロックが使われててかつクロック可変の環境では役に立たない
0290デフォルトの名無しさん2010/09/21(火) 00:16:06
この問題ってAthlon64のCool'n'Quietで起きたんじゃなかったっけ?
これはAMDのドライバ提供で修正されたし、
以降のCPUが対応を放置したりするような事はないと思うのだけどなあ。
CPUドライバが更新されていないXPでないと再現しなさそう。
0291デフォルトの名無しさん2010/09/21(火) 00:17:45
CPUドライバのパッチじゃQueryPerformanceFrequencyの戻り値は常に一定という
MSが決めた仕様は変えられないだろ
0292デフォルトの名無しさん2010/09/21(火) 00:30:39
QueryPerformanceCounterは高分解能タイマーの現在値を返す、
としか定義されていないから大丈夫だろ。
0293デフォルトの名無しさん2010/09/21(火) 00:33:03
http://msdn.microsoft.com/en-us/library/ms644905%28VS.85%29.aspx
> The frequency cannot change while the system is running.
0294デフォルトの名無しさん2010/09/21(火) 00:46:42
>>290
それはRDTSCを自分で使っていたアプリじゃねーの?
0295デフォルトの名無しさん2010/09/21(火) 02:01:05
>>247
CRT
0296デフォルトの名無しさん2010/09/21(火) 07:54:12
Cool'n'Quietのクロック可変と、デュアルコアCPUのRDTSCのコア間での差異は
一応別件扱いなんじゃないかと思う。
KB895980とKB909944がそれぞれに対応するんじゃないかな。

>>293
それはQueryPerformanceFrequencyの返す値を指しているだけだから、
Counterがクロック可変でも一定の速度で刻む値を返せない理由にはならない気が。
どう実装するのかは良く判らないけど。
0297デフォルトの名無しさん2010/09/22(水) 00:45:46
>>296
理論的には確かに不可能ではなさそうだけど
実際に一定の速度で刻むように実装されてると期待できるような状況なのかな
絵に描いた餅じゃ結局使えないんで
0298デフォルトの名無しさん2010/09/22(水) 10:01:08
シベリア板から誘導されてきました。

296 名前:いやあ名無しってほんとにいいもんですね[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:52
マウスキャプチャーしてカーソル位置のWindowを調べてるんだろう
0301デフォルトの名無しさん2010/09/22(水) 10:12:16
えぇーマルチポストと誘導されて同じ書き込みは別物じゃないんですかー!?

やだ。。。いますごく恥ずかしいです。。。
0302デフォルトの名無しさん2010/09/22(水) 10:32:36
>>298
WindowFromPoint
0303デフォルトの名無しさん2010/09/22(水) 16:19:59
デスクトップ上の何も無いことでのダブルクリックを検出したいんだが
どういう実装方法が一般的?
0304デフォルトの名無しさん2010/09/22(水) 16:28:35
デスクトップをサブクラス化する
0305デフォルトの名無しさん2010/09/22(水) 16:32:33
何も無いこと
0306デフォルトの名無しさん2010/09/22(水) 16:34:07
DLLでWindowMessageフックしてrootWindowのマウスメッセージ横取りとか
0307デフォルトの名無しさん2010/09/22(水) 18:35:35
>>298
IP出るのか
0308デフォルトの名無しさん2010/09/22(水) 20:37:10
ボタンにビットマップを貼り付けたいのですが、ググってもなかなかAPIが見つかりません
もしかしてボタンに貼り付けるっていう考え方が間違ってる?
0309デフォルトの名無しさん2010/09/22(水) 20:47:44
オーナードローボタン
0310デフォルトの名無しさん2010/09/22(水) 20:49:59
BM_SETIMAGEかBCM_SETIMAGELISTってところか?
0311デフォルトの名無しさん2010/09/22(水) 20:57:39
サブクラス化
0312デフォルトの名無しさん2010/09/22(水) 23:51:01
>>309-311
レスありがとうございます
>>310さんの方法で実現することが出来ました
助かりました、感謝します
0313デフォルトの名無しさん2010/09/23(木) 18:31:47
カーソルがどのウィンドウ上にあるかを確認したいのですが、
TrackMouseEvent() を使う以外に方法はありますか?
0314デフォルトの名無しさん2010/09/23(木) 18:34:07
WindowFromPoint
0315デフォルトの名無しさん2010/09/23(木) 18:49:06
>>314
こんな便利なAPIがあったとは…!!
ありがとうございます
0316デフォルトの名無しさん2010/09/24(金) 11:27:24
FILE_SHARE_DELETE無しでCreateFileされているファイルに対して
CreateHardLinkして作った新しいリンクを消す方法ってない?
UNIXのunlink(2)相当のことをしたいのだけど
0317デフォルトの名無しさん2010/09/24(金) 17:04:31
>>316
DeleteFile
0318デフォルトの名無しさん2010/09/24(金) 17:57:15
>>317
質問の意図が伝わっていないようだ
FILE_SHARE_DELETE無しでCreateFileされているとDeleteFileはできない
iノード相当のディレクトリエントリだけを消したいのですよ
0319デフォルトの名無しさん2010/09/24(金) 18:56:23
SetFileInformationByHandleでFileDispositionInfo
03203162010/09/24(金) 22:35:27
>>319
Thx
明日にでも試してみるよ
0321デフォルトの名無しさん2010/09/24(金) 22:38:23
今すぐにだ
0322デフォルトの名無しさん2010/09/25(土) 00:45:17
NtDeleteFileなら即座に消えるけどWin32サブシステムからは使われていない
(DeleteFileは>>319の方法で実装されている)
たぶんPOSIXサブシステムのunlinkのために存在するんだろう
0323デフォルトの名無しさん2010/09/25(土) 14:47:47
VSみたいなウィンドウを自由に配置できるあれってどうやればできるの?
0324デフォルトの名無しさん2010/09/25(土) 16:09:13
SetParentで親を乗り換えたりMoveWindowで位置を動かしたりして気合いと根性で
0325デフォルトの名無しさん2010/09/25(土) 17:59:47
スクリーンセーバー発動中かどうかってどう判定すればいいんですか?
0326デフォルトの名無しさん2010/09/25(土) 18:47:28
>>325
スクリーンセーバー 起動中
でぐぐれ
0327デフォルトの名無しさん2010/09/25(土) 19:21:19
わかりませんでした。
0328デフォルトの名無しさん2010/09/25(土) 19:48:26
いいからAPI出せや
0329デフォルトの名無しさん2010/09/25(土) 20:30:25
2件目だぞ
ttp://www.geocities.jp/masa7251/tips/api/api00018.html
0330デフォルトの名無しさん2010/09/25(土) 20:39:52
おいおい正気なのかお前は数えることができるの、か
まとめな思考のなら分かるだろうお前はまちがてるとりうことに
俺はプログラムーだから分かるんたがあまりにも非生産的だろう
0331デフォルトの名無しさん2010/09/25(土) 20:45:55
C言語でおk
0332デフォルトの名無しさん2010/09/25(土) 20:51:34
System.Console.WriteLine("猫");
03333162010/09/25(土) 20:52:29
試してみた

SetFileInformationByHandle(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:14
プ板でやれ
0335デフォルトの名無しさん2010/09/25(土) 21:05:51
定期あげ
0336デフォルトの名無しさん2010/09/26(日) 01:42:52
スレッド1で10ミリ秒単位でHeapReAllocを呼び出してデータを追加していき、スレッド2で50ミリ秒単位で
確保したポインタの内容を読み込むプログラムを実行していると、VC++のデバッグ出力に
 x.exe の 0x001df64a で初回の例外が発生しました: 0xC0000005: 場所 0xfeeefeee を読み込み中にアクセス違反が発生しました。
という出力が頻繁に表示されるのですが、解決策はありますか?
ちなみに、スレッド1のデータ追加処理を実行している間は、フラグを立てて、
スレッド2の読み込み処理をwhile(flag) Sleep(1); のように停止させています。
0337デフォルトの名無しさん2010/09/26(日) 01:46:41
キチガイみてーなプログラムだな
0338デフォルトの名無しさん2010/09/26(日) 01:51:12
>>336
クリティカルセッションか、ミューテックスくらいかねぇー。
処理間隔空けるのもいいかもねー。
0339デフォルトの名無しさん2010/09/26(日) 02:00:00
>>338
便利なAPIですね!
ありがとうございます
0340デフォルトの名無しさん2010/09/26(日) 02:01:06
>>336
ソース張ってみ
0341デフォルトの名無しさん2010/09/26(日) 02:10:56
ビジーウェイト。。
0342デフォルトの名無しさん2010/09/26(日) 02:25:43
ヘッドロック
0343デフォルトの名無しさん2010/09/26(日) 02:36:11
>ちなみに、スレッド1のデータ追加処理を実行している間は、フラグを立てて、
>スレッド2の読み込み処理をwhile(flag) Sleep(1); のように停止させています。
もし仮にそのようなロジックでするなら while(flag) よりも
read/writeそれぞれでシーケンシャルナンバーを記憶し
スレッド1でデータを追加→writeのシーケンシャルナンバーをインクリメント
スレッド2はreadのシーケンシャルナンバーがwriteのそれより小さかったら読み込み・インクリメント
にしたほうが ま だ ま し
03443362010/09/26(日) 02:53:01
クリティカルセクション使ったら全然でなくなりました!
本当にありがとうございます

よくよく考えたら、1ミリ秒あればかなり処理が進んでしまってますねw
0345デフォルトの名無しさん2010/09/26(日) 09:22:34
flagを扱う際のアウトオブオーダーには注意しとけよ。
何も対策しないで他スレッドから見ると、
flagは立っているのにデータはまだ追加されていない状態があり得るからな。
まあ、クリティカルセクションを使った時点で問題無くなったとは思うが。
0346デフォルトの名無しさん2010/09/26(日) 17:21:12
>>343
ま だ ま し とか言って無知な自分をごまかしてるわけねw
0347デフォルトの名無しさん2010/09/26(日) 17:37:23
スレッドならクリティカルセクションとか使うのが普通だろJK
スレッドの基礎レベルだ。勉強しなおした方が良い
0348デフォルトの名無しさん2010/09/26(日) 17:51:08
同期を取るのが必須なのは当然だけど、
最近は、自前でクリティカルセクションを管理するよりも、
たとえばIntel TBBやVC++10のconcurret_queueみたいに、
同期処理入りのライブラリを使う方向に進んでいるように思う。
0349デフォルトの名無しさん2010/09/26(日) 17:57:44
HWND p;
//デスクトップのハンドルを得る
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:36
はいはいあげあげ
0351デフォルトの名無しさん2010/09/26(日) 18:02:36
というわけでhageましたスマソ
0352デフォルトの名無しさん2010/09/26(日) 18:09:51
並列なんてほんとに問題ごとの最適化が必要になるから
ライブラリなど共通部分でできることなんて同じ作業を等分割するくらいしかない
しかも等分割で扱えるデータなんてあまりない
03533492010/09/26(日) 18:14:05
SendMessageをPostMessageにしたら成功しました
お手数かけました
0354デフォルトの名無しさん2010/09/26(日) 18:38:23
よく、クリティカルセッションだっけ、クリティカルセクションだっけ??
と、ごっちゃになる。あんまり使ったこと無いけどね。
0355デフォルトの名無しさん2010/09/26(日) 18:43:34
>>349
ポインタじゃない奴の変数をpにするのはいただけないな
0356デフォルトの名無しさん2010/09/26(日) 18:49:59
>>355
ハンドルてポインタだとおもってました。どもです。
0357デフォルトの名無しさん2010/09/26(日) 19:01:29
ウィンドウを識別するための「何か」でしかないよ。
ポインタかもしれないしそうじゃないかもしれない。
なんだかわからないし意識してはならないそういうもの。

実際はただのテーブルのインデックスらしいが。
0358デフォルトの名無しさん2010/09/26(日) 19:01:57
Send/PostMessageでメッセージパッシング型っぽいスタイルの
マルチスレッドプログラムも書けるよ。

GoogleのGoみたいに、そういう書き方ができる言語を使ったほうが
コーディングの効率はいいだろうけどね。
0359デフォルトの名無しさん2010/09/26(日) 19:11:42
>>356
昔はポインタだったから許容範囲でしょう。
0360デフォルトの名無しさん2010/09/26(日) 19:27:21
むしろ昔こそUINTのtypedefだろ。
今のところ、Cではポインタのtypedefで定義している。

C++でnullptrキーワードが導入されるけど、
ハンドルに対しても使うべきか自分の中では審議中。
0361デフォルトの名無しさん2010/09/26(日) 20:03:26
C++どんどん壊れていくなw
型チェック機構厳しすぎだろ
0362デフォルトの名無しさん2010/09/26(日) 20:37:51
>>361
特にそうでもない。というかどこを緩められるんだ?
0363デフォルトの名無しさん2010/09/26(日) 23:55:46
>>349
SHChangeNotify
0364デフォルトの名無しさん2010/09/27(月) 08:23:04
>>351
勝手にhageんな
0365デフォルトの名無しさん2010/09/27(月) 11:46:47
>>363
シェル操作のAPIなんて便利なものがあったんですね。全部レジストリやメッセージ経由だと思ってました。サンクス
0366デフォルトの名無しさん2010/09/27(月) 11:53:56
なあに、わしはちょっと背中を押してあげたにすぎんよ
0367デフォルトの名無しさん2010/09/27(月) 12:03:57
かっけえ
0368デフォルトの名無しさん2010/09/27(月) 16:14:43
ペペロンチーノをしらんというのか
0369デフォルトの名無しさん2010/09/27(月) 16:14:56
だが本物の回答者が書いてるとは限らない
0370デフォルトの名無しさん2010/09/27(月) 20:19:28
かく言う>>369も所詮は偽者……API……
0371デフォルトの名無しさん2010/09/27(月) 21:57:21
hage
0372デフォルトの名無しさん2010/09/27(月) 21:58:04
sage
0373デフォルトの名無しさん2010/09/27(月) 22:06:32
一日二回うんこが出るのは異常ですか?
0374デフォルトの名無しさん2010/09/28(火) 01:02:39
1回で出し切れ
0375デフォルトの名無しさん2010/09/28(火) 01:17:33
ただの食い過ぎ
0376デフォルトの名無しさん2010/09/28(火) 09:00:41
>>374
いいからAPI出せや
0377デフォルトの名無しさん2010/09/28(火) 12:04:27
vista 以降で、プログラム内で自分アプリが管理者モードで起動しているか、ログインユーザとして起動しているかを
知るAPIはありますか? 無ければ簡単に知るすべはないでしょうか?
0378デフォルトの名無しさん2010/09/28(火) 12:16:57
>>377
エレベーターがなんちゃら
0379デフォルトの名無しさん2010/09/28(火) 13:00:40
>>378
知らないならレスしないでください。ウザいだけです。
0380デフォルトの名無しさん2010/09/28(火) 13:24:19
>>377
getuser
0381デフォルトの名無しさん2010/09/28(火) 13:34:53
http://blogs.msdn.com/b/tsmatsuz/archive/2007/01/25/windows-vista-uac-part-2.aspx
0382デフォルトの名無しさん2010/09/28(火) 17:55:58
もっとAPIスレを盛り上げようぜ!
うおおおおおお!!!!
0383デフォルトの名無しさん2010/09/28(火) 18:32:12
煽ってもなにも出て来ませんよ
0384デフォルトの名無しさん2010/09/28(火) 18:37:35
煽ってもなにも出て来ませんよ。
0385デフォルトの名無しさん2010/09/28(火) 19:03:25
中にだれもいませんよ?
0386デフォルトの名無しさん2010/09/28(火) 19:12:17
中にだれもいませんよ?
0387デフォルトの名無しさん2010/09/28(火) 19:13:27
中にだれもいませんよ?
0388デフォルトの名無しさん2010/09/28(火) 19:14:45
うぃん32あぴ
0389デフォルトの名無しさん2010/09/28(火) 19:20:44
中にだれもいませんよ?
0390デフォルトの名無しさん2010/09/28(火) 19:24:01
Mac32APIもあるのかな
0391デフォルトの名無しさん2010/09/28(火) 19:25:35
Mac32APIもあるのかな
0392デフォルトの名無しさん2010/09/28(火) 19:26:05
大事なことなので2度言いました。
0393デフォルトの名無しさん2010/09/28(火) 19:30:13
と、見せかけて
0394デフォルトの名無しさん2010/09/28(火) 19:37:33
中にだれもいませんよ?
0395デフォルトの名無しさん2010/09/28(火) 19:40:15
Lazyとは中々高度な術を。。。
0396デフォルトの名無しさん2010/09/28(火) 19:42:24
ねちょねちょするよ
0397デフォルトの名無しさん2010/09/28(火) 19:51:23
定期あげ
0398デフォルトの名無しさん2010/09/28(火) 20:53:02
アク禁解除されたとたんこれだ
2chはもう死んでいる
0399デフォルトの名無しさん2010/09/28(火) 20:55:16
じゃあ、質問してくれ
0400デフォルトの名無しさん2010/09/28(火) 21:13:51
ところで削除したアプリのレジストリーの設定項目っていつになったら消えるんですか?
0401デフォルトの名無しさん2010/09/28(火) 21:17:10
巣に帰れ
0402デフォルトの名無しさん2010/09/28(火) 21:21:43
WIN32_FIND_DATAの64bit版ってないんですか?
0403デフォルトの名無しさん2010/09/28(火) 21:24:47
何が64bitなんだよ
0404デフォルトの名無しさん2010/09/28(火) 21:25:39
>>398
つ鏡
0405デフォルトの名無しさん2010/09/28(火) 21:27:21
まぁ誰かを見下さないと生きていけないのですよね
0406デフォルトの名無しさん2010/09/28(火) 21:35:19
一番糞なAPIってなんですか?
0407デフォルトの名無しさん2010/09/29(水) 01:36:54
CopyRect
0408デフォルトの名無しさん2010/09/29(水) 01:45:50
SetPixel
0409デフォルトの名無しさん2010/09/29(水) 04:40:59
>>407
それ、何するために存在するんだろ
0410デフォルトの名無しさん2010/09/29(水) 07:08:27
KillYou
0411デフォルトの名無しさん2010/09/29(水) 07:28:26
>>409
128ビット分もデータを転送するのが大変だった時代の名残。
0412デフォルトの名無しさん2010/09/29(水) 09:22:35
CopyRectってそんなに糞なのか
今度使ってみようかな
0413デフォルトの名無しさん2010/09/29(水) 18:18:41
中にだれもいませんよ?
0414デフォルトの名無しさん2010/09/29(水) 18:48:38
略して中だれ
0415デフォルトの名無しさん2010/09/29(水) 19:37:38
test
0416デフォルトの名無しさん2010/09/29(水) 19:38:19
略中
0417デフォルトの名無しさん2010/09/29(水) 21:40:06
構造体のコピーが出来ない言語(ANSI以前のCとかPascalとか)用。
0418デフォルトの名無しさん2010/09/29(水) 23:01:03
構造体化石
0419デフォルトの名無しさん2010/09/29(水) 23:19:09
誰だ今構造体でエッチな事考えた奴は!
0420デフォルトの名無しさん2010/09/29(水) 23:53:50
ちょっと発想が良くわからん
0421デフォルトの名無しさん2010/09/29(水) 23:56:09
>>420でした^^
0422デフォルトの名無しさん2010/09/29(水) 23:58:16
ちょっと発想が良くわからん(キリッ
0423デフォルトの名無しさん2010/09/30(木) 00:00:19
>>420みたいな奴ってリアルでも屑なんだろうなぁ
0424デフォルトの名無しさん2010/09/30(木) 00:02:24
うちの会社にもいるわ
0425デフォルトの名無しさん2010/09/30(木) 00:02:49
マジでどういう意味だよ
unionなら何かエロイのは分かる
0426デフォルトの名無しさん2010/09/30(木) 00:03:54
↑
0427デフォルトの名無しさん2010/09/30(木) 00:04:27
>>423=>>419
0428デフォルトの名無しさん2010/09/30(木) 00:04:58
うちの会社にもいるわ(27歳 無職)
0429デフォルトの名無しさん2010/09/30(木) 00:05:32
>>427
代入してどうすんだ
0430デフォルトの名無しさん2010/09/30(木) 00:06:06
unionえろくないよ
0431デフォルトの名無しさん2010/09/30(木) 00:07:07
>>430の*に突っ込みたい
0432デフォルトの名無しさん2010/09/30(木) 00:08:51
API「おい俺の話をしろ」
0433デフォルトの名無しさん2010/09/30(木) 00:10:17
CopyRect「」
0434デフォルトの名無しさん2010/09/30(木) 00:13:25
>>432
お前、いたんだ。
0435デフォルトの名無しさん2010/09/30(木) 00:13:41
CopyRectより糞なAPIがあるはず
このままじゃCopyRectがかわいそう
0436デフォルトの名無しさん2010/09/30(木) 00:16:55
ご近所が布団たたきを始めると
あわてて洗濯物を捕り込む奴挙手。
0437デフォルトの名無しさん2010/09/30(木) 03:23:54
おい>>436、涙拭けよ
0438デフォルトの名無しさん2010/09/30(木) 03:35:26
2番煎じ
0439デフォルトの名無しさん2010/09/30(木) 04:05:04
>>419
>>421
>>422
>>423
>>424
>>426
>>428
>>430
>>431
>>432
>>433
>>434
>>436
お前ファビョりすぎ
0440デフォルトの名無しさん2010/09/30(木) 09:16:06
なんだこいつ
0441デフォルトの名無しさん2010/09/30(木) 09:35:33
なんでも自演乙する人ってまだいたんだ
0442デフォルトの名無しさん2010/09/30(木) 10:02:13
構造体のコピーなんてできるの忘れてたわ
0443デフォルトの名無しさん2010/09/30(木) 10:17:26
CopyRectって使ったことないんだが、memcpyみたいなもん?
0444デフォルトの名無しさん2010/09/30(木) 10:39:17
構造体のコピーができなかった頃からあるAPIだしなw
0445デフォルトの名無しさん2010/09/30(木) 10:47:19
MakeSureDirectoryPathExistsなんかはTCHARになってない時点で糞
0446デフォルトの名無しさん2010/09/30(木) 10:56:28
CommandLineToArgvWも何故かA版がないな
0447デフォルトの名無しさん2010/09/30(木) 11:20:57
CommandLineToArgvAの代わりにMSVCRT.DLL:__getmainargsを使っている
MakeSureDirectoryPathExistsWの代わりはShCreateDirectoryExを使えと書いてあるな
0448デフォルトの名無しさん2010/09/30(木) 12:59:30
FreeLibraryAndExitThreadってなんの意味があるんだよwww
そう考えていた時期が俺にもありました。
0449デフォルトの名無しさん2010/09/30(木) 14:17:29
いみあったの?
0450デフォルトの名無しさん2010/09/30(木) 14:30:44
解説
FreeLibraryAndExitThread 関数は、次のように実装されています。

FreeLibrary(hModule);
ExitThread(dwExitCode);

わからん・・・
0451デフォルトの名無しさん2010/09/30(木) 14:57:12
自爆dllを作る場合にとても重要
DLLにスレッドプロシージャがあった場合
FreeLibraryから帰った瞬間に落ちる
0452デフォルトの名無しさん2010/09/30(木) 18:59:17
FreeLibraryAndExitThreadならFreeLibraryから戻ってくる場所はkernel32.dllの中なので安全にExitThreadを呼べる
0453デフォルトの名無しさん2010/09/30(木) 19:08:39
>>446
int wmain(int, wchar_t**) や __wargvが使えなかった頃のためのAPIだからな
0454デフォルトの名無しさん2010/09/30(木) 19:17:22
なるほど。
自分で自分をアンロードしたいと思ったことがなかったからわからなかった。
勝手にExitThreadするとCRTのクリーンアップ処理が走らなさそうだけど
(実質)CRT使用禁止でCreateThreadとかするの?
0455デフォルトの名無しさん2010/09/30(木) 19:36:29
CRTは動的リンクスルノデス
0456デフォルトの名無しさん2010/09/30(木) 22:26:22
糞なAPIというより、全体的にネーミングが気に入らない
0457デフォルトの名無しさん2010/09/30(木) 22:28:54
そうですか
0458デフォルトの名無しさん2010/09/30(木) 22:30:22
そうですよ
0459デフォルトの名無しさん2010/09/30(木) 22:36:58
>>456がphpのリファレンス見たら発狂するな
0460デフォルトの名無しさん2010/09/30(木) 22:39:13
PHPってカオスなのか?
0461デフォルトの名無しさん2010/09/30(木) 22:45:28
visual studioのC++/CLIのように
画面に部品を貼り付けて、ソースを生成してくれるような
ヴィジュアルエディタっていうものは、Win32APIではございませんか?
0462デフォルトの名無しさん2010/09/30(木) 22:51:11
>>461
っMFC

って言うか製品版のVCってできないっけ?
0463デフォルトの名無しさん2010/09/30(木) 22:52:42
Express以外出来るよ
0464デフォルトの名無しさん2010/09/30(木) 22:54:31
DAYONE~
0465デフォルトの名無しさん2010/09/30(木) 22:58:02
MFCは自作できるよ
0466デフォルトの名無しさん2010/09/30(木) 23:01:22
>>460
明らかにメクラが関数命名してる
http://www.php.net/manual/ja/ref.strings.php
0467デフォルトの名無しさん2010/09/30(木) 23:04:01
MSの開発力に喧嘩を売った>>465であった。
0468デフォルトの名無しさん2010/09/30(木) 23:17:45
>>462-465
ありがとうございます
製品版ならできるのですね。。。

MFCとWin32APIの違いをよくわかっておらず
とぼけたことを利いてしまっておりました。すみません
0469デフォルトの名無しさん2010/09/30(木) 23:29:50
MFCはMS謹製のWIN32APIのラッパーライブラリ郡だ。C++できないと厳しい。

でもC++./CLIできるんだから大丈夫だよね。
0470デフォルトの名無しさん2010/09/30(木) 23:37:56
でもみんなMFCくらい自作してんじゃないの
0471デフォルトの名無しさん2010/10/01(金) 01:01:06
MFCとかWTLがあるのに、わざわざ別のものを一から用意するのは時間の無駄。
0472デフォルトの名無しさん2010/10/01(金) 01:12:35
わざわざ一から覚えるのはもっと時間の無駄。
0473デフォルトの名無しさん2010/10/01(金) 05:04:20
2chが一番無駄
0474デフォルトの名無しさん2010/10/01(金) 06:07:33
スレ伸びてるときは読まなくて良いの法則
0475デフォルトの名無しさん2010/10/01(金) 07:33:32
>>474←こいつ自らが反証しますた
0476デフォルトの名無しさん2010/10/01(金) 10:16:35
DateTime_GetSystemtimeで日付対応の奴ない?
0477デフォルトの名無しさん2010/10/01(金) 11:22:14
結局コントロールから文字列取得して区切り記号毎に文区切ってバッファに挿入ノシ
0478デフォルトの名無しさん2010/10/01(金) 11:35:39
ぎょえぇぇ!!!!!
0479デフォルトの名無しさん2010/10/01(金) 11:40:50
>>476
#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
>>479,478
後になっちゃうけど研究してみる。忙しい時間にありがと。
0481デフォルトの名無しさん2010/10/01(金) 12:00:33
どういうことだよwww
0482デフォルトの名無しさん2010/10/01(金) 12:07:40
DateTime_GetSystemtimeいろいろやってみたけどやっぱday,month,yearは所得してくれないみたい。
0483デフォルトの名無しさん2010/10/01(金) 13:10:49
正確な時間がほしいならネットから持ってくるしかないな
0484デフォルトの名無しさん2010/10/01(金) 13:24:30
精確な時間は、空から降って来るし、原子時計も中古なら100万くらいで買える。
ネットからもってくる以外にも方法は有る。
0485デフォルトの名無しさん2010/10/01(金) 13:29:19
じゃあソースください
04864792010/10/01(金) 14:02:08
>>482
普通に拾えるけどなぁ

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:55
ご苦労さんっ
0488デフォルトの名無しさん2010/10/01(金) 14:50:28
tm構造体使ってた\(^o^)/
0489デフォルトの名無しさん2010/10/01(金) 15:01:56
時間とは何か
0490デフォルトの名無しさん2010/10/01(金) 15:18:04
深いですね
0491デフォルトの名無しさん2010/10/01(金) 15:41:29
時と時の間だから時間
0492デフォルトの名無しさん2010/10/01(金) 16:35:24
俺も昔は時の間で修行したものだ
0493デフォルトの名無しさん2010/10/01(金) 19:32:01
なんだっけ、名前が出てこない……
0494デフォルトの名無しさん2010/10/01(金) 19:34:17
精神と時の間?
0495デフォルトの名無しさん2010/10/01(金) 19:38:20
あぁドラゴソボソルーか
0496デフォルトの名無しさん2010/10/01(金) 19:40:27


      CopyRect (C) 2010
0497デフォルトの名無しさん2010/10/01(金) 19:43:35
あんさんおもろすぎるでガハハ
0498デフォルトの名無しさん2010/10/01(金) 23:47:49
RegGetValueA() にRRF_RT_REG_EXPAND_SZ を単体で指定すると失敗するんだけど何でだろう?

#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:20
人間は人と人の間だから人間だと言うのか
0502デフォルトの名無しさん2010/10/02(土) 02:11:38
>>498
winreg.hに解答が載っていた。
ドキュメントの方が説明不足っぽいなあ。
0503デフォルトの名無しさん2010/10/02(土) 02:34:30
>>502
あー、本当だ。これはひどいな。

- RRF_RT_REG_EXPAND_SZ は RRF_NOEXPAND と一緒に指定しなければならない
- RRF_RT_REG_SZ は環境変数の展開までやってくれる

とヘッダーに書いてあった。
ありがとうございました。
0504デフォルトの名無しさん2010/10/02(土) 03:40:37
HeapAlloc で確保したメモリも、OS の気分でページアウトされるよね?
ページアウトされないメモリを確保したい場合、どの API 呼べばよい?
デバイスドライバしかできないのかなぁ。。
教えてエロい人!
0505デフォルトの名無しさん2010/10/02(土) 04:43:35
APIの宣言というより
セグメント指定して確保じゃなかったかな
0506デフォルトの名無しさん2010/10/02(土) 07:57:22
>>504
AWE(Address Windowing Extensions)関連のAPIを使えば良かった筈。
グループポリシーで「メモリ内のページのロック」が許可されているユーザーしか使えないけど。
0507デフォルトの名無しさん2010/10/02(土) 10:32:57
VirtualLockが説明文読む限りできそうだけど
0508デフォルトの名無しさん2010/10/02(土) 15:12:25
UN*Xで言うsuidみたいな誰が実行しても特権つきで実行できる仕掛けはありますか?

目的:管理者がProgram Files以下にインストールしたアプリを一般ユーザが使用する時に
確実にその時点での最新版にするアップデートプログラムを作りたい。

検討した手段:
特権必須 - ソフト自体は権限いらないのにアップデートのためだけの管理者縛りは入れたくない
サービス化 - 常駐は避けたい
BITS - IBackgroundCopyJob2::SetNotifyCmdLineに期待してみたが、
ユーザ権限で起動されるらしい(当たり前だけど)
0509デフォルトの名無しさん2010/10/02(土) 15:20:18
ShellExecuteでこのスレ検索してみ
0510デフォルトの名無しさん2010/10/02(土) 15:25:13
Windowsに不可能は無い!
05115042010/10/02(土) 15:47:35
もうエロい人達かっこよすぎ

>>505
セグメントの種類に関わらずページアウトの対象っぽい・・・

>>506
AWE把握!調査してみまつ
ただ制限があると不特定多数を利用者に位置づけられないですねぇ。

>>507
VirtualLock でイケル!と思ったんだけど、
プロセスごとページアウトされると全部イッチャウっぽい。
0512デフォルトの名無しさん2010/10/02(土) 15:55:19
>508
タスクスケジューラ
0513デフォルトの名無しさん2010/10/02(土) 16:30:46
>>509
runasだと管理者のIDとパスワードが必須になるので要求を満たせません。
あと最新であることを保証するために
ショートカット→アップデートプログラム→アプリ本体という順番で起動します。

>>512
タスクスケジューラで特定アプリを起動する前という条件指定できますか?
0514デフォルトの名無しさん2010/10/02(土) 17:05:20
とりあえず初心者はここ見て勉強するように
天才ハッカーによるプログマリングのバイブルだ
http://studiokingyo.fc2web.com/
0515デフォルトの名無しさん2010/10/02(土) 17:08:48
>>514
すげー!!!
高度な内容のレベルが高いために俺の技術が高みに向上が著しいぞ
初心者だけでなく、プロもここみてより一掃の勉強を実行するべk
0516デフォルトの名無しさん2010/10/02(土) 17:10:53
>>514
このレスのおかげで>>513までのレスがまさに残念さが明白に判明してしまうな
0517デフォルトの名無しさん2010/10/02(土) 17:11:33
一瞬見て3秒で戻るボタンを押した。そんなページだな。
0518デフォルトの名無しさん2010/10/02(土) 17:12:25
>>514
まぁ初心者なら知らないのも無理はないな社会の上で活躍してるプロプログラマーならjkだな
0519デフォルトの名無しさん2010/10/02(土) 17:14:01
>>517
確かにプログラミンと関わりがない人間には理解できないだろうな内容がすごく高度的で
0520デフォルトの名無しさん2010/10/02(土) 17:14:29
典型的な誰にも勧められないページ
0521デフォルトの名無しさん2010/10/02(土) 17:19:10
そんなことはないな
0522デフォルトの名無しさん2010/10/02(土) 17:20:57
技術情報を独占したいんだろう有名なのを知らないのだろうか
0523デフォルトの名無しさん2010/10/02(土) 17:23:09
>>514
レベル高いなーまだ発見されてないAPIまで載ってる
0524デフォルトの名無しさん2010/10/02(土) 17:25:59
なんでそんなに必死なんだよ。その糞サイトにウィルスでも仕込んだの?
0525デフォルトの名無しさん2010/10/02(土) 17:26:24
神だな
0526デフォルトの名無しさん2010/10/02(土) 17:27:24
>>524が見えない
0527デフォルトの名無しさん2010/10/02(土) 17:35:30
あれだけの高度情報量をどうやって・・・・
0528デフォルトの名無しさん2010/10/02(土) 17:50:45
> まだ発見されてないAPI

ここ笑うところ?
0529デフォルトの名無しさん2010/10/02(土) 18:07:52
間抜けな発言は残しといた方が区別しやすいよ。

どうでもいいけどsuidなんて過去の遺物だろ。
M$がサービスでも用意してくれてなければ無理に決まってる。
用意されてたとしても任意のプログラムでOKとかはないだろうから署名とか要るんでない?
0530デフォルトの名無しさん2010/10/02(土) 18:22:58
>>529は無能
0531あぼーんNGNG
あぼーん
0532デフォルトの名無しさん2010/10/02(土) 18:44:22
エディタでたらめにキーボードを叩いてコンパイルしたところ、
未知のAPIが発見された
0533あぼーんNGNG
あぼーん
0534デフォルトの名無しさん2010/10/02(土) 18:48:44
>>532
お前は無限の猿定理の猿か
0535デフォルトの名無しさん2010/10/02(土) 18:51:42
dumpbin /exports
0536デフォルトの名無しさん2010/10/02(土) 19:25:46
>>534
妙に説明的なのが残念。35点
0537デフォルトの名無しさん2010/10/02(土) 22:56:10
定期あげ
0538あぼーんNGNG
あぼーん
0539デフォルトの名無しさん2010/10/02(土) 23:21:41
こんなスレあったのか。
0540デフォルトの名無しさん2010/10/02(土) 23:41:17
あったのよ
0541デフォルトの名無しさん2010/10/02(土) 23:52:24
Win32APIはMac36AIPとどう違うの
0542デフォルトの名無しさん2010/10/03(日) 00:25:05
基本的には同じ
ただし内部処理ではOSごとに異なった実装になっている
0543デフォルトの名無しさん2010/10/03(日) 02:38:32
>>541
釣りかとオモタ
0544あぼーんNGNG
あぼーん
0545あぼーんNGNG
あぼーん
0546あぼーんNGNG
あぼーん
0547デフォルトの名無しさん2010/10/03(日) 06:19:06
forkはできますか?
0548デフォルトの名無しさん2010/10/03(日) 06:48:38
CreateProcessでおk
0549デフォルトの名無しさん2010/10/03(日) 06:58:19
全然おkじゃないんですが・・・
0550デフォルトの名無しさん2010/10/03(日) 07:07:31
なにがおkじゃないの?
0551デフォルトの名無しさん2010/10/03(日) 08:43:39
os違いを理解してない馬鹿、もしくは釣りはほっとけ
0552デフォルトの名無しさん2010/10/03(日) 08:47:13
fork & exec* ではなくて、fork だけをしたいって事じゃね?
0553デフォルトの名無しさん2010/10/03(日) 08:56:31
>>551
0554あぼーんNGNG
あぼーん
0555あぼーんNGNG
あぼーん
0556デフォルトの名無しさん2010/10/03(日) 16:54:27
タブレット関係に詳しい人、お願いします。

自作アプリへのフリックの影響を無効にしたいのです。

コンパネのペンとタッチのフリックを有効にしても、
IEやメモ帳はその影響を受けていないようです。

大元のチェックを外せばもちろん目的は達せられますが
そうではなく、IEやメモ帳のようにフリックの影響を受け
ないようにするにはどうしたらいいでしょうか?

タブレット関係のメッセージを適切に処理すればいいのかも
しれませんが、情報が少なくて困っております。

それともドライバの設定のどこかに、影響させないアプリを
登録とかするんでしょうか?

よろしくお願いします。

0557デフォルトの名無しさん2010/10/03(日) 18:17:45
ここまでOS情報なし
0558デフォルトの名無しさん2010/10/03(日) 18:24:16
大元のチェックを外せ
0559デフォルトの名無しさん2010/10/03(日) 18:46:21
OS情報(笑)
0560デフォルトの名無しさん2010/10/03(日) 18:53:56
>>556
http://msdn.microsoft.com/en-us/library/ms701172(VS.85).aspx
0561あぼーんNGNG
あぼーん
0562デフォルトの名無しさん2010/10/03(日) 19:56:48
>>513
サービスにするしかないと思う。

サービスだからと言って常駐する必要はない。
アップデート確認が終わったらとっとと終了すればいい。
確かGoogleのアップデータがそういう挙動だったはず。
0563デフォルトの名無しさん2010/10/03(日) 20:23:25
一般ユーザでサービス起動できたっけ?
0564あぼーんNGNG
あぼーん
0565デフォルトの名無しさん2010/10/03(日) 20:49:53
お前、それ面白いとでも思ってんのか?
あまりしつこくすると、荒らしとして報告するよ。
0566あぼーんNGNG
あぼーん
0567あぼーんNGNG
あぼーん
0568デフォルトの名無しさん2010/10/03(日) 20:57:11
だめだコリア
0569デフォルトの名無しさん2010/10/03(日) 21:01:03
>>565>>568
とりあえずお前ら空気嫁
0570デフォルトの名無しさん2010/10/03(日) 21:03:39
なるほど、いつものキチガイか。
0571デフォルトの名無しさん2010/10/03(日) 21:23:47
>>563
すまん、元の質問をよく読んでいなかった。
Googleのはスタートアップ: 自動 (遅延開始)だから、
アプリ起動時のアップデートではないんだろうな。
0572デフォルトの名無しさん2010/10/03(日) 21:27:59
ネトゲのアップデータとかが近い物なんだろうけど
Program Filesにインストールするなとか平然と書いてあったり
常時昇格を要求したりと行儀最悪なのしか見たことないなー
0573デフォルトの名無しさん2010/10/03(日) 21:36:06
Program Filesにインストールするとなんかまずいの?
0574デフォルトの名無しさん2010/10/03(日) 21:41:02
>>573
最近のウインドウズはウイルス対策やその他の事情で、
プログラムファイルずに書き込むのにはアドミンとかの特権がいるの。
0575デフォルトの名無しさん2010/10/03(日) 21:45:20
>>574
なるほど ネトゲってその辺適当なのか
0576デフォルトの名無しさん2010/10/03(日) 21:49:03
Program Files書き込むのに特権が必要なのはNT系は最初からだろ。
特権がいるのはC:\とかでも同じ話だし。

問題になるのは6.0以降のバーチャルストアの方。
0577デフォルトの名無しさん2010/10/03(日) 21:50:01
ルート直下の制限はXPから
0578デフォルトの名無しさん2010/10/03(日) 22:15:58
ネトゲってみんな「基本無料」だよな
0579デフォルトの名無しさん2010/10/03(日) 22:58:25
せやね
0580デフォルトの名無しさん2010/10/03(日) 23:03:56
「基本」ね。
でも、気を抜いてるとあっという間に尻の毛まで抜かれる。
0581デフォルトの名無しさん2010/10/04(月) 00:06:25
尻毛怖くて剃れないから抜いて欲しい
0582デフォルトの名無しさん2010/10/04(月) 00:17:47
シリアル通信でBREAK状態になった事はEV_BREAKで取れるけど、
BREAK状態が解除された事はどうやって検出すれば良いでしょうか?
05835562010/10/04(月) 00:27:32
>>560
どーもでした
0584デフォルトの名無しさん2010/10/04(月) 02:58:58
>>508
最新版かどうかを確認するだけなら管理者権限いらないんだから、
アップデートが必要なときだけ管理者権限を要求するようにしたら?
Program Files内のファイルを更新するのに管理者権限が必要なのは自然だと思う。
0585デフォルトの名無しさん2010/10/04(月) 05:32:43
>>508
ClickOnce使えば10秒で解決する問題だな
0586デフォルトの名無しさん2010/10/04(月) 07:41:05
一般ユーザーでもインストール済みサービスの起動はできるよ。
例: Secondary Logonサービス
サービスのインストールはできないけどそれはインストーラがやればいいでしょ。
suidバイナリのインストールだって一般ユーザーはできないんだし
0587デフォルトの名無しさん2010/10/04(月) 09:09:09
>>582
EV_BREAK状態じゃなくなったらとか
0588デフォルトの名無しさん2010/10/04(月) 09:45:32
>>587
EV_BREAKはBREAK状態になると飛んでくるイベントなのですが。
それの状態はどのように取得するのですか?
0589デフォルトの名無しさん2010/10/04(月) 11:53:40
>>582
BREAK信号ってのは、要は一定期間シリアル通信でゼロを送り続けた状態(スタート/ストップビットもない)
だから解除ってのはないけど
敢えて言うなら、何らかの通常の通信が送られてきた場合がそれに当たるんじゃないかと
0590デフォルトの名無しさん2010/10/04(月) 12:07:21
>>589
送信側はSetCommBreakでブレーク状態(信号線を0に落とす)を設定して、ClearCommBreakで
解除できますよね。

やはり、タイムアウト設定して、読んでみてエラー(CE_BREAK)で確認するしかないのでしょうか。
この方法はフレームエラーとか拾っちゃっうと分離が面倒そうだなあ。
0591デフォルトの名無しさん2010/10/04(月) 12:42:36
>>586
Secondary Loginって自動起動じゃね?
停止した状態でrunasしてみたら失敗したし
0592デフォルトの名無しさん2010/10/04(月) 17:49:24
定期あげ
0593デフォルトの名無しさん2010/10/04(月) 18:20:22
>>588
BREAK信号の処理はやったことないからわからないけど
他の人も書いてるEV_BREAKの検出だけやって、通常の待ち受けしてればいいんじゃないの
MSDNの中に、やり方が書いてありそうだけど
0594デフォルトの名無しさん2010/10/04(月) 22:39:13
>>591
んー? うちのSecondary Logonは停止してたしrunasで勝手に実行中になったけどなあ。
0595デフォルトの名無しさん2010/10/04(月) 22:59:32
一般ユーザでか?
Administratorsのユーザなら勝手にサービス起動したがUsersだとエラー吐いたぞ
0596デフォルトの名無しさん2010/10/04(月) 23:08:52
ではやはりあげておくべきですね。
0597デフォルトの名無しさん2010/10/04(月) 23:25:16
いやUsersだけど
UAC有効にしてるせい?
0598デフォルトの名無しさん2010/10/04(月) 23:26:47
サービスクラスのものをホイホイオンオフされたそら大変だわな。
0599デフォルトの名無しさん2010/10/05(火) 05:33:26
Windowsはなんでもほいほい
0600デフォルトの名無しさん2010/10/05(火) 09:15:23
下がりすぎ
0601うざお2010/10/05(火) 09:42:13
あの
みなさんは、プログラム書くとき、毎回
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpCmd, int nShow)
こういうのを、手打ちしてマウスか?
それとも、どこかメモ帳とかにコピペして、使ってますか?
どうやって管理していますか?
0602デフォルトの名無しさん2010/10/05(火) 10:29:55
それくらいはさすがにもう覚えたから暗唱できるので何も管理してない
0603うざお2010/10/05(火) 10:35:00
>>602さん
覚えてないのは、どうしてますか?僕も、このくらいなら、覚えましたが、
ウインドクラスの登録、とか、覚えていないのが、多いです
0604デフォルトの名無しさん2010/10/05(火) 10:48:20
独自エントリーを使っているのでWinMainは書かない
0605デフォルトの名無しさん2010/10/05(火) 10:51:51
毎回MSDNでリファレンスを引いてる
0606うざお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:22
丸暗記しないまでもどんな引数を取るかくらいはだいたい覚えとくだろ普通
0610うざお2010/10/05(火) 11:06:08
そうなんですね
なんか、ウィンドウズプログラミングの本見たら、ソースがすごい量あるので、
これ全部覚えるのは、難しいと思いました。
0611デフォルトの名無しさん2010/10/05(火) 11:11:10
せめて辞書登録位しろよw
0612うざお2010/10/05(火) 11:21:53
ウィンドウズの、辞書って、突然消えたりしますよね
しかも、長い単語は、登録できない
0613デフォルトの名無しさん2010/10/05(火) 11:43:54
うざお?
ウザ男?

マジウゼーっス
0614デフォルトの名無しさん2010/10/05(火) 12:05:21
こいつの、読点の、付け方が、まじで、うざいな
0615デフォルトの名無しさん2010/10/05(火) 12:21:18
こいつがコーディングしたらすごい事になりそうだな
0616デフォルトの名無しさん2010/10/05(火) 12:32:29
Win32api で自分のプロセスのメモリー使用量を簡単に取得する方法はないでしょうか?
0617デフォルトの名無しさん2010/10/05(火) 12:37:21
GetProcessMemoryInfo
0618デフォルトの名無しさん2010/10/05(火) 13:08:28
んなわけあるか
0619うざお2010/10/05(火) 17:17:12
うざおです
真面目に、質問します
プログラミングで、windowsは、なれない型や構造体、引数、などが、多いですが
そういうのを、全部覚えるのが、普通ですか?
僕は、結構馬鹿なので、覚えられるか、微妙です
そういう場合、いい保存方法の知恵があったら、教えてください
環境は、xpでeclipse CDTを使ってます
06206162010/10/05(火) 17:25:19
>> 617

ありがとうございます。試してみますm(_ _)m
0621デフォルトの名無しさん2010/10/05(火) 17:30:49
呪文を覚えるんじゃないから
カレー作るとしたら材料に何がいるか考えればいいのと同じ
0622デフォルトの名無しさん2010/10/05(火) 19:11:18
スレ違いかもしれないですが、
DLLプリロード攻撃について調べていて
根本的なところでわからなくなったので質問します。
>>69, >>90 あたりに情報が出てますがあまり話題にはなってないみたいで。

DLLの明示的なロードはLoadLibrary関数を使うわけで、
ここで引数に絶対パスを使わずに名前だけを指定すると
カレントディレクトリから同名の不正DLLがロードされるかも
しれないから危ないよ、ってことだと思ってます。

この場合、暗黙的なロードの場合も同様の脆弱性があると考えても
いいんでしょうか?カレントからロードするのは同じだと思うのですが。
0623デフォルトの名無しさん2010/10/05(火) 19:26:26
ぷりぷり〜(^ω^)
0624デフォルトの名無しさん2010/10/05(火) 19:41:43
>>622
LoadTimeLinkingに関してはそうじゃない?

まぁKernel32はKnownDllだからRunTimeLinkingに直してLoadLibraryすればいいけど
0625デフォルトの名無しさん2010/10/05(火) 20:00:39
>>622
ねえよ
>>624
お前どんだけあほなの
MSDNぐらい読んだら
0626デフォルトの名無しさん2010/10/05(火) 20:02:32
情報量0
0627デフォルトの名無しさん2010/10/05(火) 20:08:56
カロリー0
0628デフォルトの名無しさん2010/10/05(火) 20:28:43
すっきりとした甘さ
06296222010/10/05(火) 20:59:17
>>625
動作の本質的な違いがわかってないからですかね。

>>624
自作のDLLを 暗黙的なロードしていた場合のようなケースを
言いたかったです。情報足りませんでしたね。


Windowsプログラミングに疎いんですが、KnwnDllでもなく
マニフェストをつけていないような自作DLLを暗黙的ロードで
使うことは、よくあることだと思っているんですが。
脆弱性に関する情報にはそこが特に明記されていないのがわからなくて。

それとも、そもそも暗黙的なロードをそんな使い方するな、ってことですかね?
0630デフォルトの名無しさん2010/10/05(火) 21:00:00
ほしゅ
0631デフォルトの名無しさん2010/10/05(火) 22:06:12
>>514
神
0632デフォルトの名無しさん2010/10/05(火) 22:40:36
グローバルフックかけてアクティブなウインドウのタイトルバーに時間表示したい。んで、他のアプリケーションがウインドウタイトルを読みに来た際、バッファに退避させた本来のタイトル名にリダイレクト(?)させる方法てある?
0633デフォルトの名無しさん2010/10/05(火) 22:43:40
ttbaseのプラグインに似たようなことやってるやつ発見したからそれ見てみるノシサンクス
0634デフォルトの名無しさん2010/10/05(火) 22:49:17
創造と違ってたorzなにかいい情報ないですかね@@?
0635デフォルトの名無しさん2010/10/05(火) 22:53:25
グローバルフックかけてるならウィンドウタイトルを読むときに
APIフックでにすげかえればいいんでないの
0636デフォルトの名無しさん2010/10/05(火) 22:59:04
普通にGETTEXTに対応すれば良いんじゃないのか
0637デフォルトの名無しさん2010/10/05(火) 23:02:21
>>635,636
調べてみたらWM_SETTEXTもらってた@@;
サンクス
0638デフォルトの名無しさん2010/10/05(火) 23:02:42
何言ってんだよ
継承してオーバーライドだろ
0639デフォルトの名無しさん2010/10/05(火) 23:03:57
WM_GETTEXTだった
>>636のまんまいうとおりだったw
ありがとうございます。
0640デフォルトの名無しさん2010/10/05(火) 23:06:18
>>638
おとといプログラミングはじめたばかりでよくわからない@@
win32ってcじゃないの??敬称ってC++じゃないの??
0641デフォルトの名無しさん2010/10/05(火) 23:06:57
2日の割に高度だな
0642デフォルトの名無しさん2010/10/05(火) 23:08:12
ほぼ寝てませんorz
0643デフォルトの名無しさん2010/10/05(火) 23:11:26
c++嫌いなの?
0644デフォルトの名無しさん2010/10/05(火) 23:14:44
んん、、、なぜそんなことを??まあ図星ですけどw
実際使ってみるとcの関数で満足なんでクラスの使い道がよくわからなくて・・・

0645デフォルトの名無しさん2010/10/05(火) 23:20:03
C++使わないと、ある程度規模が大きくなってきたときに詰むぞ
悪いこと言わないから、C++を勉強したほうがいい
0646デフォルトの名無しさん2010/10/05(火) 23:23:29
Linus「C++プログラマはウンコ。寄ってくるな」
0647デフォルトの名無しさん2010/10/05(火) 23:25:52
むー・・・
了解です。がんばってみます!!
0648デフォルトの名無しさん2010/10/05(火) 23:27:56
>>646
でも俺はだまされない(キリッ
0649デフォルトの名無しさん2010/10/05(火) 23:54:11
creat()
0650デフォルトの名無しさん2010/10/06(水) 00:59:03
うずうずするぜ・・・!
0651デフォルトの名無しさん2010/10/06(水) 01:56:24
Hello, Everybody! How are you?
I'm crazy! HaHaHa...
0652デフォルトの名無しさん2010/10/06(水) 02:02:09
Win32APIには変な名前の関数はないから問題ないな

……ないよな?
0653デフォルトの名無しさん2010/10/06(水) 02:26:44
>>622
XPにしかないDLLを使うならリンカオプションでサブシステムバージョンを5.1
VistaにしかないDLLを使うなら6.0
Win7にしかないDLLを使うなら6.1にすればいい
0654デフォルトの名無しさん2010/10/06(水) 08:18:04
初歩的な質問で申し訳ないのです。CreateThreadを使ってスレッドを作成すると
スレッドハンドルが返ってきますが、そのスレッドハンドルを使って、そのスレッドが
存在しているかどうか調べる方法はありますでしょうか。
スレッドの終了までメインプロセスにてSleepで待機して、スレッドが終了したら
新しいスレッドを作成するというをしたいです。

よろしくお願いします。
06556542010/10/06(水) 08:39:27
自己解決しました。

WaitForSingleObject(hThreadHandle, INFINITE); /* スレッド終了まで待つ */

ありがとうございました。
0656デフォルトの名無しさん2010/10/06(水) 09:21:43
おk
0657デフォルトの名無しさん2010/10/06(水) 09:39:25
スレッド固まってんぜ!溜まってんなぁ、オイ(迫真)
0658デフォルトの名無しさん2010/10/06(水) 12:09:36
そんなAPIで大丈夫か?
0659デフォルトの名無しさん2010/10/06(水) 15:42:42
まあ使ってくうちにいろいろわかってくるでしょ
方法そのものは間違ってないし
0660デフォルトの名無しさん2010/10/06(水) 15:46:50
>>658
一番良いのを頼む
0661デフォルトの名無しさん2010/10/06(水) 16:28:37
ウィンドウメッセージをハンドルしてるなら
MsgWaitForMultipleObjectsEx
0662デフォルトの名無しさん2010/10/06(水) 18:56:34
下がりすぎ
0663デフォルトの名無しさん2010/10/06(水) 19:32:54
大盛況なだ!!!
0664デフォルトの名無しさん2010/10/06(水) 20:54:33
横浜の人いますか〜??
いたら友達になりましょう><
私は19歳♀です♪
0665デフォルトの名無しさん2010/10/06(水) 21:28:56
25歳だけどいいかな
0666デフォルトの名無しさん2010/10/06(水) 21:53:12
C++って別の意味でソースがごちゃごちゃになるのでちょっと・・・
0667デフォルトの名無しさん2010/10/06(水) 22:31:31
それはおまいの頭の中がゴチャゴチャだからだよ
0668デフォルトの名無しさん2010/10/06(水) 23:37:48
プロトタイプ?なんてもういらないだろ c++
0669デフォルトの名無しさん2010/10/06(水) 23:39:40
お前がそう思うんならそうなんだろ
0670デフォルトの名無しさん2010/10/06(水) 23:44:51
ここゎ出会いコミュなので関係ない話はよそでやってくださぃ><
0671デフォルトの名無しさん2010/10/07(木) 02:59:21
>>632です。C++のクラスを即席いい加減に学んできました;;
んで>>638が言ってた内容、どのような設計のクラスを想定しての指示だったのか未だわかりません。なのでそのことについて何かしら助言をいただけたらうれしいです・・・
プログラマの間で常識となってるWin32、C++における基礎的な設計方針か何かあるのでしょうか?

0672デフォルトの名無しさん2010/10/07(木) 06:35:42
いい加減に学んできて「教えろ」って馬鹿にしてんのか
0673デフォルトの名無しさん2010/10/07(木) 07:27:10
>>638の発言の意図はたぶん>>638にしか分からん
0674デフォルトの名無しさん2010/10/07(木) 09:10:47
俺には分かるがなあ
0675デフォルトの名無しさん2010/10/07(木) 09:19:28
それを知ってどうするというのか。
0676デフォルトの名無しさん2010/10/07(木) 09:47:00
謎は深まるばかりである。
0677デフォルトの名無しさん2010/10/07(木) 09:49:51
>>638の前後を見ても何について話してるのかすらわからん
0678デフォルトの名無しさん2010/10/07(木) 14:13:30
自分が分からないからって必死すぎ
0679デフォルトの名無しさん2010/10/07(木) 14:24:49
前後にクラスの話なんて一切出てない状態でいきなり湧いてるのに何の話かわかったらエスパーだな
06806712010/10/07(木) 14:33:45
そういうことでしたか「@@
なにかきまりきまった事があるのだと思ってました。サンクス。
0681デフォルトの名無しさん2010/10/07(木) 14:42:49
この程度でエスパーってwwwwww
0682デフォルトの名無しさん2010/10/07(木) 15:15:37
サブクラス化じゃないのか?
06836712010/10/07(木) 15:26:03
>>682
何を継承したのかがわからないもので・・・っていうかこれスレチ?
0684デフォルトの名無しさん2010/10/07(木) 15:47:02
FastCopyのソースがしっかりしてそうなのでそれ見て研究します。
ありがとうございました;;w;;ノシ
0685デフォルトの名無しさん2010/10/07(木) 16:49:59
サービスプログラムから特定ユーザのレジストリ(HKEY_CURRENT_USER)の値を取得したいのですが、
実現するためのAPIは存在するでしょうか?
0686デフォルトの名無しさん2010/10/07(木) 17:01:57
LoadUserProfile
0687デフォルトの名無しさん2010/10/07(木) 17:09:17
HKEY_USERS の下にいっぱい並んでるのが各ユーザのだと思ってた
06886852010/10/07(木) 17:24:52
>> 686

ありがとうございます。
LoadUserProfile を調べてたところ、レジストリハイブのロードを見つけたので、これで実装できそうな気がします。
試してみます。
0689デフォルトの名無しさん2010/10/07(木) 18:22:21
腐ってやがる
0690デフォルトの名無しさん2010/10/07(木) 18:23:01
早すぎたんだ
0691デフォルトの名無しさん2010/10/07(木) 19:25:38
>>687
ログイン中のアカウントだけだからなあ
0692デフォルトの名無しさん2010/10/07(木) 20:37:02
コンボボックスに1025byte以上の文字をCB_INSERTSTRINGするとメモリが壊れるんだけど俺だけ?
直後にCB_GETLBTEXTLENとCB_GETLBTEXTすると長さが一致しない。
0693デフォルトの名無しさん2010/10/07(木) 21:34:36
SHGetFolderPathかWin32Apiで各ユーザディレクトリの1階層上って取れたっけ?

XP:C:\Documents and Settings
Vista:C:\User
0694デフォルトの名無しさん2010/10/07(木) 21:40:23
>692
ANSI-Unicode変換レイヤ(本名は忘れた)の影響じゃないか?
0695デフォルトの名無しさん2010/10/07(木) 21:51:43
>>693
%HOMEDRIVE%%HOMEPATH%の1つ上を取るのは?
0696デフォルトの名無しさん2010/10/07(木) 22:06:24
>>693
直では無理
0697デフォルトの名無しさん2010/10/07(木) 22:31:03
>>693
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\ProfilesDirectory
直読みで
どうせユーザープロファイルってここと関わりのない別の任意の場所に作る事ができるし
0698デフォルトの名無しさん2010/10/07(木) 23:09:48
プロファイルぺろぺろ
0699デフォルトの名無しさん2010/10/07(木) 23:14:09
「秘密の花園」って最近聞かないよね
0700デフォルトの名無しさん2010/10/07(木) 23:24:17
SendMessageのWM_GETTEXTでメッセージボックスの説明のテキストを取得しようと思っているのですが、
その為にまず、説明のハンドルをFindWindowExで取得しようと思っているのですが、
現在、FindWindowExでメッセージボックスのハンドルを親に指定して、
IntPtr.Zeroから検索を開始して、1個目に!マークのアイコンのハンドルが返り
2個目に説明部分のハンドルが返ってくるので、この方法で動作しているのですが、
このような親以下の2個目という特定の仕方でも大丈夫でしょうか?

クラス名を指定できれば良いのですが、!マークのアイコンと説明は同じStaticクラスなので
どちらなのか特定できないです。
確実な方法があったら教えていただきたいです。
0701デフォルトの名無しさん2010/10/07(木) 23:57:54
座標を使え
0702デフォルトの名無しさん2010/10/08(金) 00:00:56
>>700
どちらも取得してテキストの内容なり矩形で判別すればいいだけでは?
0703デフォルトの名無しさん2010/10/08(金) 00:06:10
>>700
最近はダイナミック・リアサインが主流
0704デフォルトの名無しさん2010/10/08(金) 00:08:56
>>692
ANSIビルドでビジュアルスタイル使ってる?
0705デフォルトの名無しさん2010/10/08(金) 00:13:23
>>700
アイコンのほうはSS_ICONがついてるな
0706デフォルトの名無しさん2010/10/08(金) 00:31:59
mciSendString使って録音しようとしてるんですが、
open->record->stop->saveが一つの関数内で実行されると保存できるんですが、
open->recordとstop->saveを別にやるとファイルが保存されてない。
なぜに?

0707デフォルトの名無しさん2010/10/08(金) 01:48:09
情報が少ない
0708デフォルトの名無しさん2010/10/08(金) 01:50:57
おなかがゆるい
0709デフォルトの名無しさん2010/10/08(金) 06:56:39
>>694
よく分からない。
>>704
ANSIだけどwin2000だからビジュアルスタイルは使えない。

長めの文字列を渡すとCB_GETLBTEXTの時に今度はアクセス違反で落ちる。
どのみち長さを制限しなきゃいけないとは思っていたけど、扱いづらいな。
0710デフォルトの名無しさん2010/10/08(金) 07:12:56
>709
いや、だから変換レイヤの影響だろうって。ちゃんと調べてみな。
0711デフォルトの名無しさん2010/10/08(金) 07:43:45
コンボボックスに1025byteってすごいなw
0712デフォルトの名無しさん2010/10/08(金) 09:17:35
すいません。
timeBeginPeriod関数で精度を上げたいと思うんですが、
これを呼び出すタイミングって
ゲーム開始時に呼び出しといて、
ゲーム終了時にtimeEndPeriodを呼び出すだけでいいんですか?

それともFPS制御をしてる処理部分だけをこれらの関数で囲めばいいんですか?
0713デフォルトの名無しさん2010/10/08(金) 09:42:53
>>712
時間を取得する瞬間だけではなく
精度制御したい期間全てを囲む必要がある
ただしシステム全体に影響を与えてしまうので
ゲーム全体ではなく設定画面の表示中などもし精度が不要なら戻した方が良い
0714デフォルトの名無しさん2010/10/08(金) 09:46:28
>>712
ということは精度に影響してくる部分だけでいいってことですよね?
timeGetTimeとかSleepを使ってる部分だけで使えばよいということですよね?
0715デフォルトの名無しさん2010/10/08(金) 09:48:05
>>714は>>713の方に対してです。間違えました。
0716デフォルトの名無しさん2010/10/08(金) 09:49:06

timeEndPeriodの意味ないよね
0717デフォルトの名無しさん2010/10/08(金) 09:52:25
>>714
Sleep使う前後だけ囲んだらダメだよ。
Sleepを使うループを囲まないとダメ。

っていうか、今どきのPCで気にするような問題ではないので
WinMainの頭で設定しちゃっていい。
そんなの気にしてたらメディアプレーヤーも使えない。
0718デフォルトの名無しさん2010/10/08(金) 09:54:40
地デジだって数秒遅れても問題ない
デジタルってそういうもん
0719デフォルトの名無しさん2010/10/08(金) 10:07:59
>>717
丁寧にありがとうございます。Sleepごと囲むようにします。
ありがとうございました。
0720デフォルトの名無しさん2010/10/08(金) 10:20:36
いらんことまで同期させてシステム全体をパフォーマンスダウンさせる作戦
0721デフォルトの名無しさん2010/10/08(金) 10:26:34
もしSleep以外のタイミングでタスクが切り替わったらどうなるかとか
理詰めで解けると思うんだが
0722デフォルトの名無しさん2010/10/08(金) 12:15:30
スライドバーで画面の明るさ変えるツール作りたいんですが
どのAPI使えばいいんですか?

RadeonのCCCでDesktopの明るさを設定するような感じのものです。
0723デフォルトの名無しさん2010/10/08(金) 13:13:07
デスクトップに黒一色の半透明リージョンでも作って貼れば?
0724デフォルトの名無しさん2010/10/08(金) 15:42:16
>>710
MSLUってやつ? 9x系じゃないから関係なさそう。
0725デフォルトの名無しさん2010/10/08(金) 20:01:25
リストビューについての質問です。

int 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:54
>>725
ListView_FindItemの第二引数は-1にすべきでは?

ListView_FindItem Macro
http://msdn.microsoft.com/en-us/library/bb761242.aspx
0727デフォルトの名無しさん2010/10/08(金) 20:37:56
>>726
上手くいきました。ありがとうございます。
0728デフォルトの名無しさん2010/10/08(金) 20:47:57
待機しながら新規プロセスの監視ってできますか?FindFirstChangeNotificationみたいな
0729デフォルトの名無しさん2010/10/08(金) 21:52:25
>>721はバカ
0730デフォルトの名無しさん2010/10/08(金) 22:02:16
中にだれもいませんよ?
0731デフォルトの名無しさん2010/10/08(金) 22:03:14
>>728
WaitForSingleObject
0732デフォルトの名無しさん2010/10/08(金) 22:59:46
中にだれもいませんよ?
0733デフォルトの名無しさん2010/10/08(金) 23:28:11
中にだれもいませんよ?
0734デフォルトの名無しさん2010/10/08(金) 23:58:39
>>728
PsSetLoadImageNotifyRoutine
0735デフォルトの名無しさん2010/10/09(土) 00:07:06
ドライバ有りならPsSetCreateProcessNotifyRoutineだろ
0736デフォルトの名無しさん2010/10/09(土) 00:20:03
>>514のサイトを見ればほとんどの問題は解決するな
テンプレ追加したらどうだろうか
07377282010/10/09(土) 00:21:41
大事なこと書き忘れてて申し訳ありませんが、常駐して未知のプロセスの起動を監視したいと思ってます

>>731
どうもです、その関数は以前簡単に調べたことがあったんですが
例があらかじめわかっているプロセスの監視ばかりだったので別の方法を模索していました
その関数で上のようなことができるんならもっと調べてみますが…

>>734-735
どうもです、調べてみたら英語ばかりですね…なかなか時間がかかりそうです
0738デフォルトの名無しさん2010/10/09(土) 00:24:13
>>736
いい考えだな。
0739デフォルトの名無しさん2010/10/09(土) 00:34:27
自分も>>736に賛同であります
0740デフォルトの名無しさん2010/10/09(土) 00:36:33
改めて見てみたけど>>514のサイトすげーなおいww
これはもっと評価されるべきjkwww
0741デフォルトの名無しさん2010/10/09(土) 00:47:26
アフィリエイト乞食ってやつか
0742デフォルトの名無しさん2010/10/09(土) 00:52:39
↑嫉妬乙
0743デフォルトの名無しさん2010/10/09(土) 00:57:38
>>742
おいアホ、ちゃんと>>514って書いとけ気がきかねーな
0744デフォルトの名無しさん2010/10/09(土) 00:59:47
>>743って日本語不自由そうだよね
0745デフォルトの名無しさん2010/10/09(土) 01:09:23
>>736 >>738 >>739 >>740 >>742
また宣伝自演かよ。ウィルス仕込んでんじゃね。
0746デフォルトの名無しさん2010/10/09(土) 01:10:19
なんでも自演とか言うのは簡単でいいなぁ
0747デフォルトの名無しさん2010/10/09(土) 01:11:44
書き込むだけでいいし、小学生でもできる簡単なお仕事です
0748デフォルトの名無しさん2010/10/09(土) 01:13:45
これでいくらぐらい稼げるの
0749デフォルトの名無しさん2010/10/09(土) 01:15:23
アフィなんておまけだろ、重要なのは情報量
お前らはサイト見るときまずは広告を片っ端からクリックしていくのか?ww
0750デフォルトの名無しさん2010/10/09(土) 01:46:18
一部のアンチが騒いでるだけだろ
0751デフォルトの名無しさん2010/10/09(土) 01:48:39
この手の宣伝って削除対象にならんの?
0752デフォルトの名無しさん2010/10/09(土) 01:55:03
まれにみる糞サイトやったわw>>514
0753デフォルトの名無しさん2010/10/09(土) 01:56:47
批判するなら論理的に、な?低能じゃ無理だろうけどww
0754デフォルトの名無しさん2010/10/09(土) 02:11:02
まさかとは思うが自覚できてないとかね
0755デフォルトの名無しさん2010/10/09(土) 02:37:05
また日本語不自由者が
0756デフォルトの名無しさん2010/10/09(土) 03:27:06
いいからAPI出せや
0757デフォルトの名無しさん2010/10/09(土) 07:29:34
宣伝じゃなくて私怨で晒してるだけだろ
0758デフォルトの名無しさん2010/10/09(土) 08:32:33
普通に宣伝だろ、アホか
0759デフォルトの名無しさん2010/10/09(土) 08:35:02
いやいや、本人様が被害者を装って出てくることもありえるぞ
過去にそういう例があった
0760デフォルトの名無しさん2010/10/09(土) 08:51:02
しかし情報の質は本物だな、第2のMSDNと言ってもいい
しかもAPIだけじゃなく様々なライブラリまで網羅している
0761デフォルトの名無しさん2010/10/09(土) 09:57:51
読み方は「あぴ」だよね?
0762デフォルトの名無しさん2010/10/09(土) 09:58:21
いずれにしても>>760は精神異常者
0763デフォルトの名無しさん2010/10/09(土) 10:02:33
>>762みたいに侮辱するだけの人間って生きてても意味ないよね
0764デフォルトの名無しさん2010/10/09(土) 10:11:23
精神異常者とか言っちゃう人間って
0765デフォルトの名無しさん2010/10/09(土) 10:18:30
最近Win64APIというライバルスレが立ったようだな
0766デフォルトの名無しさん2010/10/09(土) 10:46:24
>>716
16bitの時代はちゃんとtimeBeginPeriodに対応して呼び出す必要があったが
今は終了すると自動的にtimeEndPeriodされるようだ。
0767デフォルトの名無しさん2010/10/09(土) 11:09:17
いやそれガセだから
0768デフォルトの名無しさん2010/10/09(土) 14:03:54
メディアプレーヤを常時起動してればtimeBeginPeriodは必要ない
0769デフォルトの名無しさん2010/10/09(土) 18:38:35
ではやはりあげておくべきですね。
0770デフォルトの名無しさん2010/10/09(土) 19:23:16
「このプログラムを実行する際は必ずメディアプレーヤを起動しておいてください」
0771デフォルトの名無しさん2010/10/09(土) 19:43:58
デフォルトでミリ病単位なのにそれ以下にできないtimeBeginPeriodに意味はあるの?
たぶん>>716の意図とは違うけど質問
0772デフォルトの名無しさん2010/10/09(土) 19:54:28
質問が意味不明
0773デフォルトの名無しさん2010/10/09(土) 19:55:43
よく分からないけど
デフォルトが1xミリ秒とかなんだよ
0774デフォルトの名無しさん2010/10/09(土) 20:02:29
771の手にかかると分解能15.6msecはmsec単位にされるらしい
0775デフォルトの名無しさん2010/10/09(土) 20:05:55
だから「ミリ病」って言ってんじゃん
0776デフォルトの名無しさん2010/10/09(土) 20:11:12
timeBeginPeiodを使うアプリがスタートアップに入ってるとか
ブラウザがChromeだとか
0777デフォルトの名無しさん2010/10/09(土) 20:13:42
timeEndPeriodはいかなる時でも必要
0778デフォルトの名無しさん2010/10/09(土) 20:30:41
タイマーとかだったら間隔を15.6msecにすればいいことじゃん
分解能を変える必要があるのかと
μsecまで高精度化できるならまだしも
0779デフォルトの名無しさん2010/10/09(土) 20:32:08
てか15.6msecなんてできないなw
それこそ1msec以下は設定できない
0780デフォルトの名無しさん2010/10/09(土) 20:32:15
時の流れに終止符を打て!
0781デフォルトの名無しさん2010/10/09(土) 20:35:21
>>779
Windowsが100nsで保持してるのを知らないアホ
0782デフォルトの名無しさん2010/10/09(土) 20:53:48
?
0783デフォルトの名無しさん2010/10/09(土) 21:09:34
Windowsが100nsで保持しているそうですwwwww
0784デフォルトの名無しさん2010/10/09(土) 21:26:32
なんか見たことある気がしたんで調べたら、
FILETIME構造体ではファイル時間が100ナノ秒間隔でカウントされてた

本気でそんな精度があるのかどうかは俺は知らない
0785デフォルトの名無しさん2010/10/09(土) 21:30:03
ミリ秒より小さな桁で数えたければ、QueryPerformanceCounterとかがある。
timeBeginPeriodは1ミリ秒が限界ということだよね。
0786デフォルトの名無しさん2010/10/09(土) 21:32:14
1/1024?
0787デフォルトの名無しさん2010/10/09(土) 23:43:33
>>785
timeBeginPeriodの精度はそんなに高くない
たまに1msで回ってくれることもある、程度のもの
0788デフォルトの名無しさん2010/10/10(日) 03:59:03
DXUTの存在もっと速く教えろよ(#゚Д゚)ゴラァ
0789デフォルトの名無しさん2010/10/10(日) 04:08:27
>>788誤爆スマソ
0790デフォルトの名無しさん2010/10/10(日) 04:16:25
ゆるさん
0791デフォルトの名無しさん2010/10/10(日) 08:47:56
>>787は>>785が言ったことを復唱しただけwww
0792デフォルトの名無しさん2010/10/10(日) 09:46:51
いや違うな。
timeBeginPeriodは最小で1msの精度になるってことだろ。
0793デフォルトの名無しさん2010/10/10(日) 13:38:35
Win32APIでジョイスティックの入力ってできます?
0794デフォルトの名無しさん2010/10/10(日) 14:08:43
joyGetPoxExで検索するのよ
0795デフォルトの名無しさん2010/10/10(日) 14:18:30
1 件 (0.10 秒)

あるのかよ・・・
0796デフォルトの名無しさん2010/10/10(日) 14:23:32
アハハ・・・

joyGetPosExだなw
0797デフォルトの名無しさん2010/10/10(日) 15:48:42
名前ダセエwwwwwww
MSDNでもググル検索に引っかからない関数けっこうあるのな
0798デフォルトの名無しさん2010/10/10(日) 17:01:13
>>792
0799デフォルトの名無しさん2010/10/10(日) 17:01:26
タブコントロールが背景のStaticに隠れてしまうのですが、
これが正しい挙動なんでしょうか?
他のコントロールはちゃんと表示されるのですが。

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:02
定期あげ
0801デフォルトの名無しさん2010/10/10(日) 21:10:38
ウィンドウズ的にはジョイスティックっていう名称が一般的なの?
ゲームパッドとかジョイパッドとかいろいろ呼び名あって統一されてない気がするけど
0802デフォルトの名無しさん2010/10/10(日) 21:13:01
Microsoft® DirectInput® は、マウス、キーボード、ジョイスティック、およびその他のゲーム コントローラの入力デバイスに加え、フォース フィードバック (入出力) デバイスもサポートするアプリケーション プログラミング インターフェイス (API) である。
0803デフォルトの名無しさん2010/10/10(日) 21:37:19
またまたご冗談を
0804デフォルトの名無しさん2010/10/10(日) 21:50:23
>>801
開発者向けは知らんが
少なくともエンドユーザー向けには「ゲームコントローラー」のようだな
Windows7のコントロールパネル見る限り
0805デフォルトの名無しさん2010/10/10(日) 22:01:48
>>799
STATICをそんな使い方してもいいのか・・・?
0806デフォルトの名無しさん2010/10/10(日) 22:48:12
>>805
やっぱりSTATICの使い方が不適切だったみたいです。
背景をSTATICで設定するのをやめて、hbrBackgroundで設定したら正しく表示されるようになりました。
ウィンドウクラスの設定の部分はコピペで作っていたので、こんな問題があるとは知りませんでした。
ありがとうございます。
0807デフォルトの名無しさん2010/10/11(月) 00:31:34
ジョブスティック
0808デフォルトの名無しさん2010/10/11(月) 00:52:14
Visual Basicのフォームアプリのコントロールの
EnabledプロパティをAPIを使ってTrue/Falseを切り替えたいのですが
どんな方法で出来ますか?
コントロールのハンドルは取得出来ています。
08098082010/10/11(月) 01:14:47
連続ですみません。
SendMessageでWM_ENABLEを送ったらテキストボックスをTrueに設定できました。
ボタンも同じように試したのですが、フォーカスが設定されるだけで
Trueにならないのですが、ボタンはこの方法では無理でしょうか?
0810デフォルトの名無しさん2010/10/11(月) 01:57:52
何でわざわざAPI使うんだよ

button.Enable = True;とでもしろよ
0811デフォルトの名無しさん2010/10/11(月) 07:21:16
なんでプログラマって本を結末から読むの?
0812デフォルトの名無しさん2010/10/11(月) 07:26:32
スレ違いだから
0813デフォルトの名無しさん2010/10/11(月) 07:33:27
↑誇らしげに反応してるのが実に馬鹿っぽい
0814デフォルトの名無しさん2010/10/11(月) 07:51:24
釣り……ってレベルでもないけどね
0815デフォルトの名無しさん2010/10/11(月) 07:53:24
久しぶりに誇らしい気分になれたよ
0816デフォルトの名無しさん2010/10/11(月) 10:46:58
SetWindowLongでボタンのウインドウスタイルを変更するのは?
0817デフォルトの名無しさん2010/10/11(月) 12:43:45
スレ違いだから
0818デフォルトの名無しさん2010/10/11(月) 13:22:08
const DWORDを返すAPIをおしえてくれ!
0819デフォルトの名無しさん2010/10/11(月) 13:35:51
意味分からん
0820デフォルトの名無しさん2010/10/11(月) 13:44:44
もうだめだこのスレ
0821デフォルトの名無しさん2010/10/11(月) 16:30:47
もうだめだこのスレwwwwwwwwww
0822デフォルトの名無しさん2010/10/11(月) 16:41:29
もうだめだこのスレwwwwwwwwwwwwwwwwwwww
0823デフォルトの名無しさん2010/10/11(月) 17:35:46
もうだめだこのスレw/*/$
0824デフォルトの名無しさん2010/10/11(月) 18:41:02
で、MSはなんでやたらめったら変な型を作り出すの?
0825デフォルトの名無しさん2010/10/11(月) 18:52:03
他の環境に移れない頭を作るためだよ
0826デフォルトの名無しさん2010/10/11(月) 19:09:50
BOOLのくせに-1ってなんだよ、ってなったのは覚えてる
0827デフォルトの名無しさん2010/10/11(月) 19:32:47
ブール!!!!!!
0828デフォルトの名無しさん2010/10/11(月) 20:20:37
プ板でやれ
0829デフォルトの名無しさん2010/10/11(月) 20:23:52
てか何でBOOLって4バイトも使ってんの? 馬鹿なの?

ここで問題、bool が1ビットではなく8ビットも使っている理由とは?
0830デフォルトの名無しさん2010/10/11(月) 20:33:38
sizeof(bool[2])
0831デフォルトの名無しさん2010/10/11(月) 20:35:48
1ビットにしたところでメモリ上ではバイトアライメント分使ってしまう
0832デフォルトの名無しさん2010/10/11(月) 20:40:21
せーいかい!
0833デフォルトの名無しさん2010/10/11(月) 20:45:17
てかintのマクロじゃね?
0834デフォルトの名無しさん2010/10/11(月) 20:49:00
>>833
BOOLとBOOLEANとboolの区別が出来るようになれよ
0835デフォルトの名無しさん2010/10/11(月) 20:54:56
い、今起こったことをありのままに話すぜ!
簡易ブログで呟くつもりが間違ってスレで呟いたら、いつの間にかクイズに正解していた!
何を
0836デフォルトの名無しさん2010/10/11(月) 22:42:33
後付けネタ大会始まるよー!
0837デフォルトの名無しさん2010/10/11(月) 22:53:00
>>514
神サイト
0838デフォルトの名無しさん2010/10/11(月) 22:53:24
始まるでザマス
0839デフォルトの名無しさん2010/10/11(月) 23:04:54
ふぐぉおおおおおおおおおおおおおおおおお
0840デフォルトの名無しさん2010/10/11(月) 23:17:23
>>837
お前のせいでこのスレ終わりかけたんだぞ分かってんのか?このまま終わるかかもだが
0841デフォルトの名無しさん2010/10/12(火) 01:10:32
↑誰かこれ翻訳して
0842デフォルトの名無しさん2010/10/12(火) 01:18:37
すまん俺にも何を言ってるのか分からん
0843デフォルトの名無しさん2010/10/12(火) 01:21:52
リッチエディットコントロールで文字のサイズの変更がしたいんですが、設定しても半角文字なら設定したサイズになりますが、
全角文字にした途端にデフォルトの文字サイズに戻ってしまいます。
プロシージャのところで止めておかなければいけないメッセージでもあるんでしょうか?
0844デフォルトの名無しさん2010/10/12(火) 04:18:56
DIBでMSペイントの塗り潰しと同じことするにはどうすればいいんだ?
再帰とかで試していたがわけわからなくなってきた
0845デフォルトの名無しさん2010/10/12(火) 04:55:35
ExtFloodFill
0846デフォルトの名無しさん2010/10/12(火) 07:29:20
 
0847デフォルトの名無しさん2010/10/12(火) 09:17:47
なるほど
0848デフォルトの名無しさん2010/10/12(火) 10:19:09
あずにゃん
0849デフォルトの名無しさん2010/10/12(火) 10:49:21
ペロペロ
0850デフォルトの名無しさん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:48
うるせえよゴキブリヘアーが
0852デフォルトの名無しさん2010/10/12(火) 12:41:27
俺の認識が間違ってるんだろうけどなんか目が怖い
0853デフォルトの名無しさん2010/10/12(火) 18:14:49
>>851
0854デフォルトの名無しさん2010/10/12(火) 18:24:58
succ :: Integer -> Integer
succ n = n + 1
0855デフォルトの名無しさん2010/10/12(火) 19:48:43
let rec f n = f (n + 1);;
0856デフォルトの名無しさん2010/10/12(火) 20:10:48
WCHAR buf[256];

これを L" " で埋める命令はない?
0857デフォルトの名無しさん2010/10/12(火) 20:12:38
wmemset
0858デフォルトの名無しさん2010/10/12(火) 20:20:33
umeumeset
0859デフォルトの名無しさん2010/10/12(火) 20:32:00
_tcsnset_s
0860デフォルトの名無しさん2010/10/12(火) 20:33:47
_tcsset_s
0861デフォルトの名無しさん2010/10/12(火) 20:47:48
CopyRect
0862デフォルトの名無しさん2010/10/12(火) 20:54:09
MOV
0863デフォルトの名無しさん2010/10/12(火) 22:07:52
umeumeset
0864デフォルトの名無しさん2010/10/12(火) 22:20:22
どれが最強なの
0865デフォルトの名無しさん2010/10/12(火) 22:21:37
MOVで頑張れば一番速い
0866デフォルトの名無しさん2010/10/12(火) 22:32:09
ZeroMemory
0867デフォルトの名無しさん2010/10/12(火) 22:34:02
_setLspace
0868デフォルトの名無しさん2010/10/12(火) 22:48:03
FillMemory
0869デフォルトの名無しさん2010/10/12(火) 22:52:03
>>856
WCHAR 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
>>869
あうとーーーーーーー。
0871デフォルトの名無しさん2010/10/12(火) 23:04:52
>>870
君合格
0872デフォルトの名無しさん2010/10/12(火) 23:20:01
WCHAR buf[256]={L" "};
0873デフォルトの名無しさん2010/10/12(火) 23:30:15
>>872
ダウト
0874デフォルトの名無しさん2010/10/12(火) 23:39:29
最近のCPUはたるんでるから好きなだけぶん回せばいいよ
0875デフォルトの名無しさん2010/10/13(水) 00:18:03
>>856
rep movsw
0876デフォルトの名無しさん2010/10/13(水) 00:20:26
L" "ってことは、空白とヌル文字の繰り返しで埋めるって事?
なんか地味に面倒そうだ。
0877デフォルトの名無しさん2010/10/13(水) 03:15:37
いやそこはアドレスってボケの方が良かったな
0878デフォルトの名無しさん2010/10/13(水) 07:34:38
WCHAR buf[256]={};
0879デフォルトの名無しさん2010/10/13(水) 09:39:48
#define buf L" "
0880デフォルトの名無しさん2010/10/13(水) 10:14:16
いいからAPI出せや
0881デフォルトの名無しさん2010/10/13(水) 10:20:42
じゃ、APIでw

int 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
>>881
それもダウトォォォォー!!!1!
0883デフォルトの名無しさん2010/10/13(水) 11:24:30
普通に256個で初期化すれば
WCHAR buf[256]=" (中略) ";
0884デフォルトの名無しさん2010/10/13(水) 16:16:23
ところで_T()っても時定数にも使えたのな
0885デフォルトの名無しさん2010/10/13(水) 16:19:51
工学では時定数はお前が言っているのと別の意味を持つ。おかしな略語使うな。
0886デフォルトの名無しさん2010/10/13(水) 18:02:56
も、文字定数
0887デフォルトの名無しさん2010/10/13(水) 18:25:16
馬鹿を晒したのは>>885でした、と
0888デフォルトの名無しさん2010/10/13(水) 18:28:39
TCHARで切り替えられる作り方をするのが普通
0889デフォルトの名無しさん2010/10/13(水) 18:57:08
も時定数ワロタ
0890デフォルトの名無しさん2010/10/13(水) 19:16:25
最近9x使わないからUNICODEとANSIを切り替えることが少ない
0891デフォルトの名無しさん2010/10/13(水) 19:27:42
複数プラットフォーム対応のライブラリってほとんどANSIじゃない?
いちいち変換するのが面倒でそういうの使う時はついANSIになってしまう
0892デフォルトの名無しさん2010/10/13(水) 19:28:42
一応TCHARで組んでるけど
多分うにこーどでないとバグる
0893デフォルトの名無しさん2010/10/13(水) 19:31:32
文字数はっきりしてるほうが楽だよな
0894デフォルトの名無しさん2010/10/13(水) 19:34:21
っサロゲートペア
0895デフォルトの名無しさん2010/10/13(水) 19:47:45
もう64ビットくらい使っちゃえよ
0896デフォルトの名無しさん2010/10/13(水) 20:06:56
w
↑これ8バイト
0897デフォルトの名無しさん2010/10/13(水) 20:18:05
EDITコントロール作るんだけどね
WS_HIDEなままで
これのHDCから見た目撮れる?
0898デフォルトの名無しさん2010/10/13(水) 20:48:59
うん
0899デフォルトの名無しさん2010/10/13(水) 21:12:47
ピャピャピャー
0900デフォルトの名無しさん2010/10/13(水) 21:15:37
いや無理だろう
0901デフォルトの名無しさん2010/10/13(水) 21:27:47
WM_PAINTがこないと
0902デフォルトの名無しさん2010/10/13(水) 21:41:23
いいからAPI出せや
0903デフォルトの名無しさん2010/10/13(水) 22:04:55
だから初心者は>>514を見ろ
このサイトは次スレからテンプレ入りする約束が確約された専門技術高度情報である
0904デフォルトの名無しさん2010/10/13(水) 22:12:12
だが断る!!
0905デフォルトの名無しさん2010/10/13(水) 22:28:50
>>904
いい加減にしろ
誰も認めてないだろ
09069052010/10/13(水) 22:29:33
ごめ>>904じゃなくて>>903ね
0907デフォルトの名無しさん2010/10/13(水) 22:58:27
sample.exeにopenprocessでメモリ読み取るツールなどを遮断するにはどうしたらいいですか?


openprocess関数を失敗させる

みたいな
0908デフォルトの名無しさん2010/10/13(水) 23:05:05
>>906
なりすましはやめてくれないかな
0909デフォルトの名無しさん2010/10/13(水) 23:10:09
読み取らせたかない部分を別の実行ファイルにして
瞬時に終わらせるとか
0910デフォルトの名無しさん2010/10/13(水) 23:10:35
>>891
ANSIというか他のプラットフォームではUTF-8なこと前提でワイド文字を使わないな
0911デフォルトの名無しさん2010/10/13(水) 23:11:00
>>907
Protected Processにする(Vista以降)
0912デフォルトの名無しさん2010/10/13(水) 23:40:25
すべてのOSで可能なのを頼む
0913デフォルトの名無しさん2010/10/13(水) 23:44:20
>>912
sptd.sysとかネトゲのゲームガードのようなマルウェアまがいのことしないと無理
少なくともスレ違い
0914デフォルトの名無しさん2010/10/13(水) 23:47:55
>>907
CreateProcessのセキュリティ記述子を設定すればできるよ。
エクスプローラとかから起動されると設定されていないので、
必要な設定にして自分自身をCreateProcessで再起動するようにする。
0915>>907です2010/10/13(水) 23:52:02
Protected Processについてググりましたが、よくわかりません。

OSは気にしないので、外部プロセスがreadprocessmemoryなどでメモリを読み取れなくさせようと思います。
DLL Injectionで何かをフックすれば可能ですかね?

0916>>9072010/10/13(水) 23:58:40
>>914
なるほど。createprocessのセキュリティ記述子の設定して再起動ですか。。
簡単なサンプル頂けませんか?
0917デフォルトの名無しさん2010/10/14(木) 00:05:50
>>888
今後はwchar_t決め打ちが流行る
0918デフォルトの名無しさん2010/10/14(木) 00:40:05
TCHAR使っても完全に文字コードの互換保つのに面倒な部分出てくるしな
0919デフォルトの名無しさん2010/10/14(木) 00:51:06
string使えないと不便でしょうがない
0920デフォルトの名無しさん2010/10/14(木) 01:01:31
wcscpyとwcslenで代用
0921>>9072010/10/14(木) 01:13:59
>>914のセキュリティ記述子を設定しました。

普通にメモリ読み込めるんですけど・・・・

#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>>9072010/10/14(木) 01:15:34
DWORD dwAccessMask = FILE_GENERIC_WRITE | FILE_EXECUTE | GENERIC_READ;

この部分をWRITEだけにたら、起動すらできなくなります。

起動はできるけど、あくまで外部プロセスからメモリを読み取らせないのであって、起動自体に制限はかけたくないです。
よろしくお願いします。
0923デフォルトの名無しさん2010/10/14(木) 01:16:33
CreateProcessはどこへいったんだ
0924>>9072010/10/14(木) 01:42:47
#include <windows.h>
#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
オーナードローしたボタンを連打するとitemStateがおかしくなります。

具体的にはボタン押下状態でODS_SELECTEDフラグが立ちません。
以下がボタンダウンしているにも関わらず青ボタンになります。

DRAWITEMSTRUCT* ds = (DRAWITEMSTRUCT*)lParam;
if(ds->itemState & ODS_SELECTED){
 //赤でボタン描画(ボタンダウン状態)
}else{
 //青でボタン描画(ボタンアップ状態)
}

itemStateの使い方が間違ってる/回避方法などあればご教授お願いします。
0926デフォルトの名無しさん2010/10/14(木) 02:31:48
>>913
分からないならレスしなければいいのにwwwwww
0927デフォルトの名無しさん2010/10/14(木) 02:33:34
マッコリ純生
0928>>907 2010/10/14(木) 02:34:21
CreateProcessでセキュリティ記述子いじってプロセス再起動させる
ことによって、デバッガなどがReadProcessMemoryでメモリを読み取れなくさせるプログラムが、やっぱりわかりません。
どなたか、ご教授お願いします><
0929デフォルトの名無しさん2010/10/14(木) 02:37:22
>>925
ttp://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:51
921のコードはexeのセキュリティ記述子を変更しようとしているから
readprocessmemoryの成功とは全く関係ない
922のようにexeを起動できるかどうかに関係するだけ

readprocessmemoryを失敗させるんなら
exeではなくプロセスのセキュリティ記述子を変更しないと
0932デフォルトの名無しさん2010/10/14(木) 04:29:39
↑さっさとコード張れやカス
0933デフォルトの名無しさん2010/10/14(木) 04:34:37
>>907
ようres_unless
0934デフォルトの名無しさん2010/10/14(木) 05:36:53
>>928
こうゆうことか?
http://eternalwindows.jp/security/accesscontrol/accesscontrol13.html
0935デフォルトの名無しさん2010/10/14(木) 05:44:36
つーか
チート対策するほど需要(利益)のあるアプリが出来たのなら
そういうところ(人)に依頼すればいいだけでは?

そういう人の立場での質問だったらご愁傷さまですけど。
0936>>9072010/10/14(木) 08:21:22
>>934
ようはそんな感じですけど、
ターミネートプロセスの禁止ではなくREADの禁止だから〜
ってのと、CreateProcessで〜
ってのがよくわからなくなりました。

プロセス起動中のセキュリティとファイルのセキュリティ記述子が別ということはわかりました。


0937デフォルトの名無しさん2010/10/14(木) 08:55:50
>ターミネートプロセスの禁止ではなくREADの禁止だから

全く知識の無い俺が該当ページのサンプルプログラムを見て勝手に想像すると

PROCESS_TERMINATE で TerminateProcess が禁止できるなら
PROCESS_VM_READ にすれば ReadProcessMemory が禁止できるはず!

って思ったりするが(以下ry
0938デフォルトの名無しさん2010/10/14(木) 09:03:42
つーかアクセス権いじって禁止しても管理者なら再設定できたりしないの?
0939デフォルトの名無しさん2010/10/14(木) 09:16:04
真面目な話
こんなので対策出来ると思ってるの?
ユートピアすぎる
09409392010/10/14(木) 09:27:52
ユートピア言いたいだけでした。すみません
0941デフォルトの名無しさん2010/10/14(木) 09:28:33
kernel32.dllを書き換えて自分が起動するときはそれを読み込むようにする、とか。
0942デフォルトの名無しさん2010/10/14(木) 09:31:56
俺がチートするなら、メモリの状態を解析するよりも先にexeファイルをいじる
0943デフォルトの名無しさん2010/10/14(木) 10:24:16
急に話のレベルが下がったな
0944デフォルトの名無しさん2010/10/14(木) 10:32:26
リストを作る命令を教えてください
0945デフォルトの名無しさん2010/10/14(木) 10:36:01
SSDT hookとかでおk
0946>>9072010/10/14(木) 11:31:15
うさみみとかでプロセス開こうとすると、開けないっていうオンラインゲームのセキュリティなんですけど、そういうツールの簡単バージョンを作りたいわけですが、
実用性はまだないですが。

それでターゲットのセキュリティ記述子(プロセス
)を設定すればできると思ったわけですが


gameguardがいい見本でした。
0947>>9072010/10/14(木) 11:34:24
そういや>>934のサンプルそのままコンパイルしてやるとアクセス拒否されました!とかでないのは64bit環境だからですか?
0948デフォルトの名無しさん2010/10/14(木) 11:46:00
サンプルプログラムがTerminateProcessしかチェックしてないからじゃないの
0949デフォルトの名無しさん2010/10/14(木) 11:49:20
RestartProcess(szKey, PROCESS_VM_READ);
0950デフォルトの名無しさん2010/10/14(木) 12:19:44
DetoursのAPIフックを使えば簡単にできる
らしいのですが、どうなんでしょうか?
0951デフォルトの名無しさん2010/10/14(木) 12:35:10
その見本にしたいらしいGameGuard自体が抜け穴だらけなわけだが
0952>>9072010/10/14(木) 12:53:02
抜け穴だらけっていうのはどういうことですか?
0953>>9072010/10/14(木) 13:05:48
>>949
RestartProcess(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:22
きもい
0955デフォルトの名無しさん2010/10/14(木) 14:12:56
>>952
それくらい自分で予想もできないで人に聞くなら相応の金を払ってその手のを買うべき。
クラックやら何やらを行う人間はあらゆる穴を探そうとするしどの穴を使ったか教えてくれない。
0956デフォルトの名無しさん2010/10/14(木) 14:14:22
1プロセス1スレッドなアプリがCPUコア0で動作している場合、
タスクマネージャ等でユーザーが明示的に切り替える場合を除いて
たとえば負荷状況に応じて自動的にCPUコア1に切り替わるといったことはあるんでしょうか?
0957デフォルトの名無しさん2010/10/14(木) 14:35:39
startupInfo.cb = sizeof STARTUPINFO;
0958デフォルトの名無しさん2010/10/14(木) 15:17:43
>>907
http://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
>>953
デバッガはさておき、とりあえず >>907 でやりたい事は実現できてるだろ?
0960デフォルトの名無しさん2010/10/14(木) 17:12:21
lockかける前のプロセスをデバッガで見てるとか?試して無いので...
0961デフォルトの名無しさん2010/10/14(木) 17:41:16
ttp://support.microsoft.com/kb/131065/ja
上にかいてあるようにSeDebugPrivilegeを有効にしたらプロセスのハンドルは取得できる
つまりデバッガがSeDebugPrivilegeを有効にしていたら
プロセスのセキュリティ記述子をいじってても無駄ということかね
0962>>9072010/10/14(木) 17:47:14
>>959
いまだできません。><
0963デフォルトの名無しさん2010/10/14(木) 17:59:48
TCHAR用の関数選んでも処理の書き方次第で普通に依存するからなー
0964デフォルトの名無しさん2010/10/14(木) 18:10:39
再起動します。
は見えるで、
終了します。
も見えるってことなのかな?
0965デフォルトの名無しさん2010/10/14(木) 19:18:45
>>956
SetThreadAffinityMaskというAPIがある位だから、切り替わることもあるだろ。
CPUキャッシュとか勿体無いから、頻繁には切り替わらないだろうけど。
0966デフォルトの名無しさん2010/10/14(木) 19:25:21
とりあえず横スクロールしないと全文見えないのが腹立つ
0967デフォルトの名無しさん2010/10/14(木) 21:53:06
■開発環境
Windows 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:31
セッション0分離でggr
0969デフォルトの名無しさん2010/10/14(木) 22:06:34
アクセス許可どういじってもデバッグ特権持ってるユーザーは
(管理者ならデフォルトで持ってる)アクセス許可無視して開けるから無駄
だから最初からVistaはProtected ProcessにしてXPは>>913だって言ってるのに。
自分で試さないと納得できないならなんで質問するの?
0970デフォルトの名無しさん2010/10/14(木) 22:11:25
定期あげ
0971デフォルトの名無しさん2010/10/14(木) 22:13:34
夏だな・・・。
0972デフォルトの名無しさん2010/10/14(木) 22:49:55
こんなスレあったのか
0973デフォルトの名無しさん2010/10/14(木) 22:50:24
Protected Process(Vistaのみ)

* Kernel(OS)レベルでプロセスを保護
* Microsoft公認rootkit?
o デバッガのアタッチなどから保護する機能を提供
* ただしMicrosoftの認証が必要
0974デフォルトの名無しさん2010/10/14(木) 22:59:38
埋め
0975デフォルトの名無しさん2010/10/14(木) 23:05:45
梅
0976デフォルトの名無しさん2010/10/14(木) 23:09:34
デバッッガッー!
0977デフォルトの名無しさん2010/10/14(木) 23:14:24
>>973
Win7にはないのかなぁ
0978デフォルトの名無しさん2010/10/14(木) 23:25:06
さあ、ググってて、偶然見つけた内容だから...
09799252010/10/14(木) 23:47:04
>>929
ありがとう。
ちゃんとボタンがDOWNするようになりました。
0980デフォルトの名無しさん2010/10/15(金) 00:25:15
Win7にもaudiodg.exeはあるみたいだからあるんじゃない
0981デフォルトの名無しさん2010/10/15(金) 01:28:49
埋め
0982>> 9072010/10/15(金) 01:50:39
Win7 64bitでGameGuardが起動する前にCheat Engineなどを起動してもGameGuardが起動されればメモリが遮断されるというあれです。
32bit版ではGameMon.desは自分自身のプロセスさえも隠蔽していたが64bit版では隠蔽はされていなかった。
0983>>9072010/10/15(金) 01:54:40
そして、npggNT.desファイルがメモリ遮断の手助けをしているらしいです。

GameGuardシステムについてはこちらにありました。
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:30
マジな話GameGuard買ったほうが早いと思うけど
0986デフォルトの名無しさん2010/10/15(金) 02:32:20
だからその面倒な仕掛けのGameGuardすら簡単に突破してメモリ内容見られるのに
お前の頭でどうにかできると思ってるのかと
0987デフォルトの名無しさん2010/10/15(金) 02:56:27
カーネルモードでグリグリしちゃいなYO!
0988デフォルトの名無しさん2010/10/15(金) 02:59:48
> メモリ遮断
じゃなくて、他の方法考えたほうが良さそうだけど
読まれて困るデータのアドレスをもごもご...
0989デフォルトの名無しさん2010/10/15(金) 03:32:16
GameGuard起動している中でメモリ読むってどうやんの
0990 ◆0uxK91AxII 2010/10/15(金) 04:19:18
DLL injectionとかしておけば、容易に読める。
nProtectが動いている時限定で、特殊なint 2eHが有効になるから、
それを使えばいけそうな気もするする。
0991デフォルトの名無しさん2010/10/15(金) 04:53:23
コンソールアプリを外部アプリとして実行したいんですが、CreateProcess使ったあとに
そのコンソールアプリへctrl-cを送りたい場合はどうすればいいんでしょうか?
0992デフォルトの名無しさん2010/10/15(金) 08:15:17
>>990
kwsk頼む
int 2wh?

WallHack系ツールは不正プログラムとして落とされるはずだが…
0993デフォルトの名無しさん2010/10/15(金) 12:36:32
知らないなら無理してレスしなくていいから
0994デフォルトの名無しさん2010/10/15(金) 12:37:34
 
0995デフォルトの名無しさん2010/10/15(金) 16:10:20
SendConsoleCtrlC()
0996>>9072010/10/15(金) 19:19:10
http://dobon.net/vb/dotnet/file/fileshare.html

これってなんか関係ありますか?
0997デフォルトの名無しさん2010/10/15(金) 19:21:35
なーんも
0998>>9072010/10/15(金) 19:25:37
ファイルロックとメモリ読まれないようにするのは別ですか
0999デフォルトの名無しさん2010/10/15(金) 19:41:19
基礎からやり直しませう
1000デフォルトの名無しさん2010/10/15(金) 19:43:48
にゅう
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。