Win32API質問箱 Build84

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんやお姉さんたちが答えてくれるかも。
「知らないならレスしないで下さい。ウザイだけです。 」なんて言わないでねっ!

過去スレ、関連リンクは>>2-10くらい。

■注意
・質問する前に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

Win32API質問箱 Build83
http://pc12.2ch.net/test/read.cgi/tech/1256891725/
2デフォルトの名無しさん:2009/11/29(日) 16:16:10
3デフォルトの名無しさん:2009/11/29(日) 16:16:32
60 ttp://pc11.2ch.net/test/read.cgi/tech/1196874830/
59 ttp://pc11.2ch.net/test/read.cgi/tech/1194701996/
58 ttp://pc11.2ch.net/test/read.cgi/tech/1191781463/
57 ttp://pc11.2ch.net/test/read.cgi/tech/1189255282/
56 ttp://pc11.2ch.net/test/read.cgi/tech/1186989201/
55 ttp://pc11.2ch.net/test/read.cgi/tech/1184853465/
54 ttp://pc11.2ch.net/test/read.cgi/tech/1181645965/
53 ttp://pc11.2ch.net/test/read.cgi/tech/1178882828/
52 ttp://pc11.2ch.net/test/read.cgi/tech/1176828891/
51 ttp://pc11.2ch.net/test/read.cgi/tech/1174416295/
50 ttp://pc11.2ch.net/test/read.cgi/tech/1171721448/
49 ttp://pc10.2ch.net/test/read.cgi/tech/1168708801/
48 ttp://pc10.2ch.net/test/read.cgi/tech/1166172047/
47 ttp://pc8.2ch.net/test/read.cgi/tech/1163375772/
46 ttp://pc8.2ch.net/test/read.cgi/tech/1159158014/
45 ttp://pc8.2ch.net/test/read.cgi/tech/1156032806/
44 ttp://pc8.2ch.net/test/read.cgi/tech/1151501925/
43 ttp://pc8.2ch.net/test/read.cgi/tech/1148005509/
42 ttp://pc8.2ch.net/test/read.cgi/tech/1144962549/
41 ttp://pc8.2ch.net/test/read.cgi/tech/1141392216/
40 ttp://pc8.2ch.net/test/read.cgi/tech/1138893959/
39 ttp://pc8.2ch.net/test/read.cgi/tech/1136673250/
38 ttp://pc8.2ch.net/test/read.cgi/tech/1133798345/
37 ttp://pc8.2ch.net/test/read.cgi/tech/1131884991/
36 ttp://pc8.2ch.net/test/read.cgi/tech/1128951330/
35 ttp://pc8.2ch.net/test/read.cgi/tech/1125850096/
34 ttp://pc8.2ch.net/test/read.cgi/tech/1122723009/
33 ttp://pc8.2ch.net/test/read.cgi/tech/1120153520/
32 ttp://pc8.2ch.net/test/read.cgi/tech/1117271829/
31 ttp://pc8.2ch.net/test/read.cgi/tech/1114762194/
4デフォルトの名無しさん:2009/11/29(日) 16:16:51
30 ttp://pc8.2ch.net/test/read.cgi/tech/1112345886/
29 ttp://pc8.2ch.net/test/read.cgi/tech/1110281860/
28 ttp://pc5.2ch.net/test/read.cgi/tech/1108199304/
27 ttp://pc5.2ch.net/test/read.cgi/tech/1106103119/
26 ttp://pc5.2ch.net/test/read.cgi/tech/1104109858/
25 ttp://pc5.2ch.net/test/read.cgi/tech/1101393155/
24 ttp://pc5.2ch.net/test/read.cgi/tech/1098967135/
23 ttp://pc5.2ch.net/test/read.cgi/tech/1095534704/
22 ttp://pc5.2ch.net/test/read.cgi/tech/1092524669/
21 ttp://pc5.2ch.net/test/read.cgi/tech/1090422324/
20 ttp://pc5.2ch.net/test/read.cgi/tech/1088140233/
19 ttp://pc5.2ch.net/test/read.cgi/tech/1084697545/
18 ttp://pc5.2ch.net/test/read.cgi/tech/1081702990/
17 ttp://pc5.2ch.net/test/read.cgi/tech/1077470361/
16 ttp://pc2.2ch.net/test/read.cgi/tech/1073830065/
15 ttp://pc2.2ch.net/test/read.cgi/tech/1069339866/
14 ttp://pc5.2ch.net/tech/kako/1065/10653/1065328397.html
13 ttp://pc5.2ch.net/tech/kako/1059/10595/1059549320.html
12 ttp://pc5.2ch.net/tech/kako/1056/10560/1056033645.html
11 ttp://pc5.2ch.net/tech/kako/1052/10526/1052651750.html
10 ttp://pc5.2ch.net/tech/kako/1047/10478/1047819779.html
9 ttp://pc5.2ch.net/tech/kako/1044/10449/1044929160.html
8 ttp://pc5.2ch.net/tech/kako/1040/10409/1040964626.html
7 ttp://pc3.2ch.net/tech/kako/1036/10366/1036654893.html
6 ttp://pc3.2ch.net/tech/kako/1032/10325/1032548635.html
5 ttp://pc3.2ch.net/tech/kako/1028/10285/1028580373.html
4 ttp://pc3.2ch.net/tech/kako/1023/10233/1023361418.html
3 ttp://pc.2ch.net/tech/kako/1017/10170/1017072275.html
2 ttp://pc.2ch.net/tech/kako/1006/10067/1006783012.html
1 ttp://pc.2ch.net/tech/kako/991/991576947.html
5デフォルトの名無しさん:2009/11/29(日) 16:17:44
SDK最新版
Microsoft Windows SDK for Windows 7 and .NET Framework 3.5 SP1 (ISO)
http://www.microsoft.com/downloads/details.aspx?familyid=71DEB800-C591-4F97-A900-BEA146E4FAE1&displaylang=en

●以下のサイトは間違いが多いのでこのスレでは超超超不評です●
http://www.geocities.jp/ky_webid/win32c/
6デフォルトの名無しさん:2009/11/29(日) 16:22:53
7デフォルトの名無しさん:2009/11/29(日) 16:39:13
   ┌─┐
   │●│
   └─┤
   _   ∩
  ( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘      おっぱい!おっぱい!
8デフォルトの名無しさん:2009/11/29(日) 16:42:27
おまえらもう喧嘩するなよ
Windowsプログラマが日本で一番性格が悪いと言われるぞ
9デフォルトの名無しさん:2009/11/29(日) 16:45:44
犬糞コミュニティの閉鎖性以上に性格悪いのなんて無いから大丈夫
10デフォルトの名無しさん:2009/11/29(日) 16:52:29
BSDは?
11デフォルトの名無しさん:2009/11/29(日) 17:11:40
BSE?
12デフォルトの名無しさん:2009/11/29(日) 17:18:09
そんなことすら分からない頭の悪さはどうしようもないな。
13デフォルトの名無しさん:2009/11/29(日) 17:19:29
どれだけ阿呆なんだ?
どれだけ頭が悪ければ気が済むんだろう?
何も知らないお馬鹿さん。
無知だったのが理解できて良かったね。
これだけ論破されれば少しは反省できたろう。
14デフォルトの名無しさん:2009/11/29(日) 17:21:15
          ____
        /      \
       /  ─    ─\
     /    ⌒  ⌒  \
     |       ,ノ(、_, )ヽ    |
      \      トェェェイ   / 
       /   _ ヽニソ,  く
   三. i!   ゙ヽ、 Y"  r‐!、 ヽ.
    三 ヽ. 、 ''´⌒ゝ-‐'" _ィ》 Y!
       \_|!_二|一"f ,  !゙\  三
         〈, l|゙》-i|┴ーi´ / イ ´ i! 三
      ♪   ゙ー-ニ二__,/  / / 三       ♪
               /゙ У   / /  三
            //,/-‐、  /
            i! _{!   j!'〈   ♪
          / ,,.ノ \'' ヽ \
            〈 ーぐ     \   ヽ
          ゙ー″      〉ー- 〉
                   〈___ノ
15デフォルトの名無しさん:2009/11/30(月) 18:56:13
ほす
16デフォルトの名無しさん:2009/11/30(月) 20:02:47
サウンドボードを使って8bitサウンドを鳴らす(サンプリング再生やwaveファイル再生じゃない)にはどうすればいいんでしょうか?
プログラミング方法を教えていただけないでしょうか。
17デフォルトの名無しさん:2009/11/30(月) 20:07:37
HBRUSH burasi;
という変数を作ったら「萎えるからこういう変数名はやめてくれ」と言われた
18デフォルトの名無しさん:2009/11/30(月) 20:11:52
>>16
waveout
19デフォルトの名無しさん:2009/11/30(月) 20:15:47
DirectSoundで勘弁してやれよw
20デフォルトの名無しさん:2009/11/30(月) 20:26:11
8bitサウンドというのが8bitPCMじゃなくてFM音源やPSGのことならそんなものはない、が正解だろ。
どっかから音源エミュレータ拾ってくるとか。
21デフォルトの名無しさん:2009/11/30(月) 20:26:23
DirectSoundはWin32APIじゃないからなぁ
22デフォルトの名無しさん:2009/11/30(月) 20:27:15
>>20
>8bitPCMじゃなくてFM音源やPSGのことなら

自分でエミュレータを書きたいって話では?
23デフォルトの名無しさん:2009/11/30(月) 22:45:00
vista32bit、VS2008のwin32プロジェクトで作成したプログラムが
ネットブック(XP-home sp3) で動きませんでした。

ところが、こっちにもVS2008をインストールしただけで動作しました。
win32プロジェクトで作成したプログラムは、
特別なランタイムなどを必要としないと思っていましたが、
私は何か勘違いをしているのでしょうか?orz

ゲームのコンフィグ系のプログラムなので、わりと焦っていますorz
24デフォルトの名無しさん:2009/11/30(月) 22:51:46
VC2008 のランタイムが必要。MS のサイトからダウンロードできるよ。
25デフォルトの名無しさん:2009/11/30(月) 23:42:33
>>23
おおかたC/C++ランタイムをDLLにしてたんだろ。
そっから先はAPIじゃなくてコンパイラの問題なので該当スレに
26デフォルトの名無しさん:2009/12/01(火) 01:45:18
> ゲームのコンフィグ系のプログラムなので、わりと焦っていますorz
意味が分からない
27デフォルトの名無しさん:2009/12/01(火) 01:49:04
何も知らないお馬鹿さん。
28デフォルトの名無しさん:2009/12/01(火) 01:56:42
そんなことすら分からない頭の悪さはどうしようもないな。
29デフォルトの名無しさん:2009/12/01(火) 02:01:19
コマンドの出力を英語で取りたいのでCreateProcessでアプリを起動する時に
一時的にコードページを英語へ変更する方法を探しています
システムのロケールを変更してしまうと途中で落ちたようなときに元に戻らないので
起動するプロセスのみコードページを変更する方法ってありますか?
30デフォルトの名無しさん:2009/12/01(火) 03:53:48
LoadStringで失敗したときバッファにNUL文字がセットされるのは保証されてますか?
つまりこういうプログラムでコンソールに 0 と出力されるのが保証されているか?ということです。

wchar_t str[16];
memset(str,0xcc,sizeof(str));
LoadStringW((HINSTANCE)0xdeadbeef,0x12345678,str,_countof(str));//わざと失敗させる
cout<<wcslen(str);
31デフォルトの名無しさん:2009/12/01(火) 07:08:45
>>26
ひとつひとつの単語の意味は判るが
どうしてそれが焦りになるのかがわからん
32デフォルトの名無しさん:2009/12/01(火) 07:11:56
>>30
memsetせずに呼んでみれば?
33デフォルトの名無しさん:2009/12/01(火) 07:22:30
Return Value

If the function succeeds, the return value is the number of TCHARs copied into the buffer,
not including the terminating NULL character, or zero if the string resource does not exist.

とは書いてあるな。実際に 0 が返ってくるのか知らんけど。
34デフォルトの名無しさん:2009/12/01(火) 07:24:01
あ。これバッファじゃないじゃん。ごめんごめん。
35デフォルトの名無しさん:2009/12/01(火) 08:30:44
LPCWSTR _S(UINT nID);
実行ファイルのStringTableリソースに埋まってるUnicode文字列のアドレスをダイレクトに得る。
見つからなければ空文字列を返す。
例: MessageBoxW(hwnd, _S(IDS_HELP), _S(IDS_TITLE), MB_OK);

という関数を作ればいい。
36デフォルトの名無しさん:2009/12/02(水) 12:30:24
ディレクトリ操作で、ハードリンクがあると無限ループしたりしますか?
ループしていたり、リンクの部分を除いたり出来ますか
37デフォルトの名無しさん:2009/12/02(水) 13:56:13
FindFirstFile()からのツリー辿りならよくやるが全然意識してないで使ってるわ
38デフォルトの名無しさん:2009/12/02(水) 20:05:20
FILE_ATTRIBUTE_REPARSE_POINTで蹴るとか、
フルパス長や再帰レベルに制限を付けておくとか、そんな感じ?
39デフォルトの名無しさん:2009/12/02(水) 22:35:06
windows apiを使用して、linuxの命令が動くヘッダ作成する人いますか?
wikiにして、できたやつを誰でもうpしていく形式で。
40デフォルトの名無しさん:2009/12/02(水) 22:40:23
>>39
1行目と2行目の繋がりが見えないけど、
GCCとBinutilsをクロスコンパイル用にビルドして、
Windows上でLinuxで動く実行ファイルをコンパイルする環境を作ることはできる。
まあスレ違い。
41デフォルトの名無しさん:2009/12/02(水) 22:49:51
最終的にcygwinと同じものが出来上がるんじゃね
42デフォルトの名無しさん:2009/12/02(水) 22:59:26
ネイティブで、linuxソースがビルド可能にするんです。
windows apiが標準 = linux, unixから外れているのでそれを保管するんです。
43デフォルトの名無しさん:2009/12/02(水) 23:00:32
まあスレ違い。
44デフォルトの名無しさん:2009/12/02(水) 23:55:08
>>42
つSubsystem for UNIX-based Applications (旧Services for UNIX)
4542:2009/12/03(木) 00:26:44
さっそく作ってみたよ うpしていってね

http://namama.net84.net/?dirent.h

>>44
それでできるんですか。wikiは無意味だったんですか
46デフォルトの名無しさん:2009/12/03(木) 06:37:11
SUA はVista 以降標準装備だし、無駄な努力だな。
47デフォルトの名無しさん:2009/12/03(木) 08:38:25
携帯から失礼します。
質問させて頂きます。
たまにサンプルプログラムを見るとAPIの頭に::が付いていることがあります。
有る無しではどう違うんでしょうか?

(例)
MessageBox(...);
::MessageBox(...);

ご回答宜しくお願いします。
48デフォルトの名無しさん:2009/12/03(木) 08:44:45
それはAPIの質問ではなく、言語仕様の話。
スレ違い。
49デフォルトの名無しさん:2009/12/03(木) 09:40:48
C++ でいうところのクラスのメンバ関数なんじゃないかな。
よくわかんないけど。
50デフォルトの名無しさん:2009/12/03(木) 09:57:48
わかってたらスレ違いだとわかるから質問しらしないだろw
例えば
::MessageBoxはどのクラスにも属さない関数であるところの
MessageBoxを表し、クラスメソッドと区別する為に
使われたりする。(無名クラスに所属しているという説もあるが)
51デフォルトの名無しさん:2009/12/03(木) 17:41:51
>>47
インテリセンスを効かせる為に::を付けてるだけと、どこかのスレで見たことある気がする
完全にうろ覚えだが・・・
52デフォルトの名無しさん:2009/12/03(木) 17:44:22
どんなサンプルかにもよるだろう
MFCだとCWnd::MessageBox()と区別するのに必要なこともあるし。
53デフォルトの名無しさん:2009/12/03(木) 17:49:13
>インテリセンスを効かせる為

俺の書き込みの予感
54デフォルトの名無しさん:2009/12/04(金) 05:59:26
>インテリセンスを効かせる為

VC6時代が始まった10年以上前から常識ですが
5547:2009/12/04(金) 09:13:50
みなさん色々レスありがとうございます。
また、携帯から失礼します。

要はC++でいうところのthisポインタと一緒でthisが省略出来るように::を付けても付けなくても動作は一緒ってことですね。

class foo {
private:
int a;

public:
foo() { a = 0; }
~foo() { }

int func1() {
return this->a;
}

int func2() {
return a;
}
};
56デフォルトの名無しさん:2009/12/04(金) 10:00:01
ちげーよ馬鹿
つーかC++スレ行け
57デフォルトの名無しさん:2009/12/04(金) 10:02:36
DelphiでWindowsプログラミングする奴って少ないのは
どして?
58デフォルトの名無しさん:2009/12/04(金) 10:06:54
>>57
Delphiを使うメリットとデメリットを考察して、メリットが少ないと判
断する人が多いから。もしくはDelphiを知らないから候補にもならない。

59デフォルトの名無しさん:2009/12/04(金) 10:12:32
Delphiを知らない人や、使うメリットとデメリットを差し引きして
メリットが少ないと判断する人が多いのはどして?
>>58が答えてくれるんで期待
60デフォルトの名無しさん:2009/12/04(金) 10:35:36
Windowsプログラマに限った場合
Delphiを知らない人はC++も実はたいして知らない人だ
しその逆も言えるのかもな
61デフォルトの名無しさん:2009/12/04(金) 10:53:30
新規にDelphiやるのは高いし参考書も少ないし
ってのがあるんじゃないのかな。


ところで、ウィンドウ関数内で使うオブジェクトはグローバス変数じゃなくて
やっぱりウィンドウ関数内で static な変数にするのがいいのかな。
その場合、プログラム終了したとき、メモリの解放忘れとか気にしなくていいんだよね?

やっぱり DeleteObject() やらないとだめなのかな。
62デフォルトの名無しさん:2009/12/04(金) 11:28:26
INITCOMMONCONTROLSEX

INIT COMMON CONTROL SEX
63デフォルトの名無しさん:2009/12/04(金) 12:49:09
>>55
携帯のテンキーで入力のだろうか・・・
64デフォルトの名無しさん:2009/12/04(金) 12:54:22
グローバス変数というものは存じ上げないのでアドバイスできません。
65デフォルトの名無しさん:2009/12/04(金) 13:11:17
バックアップツールを作りたいです。
ReadDirectoryChangesWで削除・更新を察知できるのですが
削除が判明した時点でファイルが無くなってしまいます。
消される前に、バックアップする方法ありますか。
66デフォルトの名無しさん:2009/12/04(金) 13:12:35
OSの全ての削除ルーチン、ファイル更新ルーチンを乗っ取って
削除の前にはバックアップとか出来ればいいのですが。
これは無理ですよね。
67デフォルトの名無しさん:2009/12/04(金) 13:14:52
ファイルが作成された時点でバックアップを取っておけばよろしい
68デフォルトの名無しさん:2009/12/04(金) 13:15:41
全てのファイルの過去データを、はじめにコピーしておけば解決しますが
場所食うのがいやなんです。
Em、秀丸のバックアップのように更新前だけ保存する方法無いですか。
69デフォルトの名無しさん:2009/12/04(金) 14:06:15
そんな明らかに危険そうなブツがAPIとして整備されるはず無いだろが
APIを何だと思ってるんだ?
70デフォルトの名無しさん:2009/12/04(金) 14:08:34
ない
71デフォルトの名無しさん:2009/12/04(金) 14:13:16
>>69
非公開APIの8割型以上は、作成者内輪以外の呼び出しは危険
コンテキスト依存なんで。
公開APIも仕様が100%公開されているわけでもないので
100%の安全性の保証は無いものと思うべし。
断片情報だけが公開されたものを公開APIというのも何だか
な〜だが。APIを何だと思ってた?
72デフォルトの名無しさん:2009/12/04(金) 14:13:21
ゲームなんかが一時的に作成するファイルを
自動で別フォルダにコピーしてゴニョゴニョしたい

とかそういう理由か?
73デフォルトの名無しさん:2009/12/04(金) 14:17:03
>断片情報だけが公開されたものを公開APIというのも何だか

オープンソースにしない限り、"公開"APIといえないとでも思ってるのか
どれだけ阿呆なんだ?
74デフォルトの名無しさん:2009/12/04(金) 14:21:21
非公開 API は使用しない
公開 API は公開された情報の範囲内で使用する

こんなの 常 識 です
75デフォルトの名無しさん:2009/12/04(金) 15:34:03
リストコントロールについて質問です。
レポート形式で使用しています。(VC2005)

(1)
リスト行数100で1ページ表示5行で
現在10ページ目の1番目の項目が選択されています。
この状態で一度全ての項目を削除し再入力して
新たに10ページ目の1番目の項目を選択させたいので
SetItemStateなどで選びなおしました。
しかし、10ページ目の1番目が選択されているようですが
表示は1ページ目になっています。
これを10ページ目にしたくてSetScrollPosをしましたが
うまくいかず、表示が変になります
どうやったら10ページ目の表示にできるのでしょうか?

(2)
拡張スタイルにLVS_EX_GRIDLINESを使用していますが
スクロールしたときにグリッドラインの残像が残ってしまいます
この残像を綺麗にけすのはどうしたらいいのでしょうか?
76デフォルトの名無しさん:2009/12/04(金) 15:52:13
公開された情報とて拘束性は全くなく例えば
CreateProcessの戻り値がOK(成功)でも
実際のプロセスの起動が30分後になるよう
なケースが無いとも言い切れない。
77デフォルトの名無しさん:2009/12/04(金) 18:27:18
エディットコントロールにSetWindowTextで文字を入力すると
スクロールが初期位置まで戻ってしまうんですが、
この時どういったメッセージがポストされているのでしょうか?

WM_SETTEXT
(何か)
WM_PAINT
という順で処理されていると思うのですが・・・
7847:2009/12/04(金) 19:27:18
>>56
すいません、違うんですか
>>63
テンキーです、分け合ってインターネット繋がってないので携帯オンリーで2chやってます。

自分の無知、勉強不足でスレを汚してしまいすいませんでした。
もう一度、レスを参考にしっかり調べ直してから出直してきます。
レス下さった方々ありがとうございました。
79デフォルトの名無しさん:2009/12/04(金) 20:08:46
>>77
WM_SETTEXTの内部処理の途中で戻っているだけだろ。
別のメッセージがポストされたとかいう話じゃない。
一旦中身をクリアしていると考えれば、初期位置に戻っても不思議じゃない。
80デフォルトの名無しさん:2009/12/04(金) 22:40:39
>>79
どうも。
解決しました。
81デフォルトの名無しさん:2009/12/04(金) 22:47:54
>CreateProcessの戻り値がOK(成功)でも
>実際のプロセスの起動が30分後になるよう

CreateProcessから戻ってきた時点でまだ起動してないと思ってるのか。
どれだけ頭が悪ければ気が済むんだろう?
82デフォルトの名無しさん:2009/12/04(金) 23:14:58
数個コードが実行されて30分止まって再開されても
立派なスケジューリングでありプロセスは起動されてる
ことになるな
83デフォルトの名無しさん:2009/12/04(金) 23:29:00
PROCESS_INFORMATIONにプロセスのハンドルが得られている
= OSのプロセス生成処理は完了している

「実際のプロセスの起動」って何だよ
画面にウィンドウ等が出るまで実際にプロセスは起動してないとでも言いたいのか
84デフォルトの名無しさん:2009/12/04(金) 23:42:35
>>78
テンキーでソースコードって打てるものなのか?
85デフォルトの名無しさん:2009/12/05(土) 00:10:41
>>83
プロセスハンドルが作られて実行が確約さてれいても、
そのプロセスのコードが本当にいつ実行されるかは「勝手でしょ?」な話。これはWindowsに限らずUnix でも同じようなこと
が言えるけど...
86デフォルトの名無しさん:2009/12/05(土) 00:23:12
>プロセスハンドルが作られて実行が確約さてれいても、
この時点がプロセスの起動だろ
87デフォルトの名無しさん:2009/12/05(土) 00:30:18
ウィルスチェッカーとかがOSレベルで正式サポートに
なって、実行直前スクリーニングとかが行われると
したらシステムがビジーな場合やデータダウンロード
が必要な場合とかには、実プロセス実行まで相当待たされる
ってことは現実問題ありそう。
88デフォルトの名無しさん:2009/12/05(土) 00:34:33
CreateProcessから返ってきたらプロセスは"起動"している
ただしいつ"実行"されるかは未知数

つまり>>76がバカ
89デフォルトの名無しさん:2009/12/05(土) 00:47:45
ExecuteProcessではなくCreateProcessであって
実行まで担保しないのはAPIの名前から読んで字の如く
90デフォルトの名無しさん:2009/12/05(土) 00:54:24
CreateHogeってのは"Hogeカーネルオブジェクトを生成する"って意味だぞ?

CreateEvent → Eventオブジェクトを生成する
CreateFile → Fileオブジェクトを生成する
CreateProcess → Processオブジェクトを生成する

これを理解して無いとCreateProcessで実行云々とか
既存ファイルをオープンする場合でも"Create"Fileなんて変だ
などと頓珍漢な発言をする。
9123:2009/12/05(土) 02:46:33
>>25
その通りでした☆

また、最後の1行は意味不明すぎると自分でも思います。
失礼しました。はずかしい><
92デフォルトの名無しさん:2009/12/05(土) 07:19:08
WDKのコンパイラでビルドすればいい。
93デフォルトの名無しさん:2009/12/05(土) 08:33:51
ハンドルは数値にすぎず、ユーザー空間のメモリアドレス
と直接の対応はない。あくまでもDLL内部やドライバなど
で管理する情報のID。
これを理解して無いとCreateProcessでファイル作成云々とか
既存ファイルをオープンする場合でも"Create"Processなんて変だ
などと頓珍漢な発言をする。
94デフォルトの名無しさん:2009/12/05(土) 09:30:36
失敗したときLastErrorにセットされるエラーコードの一覧ぐらい書いとけって思う。
拡張エラー情報を取得するにはGetLastErrorを使え、みたいな説明だけでは不十分。
95デフォルトの名無しさん:2009/12/05(土) 09:33:10
決まってないし、決めるつもりもないし、変わっていく筈
バージョン依存。しかもマイナーバージョンレベルでコロコロ
変わる筈。だから書かないし書けない。そういうところがあるだろな
96デフォルトの名無しさん:2009/12/05(土) 09:40:35
同じようなエラーコードがあるのがさっぱり分からん。
例えば
ERROR_NOT_ENOUGH_MEMORY
ERROR_OUTOFMEMORY
メモリ不足のときにどっちが設定されるんだ?
97デフォルトの名無しさん:2009/12/05(土) 10:01:22
関数型がvoidで失敗するとSEHを投げるという糞仕様のAPIもあるけどな
98デフォルトの名無しさん:2009/12/05(土) 13:00:11
BOOLを返すといいながら3種振り分けが必要な糞仕様のAPIもあったな
99デフォルトの名無しさん:2009/12/05(土) 13:05:24
>>98
必要ないよ
お前が分かってないだけ
100デフォルトの名無しさん:2009/12/05(土) 13:12:59
ド素人は黙ってた方が身のためですよ?
101デフォルトの名無しさん:2009/12/05(土) 13:18:07
馬鹿がGetMessageについて語ると無知を晒すだけだからやめとけ。
102デフォルトの名無しさん:2009/12/05(土) 18:31:34
> BOOLを返す

return BOOL;

???
103デフォルトの名無しさん:2009/12/05(土) 18:44:14
自分のプロセスのヒープを、他のプロセスからReadProcessMemory()されるのを検知するか拒否する方法はありますか?
104デフォルトの名無しさん:2009/12/05(土) 18:46:43
ヒープは氏らね
VirtualAllocで取った奴ならVirtualProtect使えるが
105デフォルトの名無しさん:2009/12/05(土) 18:50:21
拒否なら名前付mutexで同期するだけでいいだろうけど検知はできるのかすら知らん
106デフォルトの名無しさん:2009/12/05(土) 19:00:43
つ nPro
107デフォルトの名無しさん:2009/12/06(日) 04:04:34
>>104-105
ありがとうございます
詳しく調べてきます
アトミック操作で隠すのは気づきませんでした
>>106
秘密鍵をできるだけ見られたくないので、nProもどきをカーネルドライバ等作らずできないかと思って聞きに来ました
108デフォルトの名無しさん:2009/12/06(日) 10:37:56
>>107
生のデータがメモリ中に存在してる限りそんな物は不可能だし無意味
仮想PC上でソフトを動かしてホストOSからメモリをダンプするとか方法は幾らでもある
109デフォルトの名無しさん:2009/12/06(日) 12:01:12
移動型ガベージコレクタみたいなものを使えばデータが頻繁にあちこち移動して読まれにくくなるかも (たぶん)
110デフォルトの名無しさん:2009/12/06(日) 14:04:11
自分のウィンドウがWM_MOUSELEAVEを受け取りつつも自分の一つ裏側にあるウィンドウに
マウス系統のメッセージが行くようにするにはどうすればいいでしょうか?

やりたいのはデスクトップの最前面に常にキャラクターを表示し、マウスが重なってるときだけ半透明にしたいんです。
それでも、マウス系メッセージは裏のウィンドウに飛ばして普通に操作できるようにしたい。

今のところWS_EX_TRANSPARENTで試しましたが、一度これを設定してしまうと
マウスがウィンドウから退いた時にそのイベントを受け取れなくて困っています・・・。
111デフォルトの名無しさん:2009/12/06(日) 14:17:22
昔似たような動作をする時計を作ったときはWS_EX_LAYERED|WS_EX_TRANSPARENTでマウス透過。
透明度の制御はタイマでマウスカーソルの現在位置を取得する方法でいったな。
時計だったからどのみち一定時間ごとに書き換える必要があったし。

まあ、一切マウスでの操作ができなくていいならそんな感じでいいんじゃね
112デフォルトの名無しさん:2009/12/06(日) 14:25:01
>>111なるほど、ちょうどこちらも描画しまくるタイプだったので、それで行けそうです。ありがとうございました。
(フックとか調べちゃったけどなんか上手くできる気がしてなかったので助かりました^^;)
113デフォルトの名無しさん:2009/12/06(日) 23:08:51
CreateWineoExまじめんどくせえええええええええ
お前らいつもこのめんどくささどう解消してる?
114デフォルトの名無しさん:2009/12/06(日) 23:14:36
>>113
そんな関数使ったことないから分かりません。
115113:2009/12/06(日) 23:20:49
>>114
申し訳ありません
CreateWindowExです。
116デフォルトの名無しさん:2009/12/07(月) 00:39:45
適当なGUIフレームワーク使っとけ
117デフォルトの名無しさん:2009/12/07(月) 00:50:20
とりあえず CreateWindowExIndirect っつーありそうで無かった関数は自作してみた
118デフォルトの名無しさん:2009/12/07(月) 00:53:49
考えてみたら、RegisterClassExはWNDCLASSEX構造体にセットするのに、
CreateWindowExは引数にセットって、なんか統一感無くて気持ち悪くないか?(*;;^^;;;;*
119デフォルトの名無しさん:2009/12/07(月) 06:56:46
どれだけ頭が悪ければ気が済むんだろう?
120デフォルトの名無しさん:2009/12/07(月) 10:40:22
Win32API に気持ち良さなんて期待しても無駄なので、あきらめてください
121デフォルトの名無しさん:2009/12/07(月) 11:10:10
昔、某歌舞伎町に、覗き部屋という風俗があって、
窓から女の子の裸を覗くことが出来て、下には小さな
窓が。穴から万札を投げ込んから窓にティンポ
を入れると気持ちイイことしてくれるって奴
これと似たところあるって?
決して無いよ。
大抵女の子じゃなくておばあさんで、ティンポも
マイクロソフト状態を保ったままで速攻逃げ出すのが
常だった
122デフォルトの名無しさん:2009/12/07(月) 15:37:33
今時Win32APIをベタ書きする人っているんだ・・・
123デフォルトの名無しさん:2009/12/07(月) 15:40:11
>>122
今時って言うのが意味がワカラン、何が今時なの?
124デフォルトの名無しさん:2009/12/07(月) 15:43:05
暮れも押し詰まったこの時期にってことじゃないかな
125デフォルトの名無しさん:2009/12/07(月) 16:31:52
.NET時代って意味だろjk
126デフォルトの名無しさん:2009/12/07(月) 16:36:55
Vista以降で新設された最近のAPIの情報って殆ど無いねぇ
どこ見てもWin98の頃の情報ばっか
古いわ間違ってるわ全然役に立たないのに検索で上位に来てウザイ
127デフォルトの名無しさん:2009/12/07(月) 16:52:34
Googleの検索結果って日付準とかできなかったっけ
128デフォルトの名無しさん:2009/12/07(月) 17:06:48
日付が新しいからといって新しい情報とは限らないだろ
129デフォルトの名無しさん:2009/12/07(月) 17:21:45
.NETはいちいちランタイムインストールを強要させるのが嫌だ
130デフォルトの名無しさん:2009/12/07(月) 17:32:21
.NET2.0相当で作っとけばVista以降は何もしなくても動くだろ
VC++だってダイナミックリンクにすればランタイムに依存するのは一緒
131デフォルトの名無しさん:2009/12/07(月) 17:53:15
XPユーザーもまだ多いよ
132デフォルトの名無しさん:2009/12/07(月) 17:56:25
そうですか死んどけ
133デフォルトの名無しさん:2009/12/07(月) 18:00:07
XPなんて企業ユースとネットブックで残ってるだけだろ
134デフォルトの名無しさん:2009/12/07(月) 18:21:46
それは無知ってやつだぜ
個人ゆーざーでXPのやつなんていくらでもいる
135デフォルトの名無しさん:2009/12/07(月) 18:22:12
個人とかさらにどうでも良いよ
136デフォルトの名無しさん:2009/12/07(月) 18:46:31
そんなお前がどうでもいいよ
137デフォルトの名無しさん:2009/12/07(月) 19:06:10
お前だよお前
138:2009/12/07(月) 19:16:43
え?俺?
139デフォルトの名無しさん:2009/12/07(月) 20:16:55
俺だよ俺!
140デフォルトの名無しさん:2009/12/07(月) 20:45:38
.NETじゃランタイムの追加インストール不要!Windows95〜7まで全てで動作!とかのカコイイアプリが作れないからね
141デフォルトの名無しさん:2009/12/07(月) 20:48:37
Win32sも忘れずになw
142113:2009/12/07(月) 21:47:31
おいおいおいおいおいおいおいVisual Studio2010 3月22日かよ
MSDN会員期限2月までなんだけど死んで良いかな・・
143デフォルトの名無しさん:2009/12/07(月) 21:52:41
>>140
正直どうでもよくなってきた。最近。
144デフォルトの名無しさん:2009/12/07(月) 22:09:33
一月くらい余裕あったろ。
145デフォルトの名無しさん:2009/12/07(月) 22:58:37
>ランタイムの追加インストール不要!Windows95〜7まで全てで動作!
Win32でそういうソフト作ってるがAPIの遅延ロードの山で大変だよ・・・
146デフォルトの名無しさん:2009/12/07(月) 23:40:32
#define WINVER 0x400
#define _WIN32_WINNT 0
#define _WIN32_IE 0x200

こんな制限だと古臭いソフトしか作れんだろ
147デフォルトの名無しさん:2009/12/08(火) 01:10:33
Win95くらいで自慢すんな。Win32sまでサポートしろ。
148デフォルトの名無しさん:2009/12/08(火) 02:12:04
STRICTを定義するとハンドルの代入ミスなどが分かると知りましたが
コンパイラ側でこの機能は実装されてはいないのでしょうか?
STRICTを定義する手法については今知ったので、今まで作ったプログラムに
そういったところで危ない記述がされているのではないかと不安です。
149デフォルトの名無しさん:2009/12/08(火) 07:35:40
windef.hを見れば一目瞭然だけど、
NO_STRICTが宣言されていない限り勝手にSTRICTは定義される。
STRICTがどうのこうのというのはWin16時代の話じゃなかったかなあ。
150デフォルトの名無しさん:2009/12/08(火) 08:06:04
VC6だろ
151デフォルトの名無しさん:2009/12/08(火) 12:14:25
仕事でWinMain使ってゴリゴリやる案件ってある?
152デフォルトの名無しさん:2009/12/08(火) 13:12:57
ゲームやパッケージソフトの開発
153デフォルトの名無しさん:2009/12/08(火) 14:21:32
マルチスレッド化して超高速演算が求められるシミュレートなど
154デフォルトの名無しさん:2009/12/08(火) 14:31:18
それに求められるのはmainであってWinMainじゃないような気がするなぁ
155デフォルトの名無しさん:2009/12/08(火) 14:46:05
意外とあるんじゃないか。潜在的には。きびきびとした
動作のアプリ開発で本当に完成度を高めたいというので
あればは未だVC6が最高と。(.NETは難しいので
発注者がリスクヘッジの為に必ずと言って良いほど
Webアプリ版も作り、そちらのほうが開発の進捗が
解りやすいので、結局大抵ポシャる)
ただVC6はただでさえ難しいC++のWindows版を
扱うわけで新参者が入れる世界じゃなくなってるし
新参者も激減してる。
156デフォルトの名無しさん:2009/12/08(火) 15:04:48
VC6よりVC2008やintel c++の動作上だろ
最新cpuに対応しつつ、過去のcpu用コードも埋め込める。
過去用部分ですら、vc6を上回るだろ。
157デフォルトの名無しさん:2009/12/08(火) 15:06:55
> 新参者も激減してる

いらんツールから撤退してるだけ。vc6で可能なことはvc2008で出来る
わざわざいらんツール使うのが変
158デフォルトの名無しさん:2009/12/08(火) 15:11:54
もうVC6って11年前なんだな
なんか感慨深い
159デフォルトの名無しさん:2009/12/08(火) 15:25:48
WinMainから始まるアプリはまだある程度あると思うが
apiをじかに呼び出しまくる案件はまずないと思う
基本的に仕事に求められるのがスピードと安定性だから
実績のあるベンダーのライブラリを使うことが多い
案件の応募条件にライブラリの実務経験が問われるくらいだから
大量のapiを覚えるよりライブラリの使い方を覚えたほうがいいのが実際のところ
Advenced Windowsで覚えたapiもフリーソフトを作ったときには役に立ったが
仕事で役に立ったと実感したことはない
160デフォルトの名無しさん:2009/12/08(火) 15:29:23
GUIやるのにHSPは簡単で優れていると思う。
これで開発してコードをC++にコンバート出来ればいいと思う。
161デフォルトの名無しさん:2009/12/08(火) 15:31:40
HSPとかお呼びじゃ無いから学校でノベルゲー作ってろ
162デフォルトの名無しさん:2009/12/08(火) 15:36:20
HSP使ってないやつは駄目だな。
これは開発効率良いよ。
コンパイルがC++コンパイラの50倍は速いな。
あと標準でいろいろincludeファイルが付いてて
中身もC++より記述が簡単で手を加えることも出来る。
163デフォルトの名無しさん:2009/12/08(火) 15:43:54
軽さ追求のテキストエディタとかはまだ API でゴリゴリなんじゃないかな。
164デフォルトの名無しさん:2009/12/08(火) 15:45:19
たとえばメニュー付きウィンドウがこれだけのコードでかける。
サンプル 拡張子はexe
http://kineko.dyndns.org/~touhou/up/source/up3156.jpg


#include "mod_menu.as"
oncmd gosub *OnCommand, WM_COMMAND ; メッセージ割り込み
; サブメニュー作成
newmenu hfilemenu,1
addmenu hfilemenu, "開く(&O)", 1
addmenu hfilemenu, "終了(&Q)", 2
; トップメニュー作成
newmenu hmenu,0
addmenu hmenu, "ファイル(&F)", hfilemenu, 0x10
applymenu hmenu
stop

; メッセージの処理
*OnCommand
cmd=wparam & 0xFFFF
if cmd=1
dialog "メニューを選択しました。"
if cmd=2 {
end }
return
165デフォルトの名無しさん:2009/12/08(火) 15:50:44
やっぱAPIでゴリる案件ってないんだね
せいぜいWin版ゲーム関係だろうなぁ
まあDirectXも絡むんだろうけど

いやあ、仕事でそういうの無くって温くてつまらないんだよね…。
一度でいいから身震いするぐらいコアなwindowsプログラム組みたいな
趣味じゃなくて仕事でね
166デフォルトの名無しさん:2009/12/08(火) 15:51:38
その程度ならIDE使えばコーディングする必要性すらねーな
MessageBox(0,"aaaaa",0,0)だけ書ければOK
167デフォルトの名無しさん:2009/12/08(火) 15:56:17
スレチ
168デフォルトの名無しさん:2009/12/08(火) 16:03:34
APIで身震いするってのは少し変
内輪でも無い人間にはまともに相手できたものじゃない池沼さん
扱ってる位の感覚でよろ
169デフォルトの名無しさん:2009/12/08(火) 16:15:01
なんでHSP厨が紛れ込んでるんだろう
170デフォルトの名無しさん:2009/12/08(火) 16:17:23
虫の居所でも悪かったんじゃないか
171デフォルトの名無しさん:2009/12/08(火) 16:18:29
gosubてw
こんな馬鹿丸出しの言語よく使えるな
172デフォルトの名無しさん:2009/12/08(火) 16:24:42
ていうかHSPは馬鹿しか使えない言語だから。
173デフォルトの名無しさん:2009/12/08(火) 16:42:06
はいはいそろそろすれ違いでぷ
174デフォルトの名無しさん:2009/12/08(火) 18:40:38
GUIだけはC#使っています。スレ違いでごめんなさい。でも楽です。
で、メインの処理やWin32APIが必要なところをC++でDLLで作る、いいとこ取りです。
175デフォルトの名無しさん:2009/12/08(火) 20:34:16
.NETアプリは起動が遅いのとOffice2003の劣化コピーみたいなUIがイヤ
176デフォルトの名無しさん:2009/12/08(火) 20:39:21
HSPのGUIは速いよ
177デフォルトの名無しさん:2009/12/08(火) 21:16:04
しつけーんだよ
178デフォルトの名無しさん:2009/12/08(火) 21:54:15
.NETアプリの起動は遅いね…。
179デフォルトの名無しさん:2009/12/08(火) 21:55:27
そのうち早くなるって
180デフォルトの名無しさん:2009/12/08(火) 23:21:07
.NETは極力.NETで閉じさせたほうがいいと思われ
API混ぜるとロクなこと無いと
181デフォルトの名無しさん:2009/12/09(水) 00:01:07
シフト演算(主に論理右シフトとか論理左シフトとか)のAPIってありますか?
VB6にシフト演算の処理が無いみたいで
182デフォルトの名無しさん:2009/12/09(水) 00:05:54
んなもの作らんで、配列に用意しておけばいいだろ

Dim shr(65536) as integer,shl(65536) as integer
for i=1 to 65536
shr(i)=i ¥ 2
next
for i=1 to 65536
shl(i)=i*2
next
とか(文法適当だからね)
183181:2009/12/09(水) 00:12:15
つまりシフト演算のAPIは無いから自分で作れってことですね・・・わかりました。ありがとうございました。
184デフォルトの名無しさん:2009/12/09(水) 00:16:46
>>182
間違っとるぞw
185デフォルトの名無しさん:2009/12/09(水) 00:43:38
昔の名残で、RtlLargeIntegerShiftLeftとかある事はあるんだけどねえ。
WDKにしか載っていないような奴だし、そこでも既にObsolute扱い。
186デフォルトの名無しさん:2009/12/09(水) 00:55:09
Int64ShrlMod32
Int64ShllMod32
187デフォルトの名無しさん:2009/12/09(水) 10:10:32
VB6以外にゃ言語レベルで備わってるものをわざわざAPIとして用意する意味ないし無くて当然でしょ
加減乗除のAPIはありますか?と同レベル
188デフォルトの名無しさん:2009/12/09(水) 10:32:49
一部のAPIはC言語のマクロを含むのでC開発者向けに「ある」としても
それがVBで使えるとは限らない。APIという用語が拡大解釈されて久しい
189デフォルトの名無しさん:2009/12/09(水) 11:34:48
Imm関連の質問なのですがこちらでもよろしいでしょうか?
190デフォルトの名無しさん:2009/12/09(水) 11:36:14
どうでしょうね?
191デフォルトの名無しさん:2009/12/09(水) 13:44:30
メッセージとAPIだしいいんじゃね
192デフォルトの名無しさん:2009/12/09(水) 20:46:33
独自フォーマットのファイル(拡張子を仮に.xxxとします)の内容を表示する
ビューワアプリを作っています。

仕様としては、

A: 対象ファイルをアプリexeにD&Dする
B: .xxxファイルをビューワアプリに関連付けして、ダブルクリックする

AあるいはBの操作によって、ビューワアプリはWinMain関数のコマンドライン引数の
ファイルパスを見て、それをオープンし、内容を読み取り・表示する、という算段です。

Aに関しては動作するようにできましたが、
Bに関しては、うまく動作してくれません・・・
MessageBoxを使って、ファイルオープン直前に、ファイルパスがどのようになっているかを
表示させてみましたが、Aの時と同様、何ら問題がありません。

AのケースとBのケースとで、Win32apiレベルの違いは何かあるのでしょうか?
それをヒントに原因究明と対策を考えたいと思います。

よろしくお願いします。 m(_ _)m
193デフォルトの名無しさん:2009/12/09(水) 20:53:57
パスに空白が含まれてるとかそんなの?

hoge.exe "%1" って登録してある?
194192:2009/12/09(水) 20:58:00
>>193
いえ、試したパスには空白は含まれていませんでした。

>hoge.exe "%1" って登録してある?
すみません、"%1"とはどういうことでしょうか??
登録というのは・・・??
分からないことばかりですみません。
195デフォルトの名無しさん:2009/12/09(水) 21:21:29
じゃ、違うね。

関連づけすると、レジストリにそういう風に登録されるのよ。
たまに、ダブルクォートが付かない形で登録されてて、空白を含むパスで動かないと。

うまく動作しない、ってことだけど、その辺もう少し具体的に説明したほうがいいよ。
196192:2009/12/09(水) 21:37:15
>>195
そういうことでしたか。
ありがとうございます。

うまく動作しないということの詳細ですが、
表示はDirectXのAPIを使って行っています。
その表示が初っ端から出てこず、Windowのグレーの背景のままで、
アプリが固まって操作を受け付けなくなります。
こうなると、タスクバーで右クリック->「閉じる」とするか、タスクマネージャで終了を指示するなどして、
強制終了させるしかなくなります。

ファイルの読み込みはwhile(1)でまわして行い、区切りのトークンが得られたらbreakで
抜けるようにしています。
やはりファイルの読み込みがうまくいかず、そのwhile(1)から抜けられないのでは・・・

明日、会社でもうちょっと調べてみます。
VC++上でデバッグできないので、しんどいですが・・・ orz
197デフォルトの名無しさん:2009/12/09(水) 21:47:05
うーん。IDE 上のデバッグで引数与えても起きないんだよね?

一緒のはずなんだけどな。
198デフォルトの名無しさん:2009/12/09(水) 21:50:00
こういう時は伝統のログファイルだな。
うっかりバッファリングで吐き出し損ねないように注意。
199デフォルトの名無しさん:2009/12/09(水) 22:05:16
バグは、夜遅くまで悩んでても時間の無駄
明日の朝になればあっさり解決!

と言うパターンになりそうだな
200192:2009/12/09(水) 22:14:37
>>197
はい、IDE上のオプションで引数を与えてシミュレーションして確認しましたし、
ファイルをアプリにD&Dしての起動ではうまくいっています。
関連付けでファイルダブルクリックでもいっしょですよね・・・
(引数も同じものがきているのを確認していますし)

>>198
なるほど。
ログファイル出力も検討します。

>>199
そうなることを期待しますw
201デフォルトの名無しさん:2009/12/09(水) 22:16:11
引数受け取る部分のソース上げれば速いがな・。
コードの問題か、他所かは判明する。
202デフォルトの名無しさん:2009/12/09(水) 22:17:45
自分もそういう経験があった気がする。
ロング、ショートとか。括弧の有無とか。
DDのときだけ違う形式とかあるな。
203デフォルトの名無しさん:2009/12/09(水) 22:23:47
自分はおさげが好きです。
204デフォルトの名無しさん:2009/12/09(水) 22:26:03
たぶん絶対パスと、カレントにないのに勝手にカレントとして
送ってるとかだろ。
205デフォルトの名無しさん:2009/12/09(水) 22:27:34
>WinMain関数のコマンドライン引数の
これがバグの元

コマンドライン引数は__argcと__targvで解釈しないとうまくいかないよ
206デフォルトの名無しさん:2009/12/09(水) 22:29:28
引数名は関係ないだろ。 cとvでも良いし。 観衆でしょ。
207デフォルトの名無しさん:2009/12/09(水) 22:57:23
__argcと__targvはCRTのグローバル変数だろ。

そんなことすら分からない頭の悪さはどうしようもないな。
208デフォルトの名無しさん:2009/12/09(水) 22:59:17
そうなんか
209デフォルトの名無しさん:2009/12/09(水) 23:00:23
SDK プログラミングで ActiveX コントロールを使うにはどうすればいいですか?
210デフォルトの名無しさん:2009/12/09(水) 23:01:59
素直にATL使っとけ
211デフォルトの名無しさん:2009/12/09(水) 23:02:45
COMの仕様に沿って利用する
212デフォルトの名無しさん:2009/12/09(水) 23:50:59
サービスのプログラムからSH系のAPIって呼んでも大丈夫でしょうか?
シェルっていうくらいだからなんかExplorerとかに依存してるか、ないのかなとか?
サービスはExplorerより先に起動しますし。
213デフォルトの名無しさん:2009/12/09(水) 23:54:02
>>192
関連付けの時にDDEを使うにチェックが入ってるとかは?
関係ない?
214デフォルトの名無しさん:2009/12/10(木) 00:58:02
>>212
全然大丈夫
215デフォルトの名無しさん:2009/12/10(木) 11:38:41
もしかしたらC++の質問かもしれないけど
Aというクラス内でウィンドウを作成し、他にクラスBがある
クラスBは、クラスAのインスタンスは知らないけれど
クラスA内で作成されたウィンドウのハンドルは知っている

以上の条件で、クラスBからクラスAのインスタンスを取得
する方法はないだろうか?
216デフォルトの名無しさん:2009/12/10(木) 11:44:52
無い
217デフォルトの名無しさん:2009/12/10(木) 11:48:01
ウインドウハンドルとインスタンスを関連づけるデータを別に持っておけばいい。
218デフォルトの名無しさん:2009/12/10(木) 11:53:06
SendMessage でやりとりすればできたりするかも
よくわかんないけど。
独自のメッセージって遅れるのかな
219デフォルトの名無しさん:2009/12/10(木) 12:51:35
SendMessageしてthisを返してもらう
220デフォルトの名無しさん:2009/12/10(木) 12:58:20
SetProp使えよ
221デフォルトの名無しさん:2009/12/10(木) 13:00:02
>独自のメッセージって遅れるのかな

この程度で無理に回答しなくていいよ。
222デフォルトの名無しさん:2009/12/10(木) 14:13:47
ATLはコントロールIDをキャストしてインスタンスが取れるようになってるな
なんて無茶苦茶な・・・
223デフォルトの名無しさん:2009/12/10(木) 14:58:40
>>192
コマンドライン引数文字列の文字セットで W と A の差に嵌っているとか?
224デフォルトの名無しさん:2009/12/10(木) 15:01:01
>>192
関連付けの仕方が間違ってるとか無い?
フォルダオプションとか開いて確認してみたの?
225デフォルトの名無しさん:2009/12/10(木) 15:08:07
>>205が答えだろ
WinMain関数第3引数を使うのが悪い
226デフォルトの名無しさん:2009/12/10(木) 15:12:08
GUIプログラムならDDE通信
227デフォルトの名無しさん:2009/12/10(木) 15:16:22
WinMain関数の引数って全部無くていいよなw
228デフォルトの名無しさん:2009/12/10(木) 15:26:02
VC6 のエントリーポイントそのものは 引数無しだしな
そこでがんばって WinMain の引数作って WinMain 呼び出ししてる (CRTEXE.c / mainCRTStartup)
229デフォルトの名無しさん:2009/12/10(木) 15:31:43
DDE通信って何だ?
230デフォルトの名無しさん:2009/12/10(木) 15:41:58
HINSTANCEは__ImageBaseから取得できるし
コマンドライン文字列は__argcと__targvで良いし
ShowWindowにはSW_SHOWDEFAULTで良いし
4つも引数あるのに全くもって無用の長物だよなw
231デフォルトの名無しさん:2009/12/10(木) 15:44:49
Microsoftは無駄が好きなんです
232デフォルトの名無しさん:2009/12/10(木) 15:47:17
>>229
ウィンドウメッセージを使った他アプリケーションとのデータ交換
233デフォルトの名無しさん:2009/12/10(木) 16:06:34
スクリーンキーボードのような動きをするウインドウを
作るのって簡単でしょうか?
234デフォルトの名無しさん:2009/12/10(木) 16:09:57
とてもとても難しいです
235デフォルトの名無しさん:2009/12/10(木) 16:12:50
スクリーンキーボードはウィンドウズの非公開技術によって作られています
236デフォルトの名無しさん:2009/12/10(木) 16:20:45
JavaScriptとHTMLでA,B,C,D...とかついたボタンをクリックすると
テキストエリアにその文字が追加されていくようなプログラムって
非公開技術なの?(やさしいHTMLとかいう名のエロ本で読んだことあるような..)
237デフォルトの名無しさん:2009/12/10(木) 16:24:43
おしっこだけしたいのにおならが出ちゃうのと同じ技術
うんこだけしたいのにおしっこも出ちゃうのとは少し違う
238デフォルトの名無しさん:2009/12/10(木) 16:26:18
>>236
え?そんなの簡単じゃん
239デフォルトの名無しさん:2009/12/10(木) 16:29:23
任意のアプリのキー入力情報を書き換えるプログラムが
公開技術なわきゃないだろ
240デフォルトの名無しさん:2009/12/10(木) 16:39:31
カレントのアプリケーションってことにすると
スクリーンキーボードをクリックしたらカレントがスクリーンキーボードに移るから
一つ前にカレントだったアプリケーションを記憶しておき
それにSendKeysで文字送ればええんとちゃう?APIいらなくない?
241デフォルトの名無しさん:2009/12/10(木) 16:41:56
keybd_event
SetKeyboardState
SendInput
242デフォルトの名無しさん:2009/12/10(木) 16:47:24
243デフォルトの名無しさん:2009/12/10(木) 17:02:31
244デフォルトの名無しさん:2009/12/10(木) 17:13:32
ああ無情
245デフォルトの名無しさん:2009/12/10(木) 17:28:07
>>233>>236は同一人物?
246233=236:2009/12/10(木) 17:50:28
呼んだ?
247デフォルトの名無しさん:2009/12/10(木) 18:00:38
もし、そのテキストエリアがHTML上にあるなら、
DOM経由でいじればいいだけのこと。
ややスレ違い。
http://msdn.microsoft.com/en-us/library/aa741682.aspx
http://msdn.microsoft.com/en-us/library/ms535904.aspx
248デフォルトの名無しさん:2009/12/10(木) 20:18:17
そのHTMLをIEでオープンしてるとは限らないだろ。
249デフォルトの名無しさん:2009/12/10(木) 21:02:40
わざわざ作らなくても最初からMS-IMEについてるし、他にもソフトが出回ってると思う。
自分で作る前に既存のものを研究しとけ
250デフォルトの名無しさん:2009/12/10(木) 21:18:15
別に DOM は IE だけの技術じゃないわけだが。
251192:2009/12/10(木) 21:49:51
解決しました!

・やはりファイル読み込みのwhile(1)ループでハマってしまっていた
 ↓
・CreateFile関数の戻り値を調べると-1(失敗)に
 ↓
・GetLastErrorでエラーの意味を取得すると123が得られた
 ・意味は「ファイル名、ディレクトリ名、またはボリューム ラベルの構文が間違っています」
 ↓
・CreateFileに与えるファイル名を改めてよく見てみると・・・
 なんと、ダブルクリックで開いた場合は、パスが""で囲まれていて、
 その他D&D等、成功していたときは囲まれていなかった!
 (昨日は動揺のためか、気付けなかった・・・ orz)
 ↓
・""を取り除いて与えるようにしたら、ダブルクリックでも正常動作!感動した!

ということでした。
何でダブルクリックで開いたときは""が付くんでしょうね^^;

みなさん、たくさんのアドバイスを下さってありがとうございました!
252デフォルトの名無しさん:2009/12/10(木) 21:52:04
いや、だから、レジストリでそういう風に登録されてるんだろ?
253デフォルトの名無しさん:2009/12/10(木) 22:03:41
D&Dとかでも、パスに空白を含んでいたらクォートされると思うぞ。
CommandLineToArgvWでも使っとけ。
254デフォルトの名無しさん:2009/12/10(木) 23:25:36
LCMapStringで半角→全角変換するとき\だけ半角のまま・・・
\以外にも全角変換できない文字ってあんのかな?
255デフォルトの名無しさん:2009/12/10(木) 23:37:59
>>251
だから__argcと__targvを使えと散々出てるだろが
どうせ今度は複数ファイルをD&Dした時にハマって質問するんだろ
256デフォルトの名無しさん:2009/12/11(金) 08:30:27
ファイルオープン失敗してるのに無限ループに突入しちゃうプログラムてどうなのよ
257デフォルトの名無しさん:2009/12/11(金) 10:16:53
>>256
if(INVALID_HANDLE_VALUE == CreateFile(...))
{
  while(1);
}
258デフォルトの名無しさん:2009/12/11(金) 11:44:20
>>257
成功したハンドルはどこにも保存しないのか
259デフォルトの名無しさん:2009/12/11(金) 12:50:12
>>258
if(INVALID_HANDLE_VALUE == CreateFile(...))
{
  while(1);
}
else
{
  int i = 0;
  while(++i)
  {
    CloseHandle((HANDLE)i);
  }
}
260デフォルトの名無しさん:2009/12/11(金) 17:54:24
無差別に閉じんなよwww
261デフォルトの名無しさん:2009/12/11(金) 17:56:10
DLLとの引数や返り値のやり取りの件なんですけど
1:アロケータ・デアロケータを公開してPOD構造のみでやり取り(C)
2:1に加えてインターフェース・生成関数・破棄関数をセットでやりとり(C++)
これでとりあえず間違いは起こりませんよね?
262デフォルトの名無しさん:2009/12/11(金) 18:15:48
COMみたいにReleaseを呼んで参照カウンタがゼロになったら開放しとけ
263192:2009/12/11(金) 18:44:05
すみません、ご指摘通り、__argvを使って難なく処理できました。
ありがとうございました。
264デフォルトの名無しさん:2009/12/11(金) 23:37:59
WinMainとWinProcでデータを共有したいと思ったらグローバル変数とか使わないとだめ?
WinProcにパラメータで渡す方法とかないんだろうか
265デフォルトの名無しさん:2009/12/11(金) 23:42:48
ウィンドウに対してデータを関連付けて、WinProcのHWND引数から取り出す。
SetPropとか。
266デフォルトの名無しさん:2009/12/11(金) 23:45:09
SetPropというのがあったのね知らなかった。ありがとう
267デフォルトの名無しさん:2009/12/11(金) 23:49:07
それってSetWindowLongとは違うの?^^
268デフォルトの名無しさん:2009/12/11(金) 23:51:14
違わない
SetWindowLongでGWL_USERDATA渡したときと一緒
269デフォルトの名無しさん:2009/12/11(金) 23:53:14
え?
違うよバカ。
MSDN読めハゲ。
そして死ねよクソブタ。
270デフォルトの名無しさん:2009/12/11(金) 23:54:31
ども。サンクスです^^
271デフォルトの名無しさん:2009/12/11(金) 23:55:56
SetPropは値にアトムか文字列を紐付けられるので複数の値を保存できる
SetWindowLong+GWL_USERDATAだと保存できる値は1個だけ
272デフォルトの名無しさん:2009/12/12(土) 00:09:50
ATOMっていまいち意味わからないんだよね。
MSDNのどこを調べても抽象的な説明ばかり…
273デフォルトの名無しさん:2009/12/12(土) 02:05:10
アトムテーブルに文字列や識別子を登録した際に返される16bit値がアトム。
……とAtomsの所に思いっきりベタに書いてあるように見える。

で、この値からは逆に文字列等を取り出すことができる。
ちなみにアトムテーブルの特徴として、同じ文字列や識別子を二つ以上は追加できず、
追加しようとした時は以前登録した時のと同じアトムを返す、というのがある。
274デフォルトの名無しさん:2009/12/12(土) 02:22:38
WM_CREATEのとき、CREATESTRUCTのlpCreateParamsに
WinMainと共有する変数のアドレス渡してWndProc内のstatic変数にそのアドレス
保存するってのは?
275デフォルトの名無しさん:2009/12/12(土) 02:27:45
あるウィンドウのスクリーンショットをクリップボードにコピーして、
PowerPointに貼り付けるVBAコードを作ってます。
下記のkeybd_eventを使って、出来たのは出来たのですが、
たまに画面全体がコピーされることがあり、Sleepを入れて対応せざるおえません。

Call keybd_event(VK_LMENU, &H56, KEYEVENTF_EXTENDEDKEY Or 0, 0)
Call keybd_event(VK_SNAPSHOT, &H79, KEYEVENTF_EXTENDEDKEY Or 0, 0)
Call keybd_event(VK_SNAPSHOT, &H79, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0)
Call keybd_event(VK_LMENU, &H56, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0)

貼り付ける枚数が多いので、PrintWindowの勉強をして
処理を早くしたいと思ってるのですが、
以下のコードだと、クリップボードにデータが入っていない様です。
ご教授頂けると助かります。宜しくお願いします。

hOwner = GetDesktopWindow()
hdc = GetDC(hOwner)
hClipDC = CreateCompatibleDC(hdc)
hBit = CreateCompatibleBitmap(hdc, 845, 553)
hOldBit = SelectObject(hClipDC, hBit)
Call PrintWindow(|コピーしたいウィンドウのハンドル|, hClipDC, 0)
Call OpenClipboard(0)
Call EmptyClipboard
Call SetClipboardData(CF_BITMAP, hClipDC)
Call CloseClipboard

・hBitまでは成功している様に見えるのですが、
 hOldBitには0が返されます。
・Call PrintWindowの時は、Trueが返されます。
276デフォルトの名無しさん:2009/12/12(土) 09:36:29
SetClipboardDataで第一引数にCF_BITMAPを指定したとき
第二引数には何を指定すべきか調べよう
277デフォルトの名無しさん:2009/12/12(土) 09:37:42
MSDNは英語版読めよ
278デフォルトの名無しさん:2009/12/12(土) 11:12:28
残念ながら、そのとおりだな。
日本語版MSDNは穴だらけ。
279デフォルトの名無しさん:2009/12/12(土) 12:56:04
>>275
OpenClipboardのhwndにNULLを渡した時は、
EmptyClipboardでクリップボードのオーナーがNULLが設定され、
その結果SetClipboardData呼び出しは失敗する。

と書いてあるな。
FindWindowか何かでPowerPointのメインウィンドウハンドルを取得して、
そいつを渡してやればいいんじゃないか?
バージョンに拠っては、既にプロパティとして用意されているかもな。
280デフォルトの名無しさん:2009/12/12(土) 15:19:29
>>275
指定のフォルダにファイル保存できるスクリーンキャプチャソフトがあるだろ。
そいつを使ってスクリーンショットを次々に保存していって
後でそのフォルダの画像ファイルを一括してPowerPointに貼り付ければいい。
281デフォルトの名無しさん:2009/12/12(土) 20:00:22
SetClipboardViewer APIを使って簡単なクリップボード拡張プログラムを作ってます
初回起動時にクリップボードの内容が取得できないことがあります
わかっているのはファイル名を指定して実行でCLIPBRD.EXEを起動後にソフトを起動したら正常に内容が取得できます
クリップボードチェインが取得できないときはMessageBox APIでエラーを通知するようにしているのですがエラーも出ないで起動するときがあります
クリップボードの中身はテキストなのですが、クリップボードの内容が取得できない原因として何が考えられますか?
282281:2009/12/12(土) 20:03:40
ソースはこんな感じですが
case WM_CREATE:
memset(szBuffer, '\0', sizeof(szBuffer));
hNextWnd = SetClipboardViewer(hWnd);
if(hNextWnd) MessageBox(hWnd,"Viewer Hanle Error","Error",MB_OK);
GetClientRect(hWnd, &rc);
hEdit = CreateWindow(
"EDIT",
NULL,
WS_CHILD | WS_VISIBLE |
ES_WANTRETURN | ES_MULTILINE | ES_AUTOVSCROLL | WS_VSCROLL |
ES_AUTOHSCROLL | WS_HSCROLL,
0, 0,
rc.right, rc.bottom,
hWnd,
(HMENU)ID_EDIT,
hInst,
NULL);
SendMessage(hEdit, EM_SETLIMITTEXT, (WPARAM)1024*1024, 0);
if(OpenClipboard(hWnd) && (hg = GetClipboardData(CF_TEXT))) {
strText = (PTSTR)GlobalLock(hg);
strcpy(szBuffer, strText);
Edit_SetText(hEdit, szBuffer);
GlobalUnlock(hg);
CloseClipboard();
}
break;
283デフォルトの名無しさん:2009/12/12(土) 20:08:03
Hanle Error
284デフォルトの名無しさん:2009/12/12(土) 20:09:49
クリップボードに sizeof(szBuffer) を超える文字列をセットしたら
簡単にバッファオーバーランできるぞw
285281:2009/12/12(土) 21:12:23
d
>>283
ハンドルエラーですか
GetLastError()で探ってみますね

>>284
私的に使うので問題ないですよ
まだ完成ではないので問題があったら修正しますね
286デフォルトの名無しさん:2009/12/12(土) 22:00:23
"Hanle"に突っ込んだだけだろ馬鹿w
287デフォルトの名無しさん:2009/12/12(土) 22:04:52
CLIPBRD.EXEってWin98のクリップボードビューアのことか?
凄い環境で開発してるんだな
288281:2009/12/12(土) 22:10:57
>>287
開発環境はNT4.0/VC++5.0です
CLIPBRD.exeはXPでも動作しますよ
互換性を考えてC言語で作ってるのですが
289デフォルトの名無しさん:2009/12/12(土) 22:14:05
OS付属のプログラムを他のOSに持って行ったらライセンス違反ですよ
290デフォルトの名無しさん:2009/12/12(土) 22:15:49
バッファオーバーランする糞コードを平気で書いてるぐらいだから
どうせ他の部分でもトチ狂ったコード書いてるんだろ
291281:2009/12/12(土) 22:21:44
>>289
いあ、実際試してみろって、ライセンスとか問題じゃないから
CLIPBRD.EXEが動くの俺だけなのか?
292281:2009/12/12(土) 22:23:01
ちなみにXP Proだけど
293デフォルトの名無しさん:2009/12/12(土) 22:26:25
> ライセンスとか問題じゃないから
死ね
294デフォルトの名無しさん:2009/12/12(土) 22:27:01
ウザイから放置で
295デフォルトの名無しさん:2009/12/12(土) 23:13:53
チェックボックスに対してBS_ICON属性を指定し
そのチェックボックスにアイコンを表示させてるものを作っているのですが
このときアイコンのサイズとチェックボックスコントロールの縦と横サイズを
自動で計算して合わせるのに有効なやり方などはありますか?

CreateWindow時に固定でサイズを指定するやり方は
なんとなくナンセンスな気がするので教えていただきたいです。
296デフォルトの名無しさん:2009/12/12(土) 23:19:58
BCM_SETIMAGELISTとBCM_GETIDEALSIZEでどうにかなるんじゃね?
297デフォルトの名無しさん:2009/12/13(日) 11:17:01
>>295
RECT rc, rcClient;
SIZE siz, siz2, sizClient;
GetWindowRect(hWnd, &rc);
GetClientRect(hWnd, &rcClient);
siz.cx = rc.right - rc.left;
siz.cy = rc.bottom - rc.top;
sizClient.cx = rcClient.right - rcClient.left;
sizClient.cy = rcClient.bottom - rcClient.top;
siz2.cx = (...) + (siz.cx - sizClient.cx);
siz2.cy = (...) + (siz.cy - sizClient.cy);
SetWindowPos(hWnd, NULL, 0, 0, siz2.cx, siz2.cy, SWP_NOMOVE | SWP_NOZORDER);
298デフォルトの名無しさん:2009/12/13(日) 11:22:36
//dll.cpp
#include <windows.h>
extern "C"
{
__declspec(dllexport) void CALLBACK hello(void){
MessageBox(0, "hello", "world", MB_OK);
}
}

//main.cpp
#include <windows.h>
typedef void (CALLBACK *hello_func)(void);
int main(void)
{
HMODULE module = LoadLibrary("dll.dll");
if(!module) {
MessageBox(0, "LoadLibrary", "Error", MB_OK);
return -1;
}
hello_func hello = (hello_func)GetProcAddress(module, "hello");
if(!hello){
MessageBox(0, "GetProcAddress", "Error", MB_OK);
FreeLibrary(module);
return -1;
}
hello();
FreeLibrary(module);
return 0;
}

GetProcAddressのところで失敗してしまいます。何が問題なんでしょうか?
299デフォルトの名無しさん:2009/12/13(日) 11:25:59
ちゃんとエクスポートされてるか確認したのか?
300デフォルトの名無しさん:2009/12/13(日) 11:27:36
GetLastError() って便利な関数があってだな・・・。
301デフォルトの名無しさん:2009/12/13(日) 11:28:56
CALLBACKといことはstdcallだから、hello@0という名前でエクスポートされてるのでは?
302デフォルトの名無しさん:2009/12/13(日) 12:01:48
まずはDependency Walker使ってみようぜ
303デフォルトの名無しさん:2009/12/13(日) 12:27:50
漢は黙って dumpbin /exports だ。
304デフォルトの名無しさん:2009/12/13(日) 13:24:47
305298:2009/12/13(日) 13:43:41
レスありがとうございます
dumpbinを使ってみたところ_hello@0という名前になってました
ゲームエンジンプログラミングという本のサンプルだと関数名そのままで扱っていたのですが・・・これは本が間違ってるんでしょうかね?
306デフォルトの名無しさん:2009/12/13(日) 13:52:39
>>305
その本は知らないけど、コンパイラがBCCの奴じゃないかな。
ネットで調べたら、BCCだと__stdcallを同名でエクスポートするって情報があった(VCしか知らないので逆に驚き)。
VCだとdefファイル作成して
 EXPORTS
 hello=hello
とでもしないと同名ではエクスポートできなかったと思う。
APIは問題なかったみたいね。

>>304
これいいね。
307デフォルトの名無しさん:2009/12/13(日) 16:56:46
ShellExecuteすると特に終了待ちするわけでもないのに
アプリが起動して入力受け付けるまで(かどうかはよくわからないけど)
呼び出し元のアプリがフリーズしてしまうんだけど
サブスレッドから呼ばない限りブロックされるのを防ぐ方法ってないですかね。
308デフォルトの名無しさん:2009/12/13(日) 17:35:43
275です。みなさん、ご回答をありがとう御座います。
大変勉強になります。
しかしながら、未だ解決出来ずにいます。
なんとか、PrintWindowを使って、クリップボードにBitmapを入れたいので、
ご教授をお願いします。
成功が望めるなら、BitBltを使ったやり方でもいいです。
こっちでもうまくいってません。

>>276
冷静な回答をありがとう御座います。
CreateCompatibleBitmapしたオブジェクトのハンドル hBit で実行して、
うまくいかなかったので、色々試して(初心者なので)いて、
そのうちの間違ったままのソースを載せてました。

>>279
PowerPointのハンドルでOpenClipboardするということでしょうか?
その認識で試してみましたが、どこか違う様です。

>>280
以前はそれに近い方法で運用していましたが、
クリップボードから貼り付ける方法の方が早いので、
今のソースコードを完成させたいと思っています。

新しい情報です。
・SetClipboardData(CF_BITMAP, hBit)で実行したところ、
 データのハンドルは返されています。
・IsClipboardFormatAvailable(CF_BITMAP)で確認しても、
 NULLが返されます。
309デフォルトの名無しさん:2009/12/13(日) 20:11:19
#define DEBUG_API(expr) \
{if(!(expr)){ _tprintf(_T("%s failed, ::GetLastError()=%#lx\n"), _T(#expr), ::GetLastError()); __debugbreak();}}

if(HWND hTarget = FindWindow(_T("Notepad"), NULL)){
// hTarget = ::GetDesktopWindow();
RECT rect; DEBUG_API(::GetWindowRect(hTarget, &rect));
HDC hdc = ::GetDC(hTarget);
HDC hClipDC = ::CreateCompatibleDC(hdc);
HBITMAP hBit = ::CreateCompatibleBitmap(hdc, rect.right-rect.left, rect.bottom-rect.top);
HGDIOBJ hOldBit = ::SelectObject(hClipDC, hBit);
// hTargetがデスクトップだとPrintWindow()が失敗する。理由は知らない。
DEBUG_API(::PrintWindow(hTarget, hClipDC, 0)); // ::GetLastError()は意味なしっぽい。
DEBUG_API(::OpenClipboard(NULL));
DEBUG_API(::EmptyClipboard());
DEBUG_API(::SetClipboardData(CF_BITMAP, hBit));
DEBUG_API(::CloseClipboard());
::SelectObject(hClipDC, hOldBit);
DEBUG_API(::DeleteBitmap(hBit));
DEBUG_API(::DeleteDC(hClipDC));
DEBUG_API(::ReleaseDC(hTarget, hdc));

return ::IsClipboardFormatAvailable(CF_BITMAP);
}

return FALSE;

上の検証コードでIsClipboardFormatAvailable()はゼロ以外を返したよ。
::GetDesktopWindow()のハンドルが指定できるか調べてみれば?
310デフォルトの名無しさん:2009/12/13(日) 20:19:03
RegisterHotKey で登録したホットキーを経由して、別ウィンドウがアクティブでも
音楽再生アプリでのplay/stopをしたいと思ったのですが、
nProtectGameGuardのオンラインゲーム上では登録したホットキー使用が不可能でした。
不正行為防止用にそうなっているのは予想が付いたのですが、
他のホットキー登録の方法、代替APIなど有りませんか?
311デフォルトの名無しさん:2009/12/13(日) 20:50:02
そんな特殊な人のため用にわざわざ代替API用意するほどMSがお人よしだと思ってるの
312デフォルトの名無しさん:2009/12/13(日) 21:16:23
思ってるから聞いてるんです。知らないならレスしないで下さい。
313デフォルトの名無しさん:2009/12/13(日) 21:18:58
ローレベルフックでもすれば?
314デフォルトの名無しさん:2009/12/13(日) 21:20:37
またオンラインゲームをチートしたい馬鹿が質問してるのか
315310:2009/12/13(日) 21:26:42
>>312は私ではありません
>>313
やはり、ローレベルフックしか無いですよね・・・勉強してきます
>>314
やろうと思えば出来るのでしょうけれど、アングラな世界には入りたくないですね。
と言った所で無駄でしょうね、そう思うならそう思っててください。
316デフォルトの名無しさん:2009/12/13(日) 21:28:53
ローレベルじゃない普通のフックとか、フィルタドライバ書くとか、
他にもいろいろあるよ。
317デフォルトの名無しさん:2009/12/13(日) 21:31:52
単純にタイマー廻してGetAsyncKeyStateなんかは?
318デフォルトの名無しさん:2009/12/13(日) 21:49:31
どうせ
nPro上では無理でした、代替APIなど有りませんか?
で無限ループだろ
319310:2009/12/13(日) 23:08:22
フィルタドライバでどうやら実装出来そうです
ありがとうございました
320デフォルトの名無しさん:2009/12/13(日) 23:11:05
あら本気?
321デフォルトの名無しさん:2009/12/13(日) 23:20:26
フィルタドライバが入っていることを認識されてあぼ〜んてオチじゃね?
322デフォルトの名無しさん:2009/12/13(日) 23:30:11
結局チートが目的だったようだ
323デフォルトの名無しさん:2009/12/13(日) 23:33:39
>>321
以前友人が書いていたコードを流用して、
取りあえずフィルタドライバを通して起動してみたところ正常に動作しました。

>>322
何を言っても無駄なようですね、別に構いません。
nProをすり抜けようとする行為自体、nProが望む行為じゃないんでしょうからね。
324デフォルトの名無しさん:2009/12/13(日) 23:35:08
まあそりゃあね
nPro自体行儀いいもんだとも思わないけど
325デフォルトの名無しさん:2009/12/13(日) 23:38:54
Win32APIってC#で使えますか?
326デフォルトの名無しさん:2009/12/13(日) 23:39:57
P/Invoke
327デフォルトの名無しさん:2009/12/13(日) 23:40:09
はい。
328デフォルトの名無しさん:2009/12/13(日) 23:40:17
一々宣言しないといけないから糞面倒だけど使える
329デフォルトの名無しさん:2009/12/13(日) 23:41:57
めんどくさかったらpinvoke.netからコピーして来るのが手軽
330デフォルトの名無しさん:2009/12/13(日) 23:43:52
C#で、他に起動してある特定のアプリウィンドウのタイトルテキストを変更したいのですが、
APIでその動作は可能ですか?
331デフォルトの名無しさん:2009/12/13(日) 23:44:20
そろそろ誰かwindows.csにまとめてくれ
332デフォルトの名無しさん:2009/12/13(日) 23:46:42
可能だからC#スレで聞いてくれ。
333デフォルトの名無しさん:2009/12/14(月) 17:19:47
DirectXとか無しでWinAPIでゲーム作ろうとしたら
WinProcは生成と破棄のみ、入力・更新・描画はメインループで
という形で十分ですかね?
それともメインループでは更新と画面無効化だけ、キーボード入力と描画はプロシージャで〜みたいな感じにした方がいいんでしょうか?
334デフォルトの名無しさん:2009/12/14(月) 18:16:57
前者がよろしいかと
335デフォルトの名無しさん:2009/12/14(月) 19:21:11
おれも前者推奨
336デフォルトの名無しさん:2009/12/14(月) 21:37:43
前者だな
337デフォルトの名無しさん:2009/12/14(月) 21:46:02
レスサンクスです
DxLIBとかしかやってこなかったんでプロシージャみたいな設計だと戸惑ってしまいまして
今まで通りのやりかたでいいみたいですね
338デフォルトの名無しさん:2009/12/14(月) 22:20:45
ゲームは別スレッドでループした方がいいんじゃないの?
作ったことないけど
339デフォルトの名無しさん:2009/12/14(月) 23:02:31
GDIはスレッドセーフじゃないから無闇にマルチスレッド化しない方がいいのでは?
340デフォルトの名無しさん:2009/12/15(火) 04:54:29
ファイルハンドルなどはアプリケーション終了時に解放し忘れても
OSが後片付けしてくれますが、MSDNのDestroyMenuの項に

>アプリケーションを終了する前に、DestroyMenu 関数を使って、
>どのウィンドウにも割り当てられていないメニューを破棄しなければなりません。

と、書いてあるので、メニューハンドルだけは例外で
もしかして破棄しないままアプリケーションが終了すると
OSにすら回収不能なメモリリークになるのですか?
341デフォルトの名無しさん:2009/12/15(火) 07:04:24
>>339
スレッドセーフに作られているがいったい何を言っているんだ?
342デフォルトの名無しさん:2009/12/15(火) 07:04:40
はい
よく気付きましたね
343デフォルトの名無しさん:2009/12/15(火) 07:06:27
344デフォルトの名無しさん:2009/12/15(火) 07:13:18
>>341
何も知らないお馬鹿さん。
345デフォルトの名無しさん:2009/12/15(火) 07:14:15
利用中に削除したら問題が起こるのはスレッドセーフ以前の問題だろ。
それを言ったら同期用のオブジェクトですら、使用中に削除したら問題が起こるだろ。
346デフォルトの名無しさん:2009/12/15(火) 07:16:20
起こらねーよ馬鹿
何のための参照カウンタなんだよ
347デフォルトの名無しさん:2009/12/15(火) 07:17:35
馬鹿でも理解できるように削除を例にしたMSの配慮が裏目に
348デフォルトの名無しさん:2009/12/15(火) 07:26:23
まとめるとこんな感じ。

Cのランタイムでマルチスレッドを選択しました。
ファイルをオープンしました。
別スレッドを開始しました。
ファイルをクローズしました。
別スレッドでファイルにアクセスしようとしました。
エラーが出ました。
スレッドセーフじゃねえよ、このやろう。
349デフォルトの名無しさん:2009/12/15(火) 07:32:16
名前          速度 プロセス間 リソース カウント機能   プラットフォーム
クリティカルセクション 高  なし    なし(排他アクセス)    95/NT/CE
ミューテックス     低  あり    なし(排他アクセス)    95/NT/CE
セマフォ        低  あり    あり            95/NT
イベント        低  あり    あり*            95/NT/CE
メータードセクション  高  あり    あり            95/NT/CE
350デフォルトの名無しさん:2009/12/15(火) 07:32:47
何のためにDuplicateHandleがあるんだよ
どれだけ頭が悪ければ気が済むんだろう?
351デフォルトの名無しさん:2009/12/15(火) 07:38:13
>>349
SRWLockとかOne-Time InitializationとかCondition variableとかも追加よろ
352デフォルトの名無しさん:2009/12/15(火) 07:47:22
DuplicateHandleを使うなら、HDCなら個別にGetDCをすればいいということになるだろ。
353デフォルトの名無しさん:2009/12/15(火) 07:50:20
ならない
DuplicateHandleとGetDCでは全然意味が違う
354デフォルトの名無しさん:2009/12/15(火) 07:52:17
STAとMTAの違いを分かってない馬鹿は黙っとけよ・・・
355デフォルトの名無しさん:2009/12/15(火) 07:54:33
参照カウンタがスレッドセーフの条件だと思っている時点で阿呆としか言いようがないんだが、頭は大丈夫か?
356デフォルトの名無しさん:2009/12/15(火) 07:56:06
誰もそんなこと言ってねーだろ
日本語も読めないのか
357デフォルトの名無しさん:2009/12/15(火) 07:57:47
ウインドウハンドルも参照カウンタを持っていないが、
スレッドセーフの条件から外れるんだよね。
単一スレッド以外からのウインドウ操作は以ての外。
ましては別プロセスからいじるなどあり得ない。
358デフォルトの名無しさん:2009/12/15(火) 08:01:04
>>357
当然だろ。
あるスレッドでwhile(hwnd=GetWindow(hwnd...))のループ中に
別スレッドで弄ると無限ループする可能性がある。
359デフォルトの名無しさん:2009/12/15(火) 08:02:35
この口調は前スレの最後で論破されてた馬鹿だなw 間違いない
相変わらずの無知っぷりでワロタw
360デフォルトの名無しさん:2009/12/15(火) 08:05:47
>>358
当然ときたか、ボロを出しまくりだね。
つまり現在目の前に描画されているウインドウシステムは幻想なんだね。
何のためにウインドウメッセージがあるのかまったく理解していない。
361デフォルトの名無しさん:2009/12/15(火) 08:10:07
まーた得意の話題逸らしが始まった
まずは「GDIスレッドセーフに作られている」のソースを提示しろよ
362デフォルトの名無しさん:2009/12/15(火) 08:10:37
朝から元気だね
おまえらってフリーランサーのプログラマー?
363デフォルトの名無しさん:2009/12/15(火) 08:14:19
>>358
ヘルプにEnumChildWindows使えと書いてあるだろ。
364デフォルトの名無しさん:2009/12/15(火) 08:15:27
そんな事は分かってるんだが
365デフォルトの名無しさん:2009/12/15(火) 08:16:59
シングルスレッドでも破棄したリソースを使おうとすればエラーになるのに、
何でマルチスレッドのせいになっているんだろう?
366デフォルトの名無しさん:2009/12/15(火) 08:18:21
バカはほっとけよ

どうせ前スレの
>.NETはWindows以外でも利用可能
みたいにうやむやにして逃げるだけだろ。
367デフォルトの名無しさん:2009/12/15(火) 08:21:55
Windows7以前はGDIを複数のスレッドから同時にアクセスするとロックが発生して処理速度が低下、
以降では改善されて平行に動くという話はOK?
368デフォルトの名無しさん:2009/12/15(火) 08:23:09
そんな話関係ないから
369デフォルトの名無しさん:2009/12/15(火) 08:24:20
話が高度すぎて初心者の俺にはついてゆけん
370デフォルトの名無しさん:2009/12/15(火) 08:24:57
何のためにロックしているのかというのは、関係ないのか。
都合がいいなあ。
371デフォルトの名無しさん:2009/12/15(火) 08:27:08
372デフォルトの名無しさん:2009/12/15(火) 08:28:05
ちゃんと読めよ
GDIオブジェクトがスレッドセーフでないという話とは全く関係ない
373デフォルトの名無しさん:2009/12/15(火) 08:28:57
自演?
374デフォルトの名無しさん:2009/12/15(火) 08:44:50
GDIをマルチスレッドで使う場合というと、メッセージループを回しつつ、
描画処理が別スレッドで動いている場合だよね。
描画用のスレッドでGetDCをしていらなくなったらReleaseDC、
そしてウエイトが入るような形になるだろうけど、
この場合どこに問題が起こるのかが重要。
375デフォルトの名無しさん:2009/12/15(火) 08:51:19
COMでいうところのSTAとMTAを理解していれば
>>343のリンク先に書いてある事が理解できるはず。
もう少し勉強しましょう。
376デフォルトの名無しさん:2009/12/15(火) 10:05:12
>>374
>GDIはスレッドセーフじゃないから無闇にマルチスレッド化しない方がいいのでは?
きっとメインスレッドからHDCを消し飛ばすんだろ。
常人にはさっぱり理解できないが。
377デフォルトの名無しさん:2009/12/15(火) 13:58:09
ゲーム機のサウンドのように音楽を途切れなく無限ループするにはどうすればいいの?
プログラムサウンドって奴?直接音源操作するにはどうすればいいんだろうなぁ・・・
378デフォルトの名無しさん:2009/12/15(火) 14:12:34
常人(笑)
379デフォルトの名無しさん:2009/12/15(火) 15:05:25
>>377
環境と開発言語がわからんと何も言えんが
380デフォルトの名無しさん:2009/12/15(火) 15:26:26
>377
自分でやるなら、ダブルバッファリングして波形データを送り続ける。
381デフォルトの名無しさん:2009/12/15(火) 15:28:32
DirectX
382デフォルトの名無しさん:2009/12/15(火) 15:44:56
SendInputで複数のキーを同時押ししたようにしたいのですが、
どのようにすればいいのでしょうか?
383デフォルトの名無しさん:2009/12/15(火) 15:58:40
>>382
SetKeyboardState

これで調べるのはだめでしょうか?
384デフォルトの名無しさん:2009/12/15(火) 16:13:47
DLL内の関数で、コールバック関数とそうでないものがあるのですが、これらの違いは何なのでしょうか?
両方試しましたが、これといった違いが分かりません

そもそもコールバック関数とは、どういった場面で使うのでしょうか
ユーザーが独自にコールバック関数を作ってもいいのですか?
385デフォルトの名無しさん:2009/12/15(火) 16:17:24
コールバックってのは、呼び出してもらう関数だよ?
EnumWindows() に対する、EnumWindowsProc() みたいな。

なんか勘違いしてるんじゃない?
386デフォルトの名無しさん:2009/12/15(火) 16:47:49
つくづくなんにもわかってないバカだな・・・。
387デフォルトの名無しさん:2009/12/15(火) 16:56:06
>>385
言ってることがさっぱり分かりません
388デフォルトの名無しさん:2009/12/15(火) 16:57:11
じゃ、あきらめろよ。
389デフォルトの名無しさん:2009/12/15(火) 16:58:04
まず 「一般的な意味のコールバック関数」 と 「CALLBACK呼び出し規約の関数」 を区別することから始めるべき
390384:2009/12/15(火) 17:32:21
#include <windows.h>
int WINAPI DllMain(HINSTANCE, DWORD, PVOID) {return TRUE;}

#define EXPORT extern "C" __declspec(dllexport)
EXPORT void Func1(void) {/*...*/}
EXPORT void CALLBACK Func2(void) {/*...*/}

DLL作成について解説しているサイトで、上のように呼び出し規約のあるものとないものが見受けられました
これらの違いについての質問でした

>>385
呼び出される、呼び戻されるという意味がいまいち……

>>389
コールバック関数の実装法が複数あると言うことでしょうか?
391デフォルトの名無しさん:2009/12/15(火) 17:36:28
コールバック関数ってのは
ユーザーが指定の書式に乗っ取ってその関数を書いてその関数ポインタを
Win32APIの引数に渡してその中からコールバック関数を呼び出してもらうような使い方をする。

というか何のためにその知識を得たいのかを書いたほうが手っ取り早い悪寒…
392デフォルトの名無しさん:2009/12/15(火) 17:39:32
CALLBACKの#defineを確認してみろよ。
393デフォルトの名無しさん:2009/12/15(火) 17:42:27
とりあえずEnumWindowsなりEnumFontsなりのサンプル書いて試してみりゃ
なんとなくわかるだろ
394デフォルトの名無しさん:2009/12/15(火) 17:46:31
CALLBACKについては環境にもよるけど書いてあっても無くても同じ
あったりなかったりするのは何をする関数か読む人にわかるように付け足してるか、
どっかからコピペしただけかどっちかだろう。
395384:2009/12/15(火) 17:47:03
>>391
目的は、DLL内の関数をコールバック関数にすべきかどうかの判断です
ウィンドウプロシージャ等、用意されてあるものについては触れたことがあるのですが、
独自の関数では、どういう場合にコールバック関数にすべきかと

>>393
MSDNライブラリ見てみます
396デフォルトの名無しさん:2009/12/15(火) 17:48:48
すでにキーワードとして出てるけど、「呼び出し規約」について調べてみような。
397デフォルトの名無しさん:2009/12/15(火) 17:50:04
VCなら右クリックして定義を参照すればわかるけど__stdcall だったり空だったりするぞ
398384:2009/12/15(火) 17:53:27
WINAPIやCALLBACKが__stdcallなのは知っていましたが、形式的に使っていただけでした
この機会にちゃんと調べてみます
399デフォルトの名無しさん:2009/12/15(火) 17:53:54
>>395
例えば
DLLの関数を呼ぶと勝手に処理はじめて
その進捗状況を教えてくれる
てのは?
400デフォルトの名無しさん:2009/12/15(火) 17:54:50
DLLとDLL呼び出し側でデフォルトの関数の呼び出し方が違うかもしれない

DLLからDLL呼び出し側(逆も)の関数をポインタ経由で呼び出すときに呼び出し規約が違うとバグるかも

仕方が無いので明示的に呼び出し規約を指定する


俺はこういうふうに考えてるんだがいいんだろうか?
401デフォルトの名無しさん:2009/12/15(火) 17:59:24
呼び出し規約を明示するのはいいけれど、
コールバックでないものにCALLBACKと書くのはいかがなものか
WINAPIとかの方がいいのでは
いやまぁWinAPIじゃないんだけどさ
じゃあ #define OreOreAPI __stdcall あたりでどうよ
402デフォルトの名無しさん:2009/12/15(火) 17:59:45
C/C++使ってる限りてきとーでいいよw
403デフォルトの名無しさん:2009/12/15(火) 18:00:27
x64移行しようぜ
404デフォルトの名無しさん:2009/12/15(火) 18:01:47
スタックポインタを呼出元が戻すか呼出先が戻すかの違いだろ。
405デフォルトの名無しさん:2009/12/15(火) 18:09:26
pascalとcdeclのいいとこ取り
406デフォルトの名無しさん:2009/12/15(火) 18:14:06
コンパイラオプションに/Gzを追加しとけ
407デフォルトの名無しさん:2009/12/15(火) 18:32:49
APIのコールバック関数は呼出規約が間違ってても動作上問題ないので気にしなくていい

と言ってみる
408デフォルトの名無しさん:2009/12/15(火) 18:34:50
APIのコールバック関数は呼出規約が間違ってても動作上問題ないと思われるので、気にしなくていい
409デフォルトの名無しさん:2009/12/15(火) 18:41:36
冗談はよしこさん
410デフォルトの名無しさん:2009/12/15(火) 18:42:19
問題が起きないようにAPI側で対策してあるんだよ。凄いでしょ。
411デフォルトの名無しさん:2009/12/15(火) 19:19:35
じゃあ自作DLLだとちゃんと動かないんだ?
412デフォルトの名無しさん:2009/12/15(火) 19:20:33
>>410
馬鹿なの
413デフォルトの名無しさん:2009/12/15(火) 19:38:34
ttp://blogs.msdn.com/oldnewthing/archive/2004/01/15/58973.aspx
馬鹿の為に対策してある例
つーか粂井のHPが紹介されててわろた
414デフォルトの名無しさん:2009/12/15(火) 19:44:56
こんなコードでも一応動くのなw

int __cdecl main(HWND h,int u,int w,long l)
{
  extern int __ImageBase;
  static ATOM a;
  WNDCLASS c={0,(WNDPROC)main,0,0,&__ImageBase,0,0,6,0,1};
  if(a)return(u-2)?DefWindowProc(h,u,w,l):exit(0);
  else if(CreateWindow(a=RegisterClass(&c),0,537<<19,0,0,99,99,0,0,0,0))
  while(GetMessage(&c,0,0,0))DispatchMessage(&c);
}
415デフォルトの名無しさん:2009/12/15(火) 19:52:27
>>413
釣りかと思ったら本当だった
わろすwwwww
416デフォルトの名無しさん:2009/12/15(火) 21:37:18
>>413
超有名人に晒し上げしてもらえるとはw
羨ましい奴めwww
417デフォルトの名無しさん:2009/12/15(火) 21:38:49
何が面白いのか教えて。
元から古いとか誤りが多いとか言われてた気がするんだけど。
418デフォルトの名無しさん:2009/12/15(火) 22:32:55
関数ポインタをキャストするのはキチガイの所業
419デフォルトの名無しさん:2009/12/15(火) 23:09:43
>>417
それが分からんうちはあんたも素人だ
それなりにまともな開発実績積めば
自ずと答えに辿り着くぜ
420デフォルトの名無しさん:2009/12/15(火) 23:14:00
>>418
EM_SETWORDBREAKPROC とかは?
421デフォルトの名無しさん:2009/12/16(水) 00:46:22
>>420
ハズレ
422デフォルトの名無しさん:2009/12/16(水) 01:25:37
キャストは避けられないがwindowsx.hのEdit_SetWordBreakProcマクロを使え
423デフォルトの名無しさん:2009/12/17(木) 04:09:22
嫌だ
424デフォルトの名無しさん:2009/12/17(木) 10:08:18
ListCtrlでレポートビューで表示してますが
1項目の値が大きくて入りきらなくなりお尻に”…”がつきます

例)
表示したい項目はABCDEFなのに
下のようにDまで表示され後は…です

-------
ABCD...|
-------

これを改行して表示したいのですが
オーナードローとか使わずに簡単にできませんか?

-------
ABCD |
EF   |
-------
425デフォルトの名無しさん:2009/12/17(木) 12:13:22
オーナードロー使わないとダメだと思うけど
あれめんどうだよな
426デフォルトの名無しさん:2009/12/17(木) 12:57:06
一度書いてしまえばいいんだから最初から避けなくてもいいのに
427424:2009/12/17(木) 16:03:41
ありがとうございます
無理そうなので枠をひろげることにしました

それで次の質問なんですが
1000という数字をprintfとかで1,000と表示する簡単な方法ありませんか?
1000未満ならカンマなし、1000以上なカンマつけるとか
判定してもいいのですが100万こえるとまた判定いりますし
ここは何か関数(API)とか用意されてませんか?
428デフォルトの名無しさん:2009/12/17(木) 16:13:56
GetCurrencyFormat
429デフォルトの名無しさん:2009/12/17(木) 16:21:16
GetNumberFormat
430424:2009/12/17(木) 16:21:23
ありがとうございます
あるもんですね
難しそうですがヘルプ参照してみます
431デフォルトの名無しさん:2009/12/17(木) 19:57:54
>428,429
そんな便利なAPIがあったんだ。
今まで自分で作ってた...orz
432デフォルトの名無しさん:2009/12/17(木) 20:21:47
NLSは意外と便利な機能が多いからな。
普段扱わないロケールとか出てくるから、
どうしても難しそうに見えるんだよなあ。
433デフォルトの名無しさん:2009/12/17(木) 22:47:00
NLSを調べようとしたつもりが
なぜかアダルトグッズサイトでオナホールを探していた。
何をいってい(ry
434デフォルトの名無しさん:2009/12/18(金) 09:39:54
わかるよ・・・
435デフォルトの名無しさん:2009/12/18(金) 09:53:47
立方メートルと入力して変換すると出てくるこの文字ですが

?

3がつぶれて醜いです
フォントを26とかの大きさにしたらいい感じになりますが
12とかのサイズではつぶれてて醜いです
これはプログラムではどうにもなりませんか?
綺麗なフォントとかあるんでしょうか?
DrawTextとかでmと3を分けて書くしかないのでしょうか?
436デフォルトの名無しさん:2009/12/18(金) 14:10:22

ブラウザから書き込み
437デフォルトの名無しさん:2009/12/18(金) 14:12:35
どういうソフトで入力するか次第だけど、
mを↓付け、3を小さいフォントで↑付けの書式にすればそれっぽく見えるかも。
438デフォルトの名無しさん:2009/12/18(金) 14:27:37
基本的にはMS〜フォントのビットマップ部分の見栄えがよろしくないって話だから。
メイリオ使うとかGDI+等で強制的にアンチエイリアスかけるとか
439デフォルトの名無しさん:2009/12/18(金) 16:28:13
スレッド内でShowCursor()を読んで、戻り値が負の値になっているのに
ウィンドウ上のカーソルが消えてくれないんですが、なぜでしょうか?
int func(void *arg) {
 while(1) {ShowCursor(0); Sleep(1000); ShowCursor(1); Sleep(1000);}
 return 0;
}
アプリの最初で_beginthread(funcを起動)

みたいな感じでやっても何も起こりませんよ?
440デフォルトの名無しさん:2009/12/18(金) 16:43:39
カーソルの設定はスレッドごとに別々らしいです
そのスレッドに所属するウィンドウにしか効きません
AttachThreadInputしてみると何かいいことがあるかもしれません
441デフォルトの名無しさん:2009/12/18(金) 16:52:54
439じゃないけどへぇ
442デフォルトの名無しさん:2009/12/18(金) 17:02:10
オレも参考になった。
443デフォルトの名無しさん:2009/12/18(金) 18:01:54
今、別に起動中のプログラム(ウインドウ)の画面をキャプチャする
プログラムを作成しようと考えています。

ただ、手順が分りませんの教えて頂きたく思います。

1.キャプチャしたいウインドウのタイトルから、
FindWindow関数で、ウインドウハンドルを取得する。

2.そのハンドルから、GetDCで、DCを取得。

3.そのDCからBitBltで転送する。


という手順で行ったのですが、真っ黒がキャプチャされてしまいます。

また、CreateDC(L"DISPLAY", NULL, NULL, NULL);
で作成したDCからBitBltで転送すると、
画面キャプチャは出来たので、
DCをキャプチャしたいウインドウのDCにするだけで出来るかなと思ったのですが、
出来ないのでしょうか。
それとも、手順自体は間違っていないのでしょうか。

お手数ですが、教えて頂ければ助かります。
444439:2009/12/18(金) 19:32:00
別スレッドだとダメなんですね。
試しにAttachThreadInputを使ってみましたがうまくいきませんでした。
HANDLE cursorThread = _beginthreadex(マウス制御する関数);
DWORD winThread;
GetWindowThreadProcessId(hWnd, &winThread);
if (! AttachThreadInput((DWORD)cursorThread , winThread, TRUE)) {
 失敗
}
MSDN (http://msdn.microsoft.com/ja-jp/library/cc429027.aspx)
によればAttachThreadInputに渡すスレッドIDにはウィンドウプロシージャが関連付けられてないといけないから、
上記みたいに第1引数がウィンドウと無関係な場合は失敗するみたいです。
スレッド使わないで実装するようにしてみます。どうもありがとう
445デフォルトの名無しさん:2009/12/18(金) 20:06:48
446デフォルトの名無しさん:2009/12/18(金) 20:09:08
>>443
XP以降のみ対応でいいならPrintWindowでも使っとけばいいんじゃなかったか。
447デフォルトの名無しさん:2009/12/19(土) 12:05:26
windowsx.hを使ってメッセージクラッカという技法を試そうと思ったのですが、
例えばメモリデバイスコンテキストのように、WM_CREATEとWM_PAINTでstaticなデバイスコンテキストハンドル
を使うものはグローバル変数にしなければ扱えないのではないでしょうか?

つまり、
http://ja.pastebin.ca/1720068
上記のようなコードを
http://pastebin.ca/1720075
このように変えるためにはグローバル変数を用いるしかないのでしょうか?
448デフォルトの名無しさん:2009/12/19(土) 12:10:24
static変数もどうかと思うが・・・
SetProp/GetPropやSetWindowLongPtr/GetWindowLongPtrを使うという手もある
449デフォルトの名無しさん:2009/12/19(土) 15:00:53
>>447
static な変数ってグローバルみたいなもんだしな。
450デフォルトの名無しさん:2009/12/19(土) 15:03:03
MDIの子ウィンドウが、
別のアプリケーションによって隠された時は再描画されるのですが、
他のMDI子ウィンドウに隠された時に再描画されません。
子ウィンドウの方から親ウィンドウにWM_PAINTメッセージを送った再も何も反応がありません。
どなたか、問題点もしくは解決策をご教授願います。
451デフォルトの名無しさん:2009/12/19(土) 23:44:04
WindowsXP付属電卓のボタンがどうやって赤青文字にしてるかわかる人いる?
あとフォーカス矩形が描画されないし
オーナードローかと思ったらspy++で見てもオーナードロースタイルが無いんだよ
452デフォルトの名無しさん:2009/12/19(土) 23:48:04
>>446さん

返事が遅くなりまして申し訳ございません。
PrintWindowで調べましたところ、
WindowsのGDIが単一サーフェスであることを初めて知りました。
画面が黒くキャプチャされたのも納得です。
PrintWindowで再描画した後、キャプチャすれば出来そうな気がしますので、
これから試して見ます。

どうも、有難うございます。
453デフォルトの名無しさん:2009/12/20(日) 00:34:30
>>451
カスタムドローだろ
454デフォルトの名無しさん:2009/12/20(日) 02:03:08
>>451
普通にWM_CTLCOLORBTNじゃないのか?

>>452
いやPrintWindowは自分が作ったビットマップを選択したDCを引数にしてそこに描画させるもんだろう普通。
455451:2009/12/20(日) 02:21:12
>>453
カスタムドローってリストビューとかコモンコントロールだけじゃないっけ?

>>454
プッシュボタンだけはWM_CTLCOLORBTNが利かないんだよ
これはMSDNでも確認済み
誰か電卓で気になった人いねえ?
456デフォルトの名無しさん:2009/12/20(日) 03:37:05
マニフェストを置いても無理か?
457デフォルトの名無しさん:2009/12/20(日) 03:49:59
VistaでAeroが有効になっている環境なのですが、
RedrawWindowしても、タイトルバーや枠が再描画されません。
何とか任意のタイミングで、全体を再描画させる方法は無いでしょうか。
458デフォルトの名無しさん:2009/12/20(日) 04:00:03
>>455
XP以降はボタンにもカスタムドローの通知が来るんだが、
これはMSDNで確認してないのか?
459デフォルトの名無しさん:2009/12/20(日) 04:15:01
>>457
なんとかリージョンを送るのは基本だったと思うけど
460451:2009/12/20(日) 04:32:36
>>458
マジで???確認してなかった
調べてみるわどうも
461デフォルトの名無しさん:2009/12/20(日) 04:39:47
>>457
一時的にDWMを無効にして有効にするしか無いんじゃねぇの?

てかWin7でタイトルバーのフォントを変更してもたまに再ログオンするまで更新が反映されなかったりするし
DWM周りは動作がよく分からんね
462デフォルトの名無しさん:2009/12/20(日) 09:50:43
超初心者の質問ですが、プログラムのウィンドウ上に表示されているピクセルデータは、どこの変数(構造体)に入ってるのでしょうか?
malloc変数に格納するには、どの構造体からデータをもってくればいいですか?
463デフォルトの名無しさん:2009/12/20(日) 10:18:28
オーナードローじゃなけりゃサブクラス化とかも
464デフォルトの名無しさん:2009/12/20(日) 11:12:54
>>462
HDC bmp = コピー先ビットマップが設定されたHDC
HDC hdc = GetDC(対象のウィンドウハンドル);
::BitBlt(bmp,0,0,幅,高さ,hdc,0,0,
SRCCOPY | ((拡張スタイル & WS_EX_LAYERED) ? CAPTUREBLT : 0) );//レイヤードウィンドウならCAPTUREBLT追加
ReleaseDC(対象のウィンドウハンドル,hdc);
465デフォルトの名無しさん:2009/12/20(日) 11:56:43
>>463
すみません、C++はまだノータッチなんです。勉強して出直してきます

>>464
いや、BitBltを使ってコピーするのではなく、そのコピーされる大元のビットマップデータを、たとえば数値で表示する、とかするときは(まあそんなことまずしないけど)どうしたらいいのでしょうか?
とにかくピクセルごとのデータをmalloc変数に入れときたいです。
466デフォルトの名無しさん:2009/12/20(日) 12:04:59
GetDIBits
467デフォルトの名無しさん:2009/12/20(日) 12:06:00
XP以前では他のウィンドウを避けながら直接画面に描かれるので触れません
他のウィンドウが覆いかぶさって隠れてる部分はそもそも描かれてすらいません
Vista以降はシラネ
どこかにあるはずだが、アプリケーションから触れるのだろうか
468デフォルトの名無しさん:2009/12/20(日) 12:25:36
>>467
そうなのか。
じゃあプログラム内で(ランダム、またはユーザーにより)書かれたものを保存するなら、画像とは別にその書いた動作を全部記録しないといけない、ということですか?
469デフォルトの名無しさん:2009/12/20(日) 12:30:16
Scribeサンプルとか見てみると、その通りだな。
470デフォルトの名無しさん:2009/12/20(日) 12:32:26
DWMならピクセルデータが取ってこれたような

471デフォルトの名無しさん:2009/12/20(日) 12:32:42
>>469
まぢですかあ・・・
がんばろ


あと、>>466のGetDIBitsって使い方が良くわからないんだけど、どうもbmpファイルとして保存されたものじゃないとできないようなかんじだった気がします。
472デフォルトの名無しさん:2009/12/20(日) 12:45:42
昔はGetDesktopWindow→GetDIBitsでスクリーンショット撮ってたのにそんなわけねーだろ
473デフォルトの名無しさん:2009/12/20(日) 15:01:17
474デフォルトの名無しさん:2009/12/20(日) 15:52:41
なんでbmpファイルの話が出てくるのかさっぱり理解できない。
475デフォルトの名無しさん:2009/12/20(日) 16:25:47
>>474
じゃあbmpファイルじゃなく、ウィンドウに表示されている画面のピクセルデータを読み込むには、どうしたらいいんですか?
まさかGetPixelしかないわけじゃないでしょう。
476デフォルトの名無しさん:2009/12/20(日) 16:27:24
構成によってフォーマットが違うよ
直接サーフェースのデータがとりたいならDirectXとか使ってみては
477デフォルトの名無しさん:2009/12/20(日) 16:29:25
まあフォーマット違ってもいいならGetBitmapBitsで持ってきてもいいけど
そもそもhBitmapは取れてるの?
478デフォルトの名無しさん:2009/12/20(日) 16:34:47
>>465
>いや、BitBltを使ってコピーするのではなく、そのコピーされる大元のビットマップデータを、たとえば数値で表示する

「いや」じゃねえよ、なめてんのか?
コピーしろと言われているんだから素直に従えばいいだろ。
ぐだぐだぐだぐだ何を言ってるんだ?
479デフォルトの名無しさん:2009/12/20(日) 16:37:07
275、308です。
>>309
ご回答ありがとう御座います。
どうやらクリップボードに何か入ってるのは間違い無いですね。

あれから色々調べ、色々やりましたが、(初心者なので)うまくいきません。
クリップボードに入っているものは、BITMAP形式ではない様です。
Keybd_eventだとクリップブックで確認した際に表示されているのに、に下記のソースだと駄目です。
何か良い助言をいただければと思います。

'◇今のソースコード
hdc = GetDC([コピーしたいウィンドウのハンドル])
hClipDC = CreateCompatibleDC(hdc)
Call GetWindowRect([コピーしたいウィンドウのハンドル], Rect1)
hBit = CreateCompatibleBitmap(hdc, Rect1.Right - Rect1.Left, Rect1.Bottom - Rect1.Top)
hOldBit = SelectObject(hClipDC, hBit)
'Call BitBlt(hClipDC, 0, 0 _
' , Rect1.Right - Rect1.Left, Rect1.Bottom - Rect1.Top _
' , hdc, 0, 0, SRCCOPY) '※これも試しました
Call PrintWindow([コピーしたいウィンドウのハンドル], hClipDC, 0)
Call OpenClipboard([pptのハンドル])
Call EmptyClipboard
Call SetClipboardData(CF_BITMAP, hClipDC)
fmt = EnumClipboardFormats(0)
Call CloseClipboard
Call SelectObject(hClipDC, hOldBit)
isfmt = IsClipboardFormatAvailable(fmt)

・上記だと「isfmt]には「1」が返されます。
・「fmt」には、何度やっても一定の7桁の数値が返されます。
 ⇒keybd_eventでキャプチャした場合は、必ず「2」が返されます。ここがヒントだと思っています。
480デフォルトの名無しさん:2009/12/20(日) 16:37:21
>>476
DirectXを使えという根拠は?
やったこともないのに適当なことを吹かすのはやめろ。
481デフォルトの名無しさん:2009/12/20(日) 16:39:44
>>479
プログラムがどうこう以前にDDBとDIBの意味は理解しているのか?
482デフォルトの名無しさん:2009/12/20(日) 16:44:40
>>480
VRAMの中身を直接取り出したいという可能性を考えただけ
というか、質問者がそれくらい曖昧だと言ってるのさ
483デフォルトの名無しさん:2009/12/20(日) 16:48:50
曖昧も何もDirectXに自分の管理外のサーフェイスのデータを取り出す機能も、
ウインドウモード時にVRAMのデータを直接取り出す機能も存在しないんだが、
いったい何の可能性だと言うんだ?
484457:2009/12/20(日) 19:10:02
>>459
>>461
すみません。結局諦めました('A`;
485デフォルトの名無しさん:2009/12/20(日) 21:55:02
工工エエエエ(´Д`)エエエエ工工
486デフォルトの名無しさん:2009/12/20(日) 22:57:03
YOU、ソース晒しちゃいなYO!
487デフォルトの名無しさん:2009/12/21(月) 00:33:10
>>479
...
DEBUG_API(::SetClipboardData(CF_BITMAP, hBit));
for(UINT uiFormat(0); ; ){
 if(!(uiFormat = ::EnumClipboardFormats(uiFormat))){
  DWORD dwResult(::GetLastError());

  if(dwResult != NOERROR){
   DEBUG_OUT(dwResult);
  }

  break;
 }

 DEBUG_OUT(uiFormat);
}
DEBUG_API(::CloseClipboard());
...
'ClipBoardTestFor2ch.exe': 'C:\WINDOWS\system32\mfc42.dll' を読み込みました。...
clipboardtestfor2ch.cpp(72) : uiFormat = 2 (0x2) ...
'ClipBoardTestFor2ch.exe': 'C:\WINDOWS\system32\mfc42loc.dll' を読み込みました。...

C++では問題ないみたいだし、ペイントとかのプログラムにも
ペーストできてるけど。悪いが俺にできるのはここまでかもしれん。
それにしても、7桁の数字ってヘッダ見たけどあり得ない気が。
488デフォルトの名無しさん:2009/12/21(月) 03:13:48
ここ最近、立て続けに画面キャプチャの質問ばっか来てるけど流行ってるのか?
489デフォルトの名無しさん:2009/12/21(月) 03:43:19
スクリーンキャプチャソフト大会

必須要件
・Windows XP/Vista/7の何れかで動作すること
・画面全体、指定領域、ウィンドウ領域のキャプチャ
・クリップボードへコピー、BMP形式で保存

開発言語は不問
技術点・構成点・芸術点の総合得点で評価
優勝賞金30万円、その他特別賞など
490デフォルトの名無しさん:2009/12/21(月) 03:51:54
応募するにはどこに提出すればいいんですか
491デフォルトの名無しさん:2009/12/21(月) 03:52:35
コンピュータの専門学校の大会か何か?
492デフォルトの名無しさん:2009/12/21(月) 03:56:44
流行ってるってか、同一人物だろ。

つーか
>クリップボードから貼り付ける方法の方が早いので、
>今のソースコードを完成させたいと思っています。

とか言ってるくせに一週間以上経っても全く進歩ねーじゃんwww
卒論なのか仕事でキャプってるのか知らんが物凄く能率悪い奴だね
493デフォルトの名無しさん:2009/12/21(月) 04:05:39
SendKeyとかkybd_eventとかでスクリーンプリントキーを押せばクリップボードに
494デフォルトの名無しさん:2009/12/21(月) 04:06:49
>>275にパワポと連携できるキャプチャソフトを作ってあげろよ
ここ見てる天才プログラマーの皆様には朝飯前だろ?
495デフォルトの名無しさん:2009/12/21(月) 04:10:29
連携というとDDE通信だな?
496デフォルトの名無しさん:2009/12/21(月) 04:14:58
フックのほうだろ?
497デフォルトの名無しさん:2009/12/21(月) 04:19:22
画面全体がコピーって・・・ALT+PRTSCじゃないの?
498デフォルトの名無しさん:2009/12/21(月) 04:24:49
初心者を言い訳にしてる馬鹿にアドバイスしても無駄
スルーしとけばいい
499デフォルトの名無しさん:2009/12/21(月) 11:42:25
>>496
いやいやグローバル変数だろ
500デフォルトの名無しさん:2009/12/21(月) 15:19:08
alt を押すとアクティブなウィンドウだけコピーされたような
501デフォルトの名無しさん:2009/12/21(月) 17:41:13
そんなの常識だから。
502デフォルトの名無しさん:2009/12/21(月) 19:27:59
ぱっぱぱらりら
503デフォルトの名無しさん:2009/12/22(火) 07:24:29
一週間以上を費やしても全然出来ないのに
それでもキャプチャソフトを自作した方が>>280の方法より「早い」のかねぇ
状況がサッパリ理解できないんだが
504デフォルトの名無しさん:2009/12/22(火) 15:29:45
ウィンドウをクラスにしたいんですがプロシージャとインスタンスを対応させるにはどうすればいいでしょうか?
505デフォルトの名無しさん:2009/12/22(火) 15:32:59
超頻出
SetPropでも使え
506デフォルトの名無しさん:2009/12/22(火) 16:27:52
WinMainの第二引数なんですが、ぐぐると現在は使われていないらしいことがわかりました。
では、WNDCLASSに情報をセットする前に if (!第二引数) { のような条件は不要ということでしょうか?

WNDCLASS myProg;
if (!hPreInst) {  ←★これ★
 myProg.style = CS_HREDRAW | CS_VREDRAW;
 myProg.lpfnWndProc = WndProc;
 myProg.cbClsExtra =0;
 myProg.cbWndExtra =0;
   ・
   ・
507デフォルトの名無しさん:2009/12/22(火) 17:09:32
んなこたーない
508デフォルトの名無しさん:2009/12/22(火) 20:01:35
>>506
常にNULLであるとMSDNに書かれている。
Win16時代の名残でしょ。
509デフォルトの名無しさん:2009/12/22(火) 20:05:54
Win16でしか通用しない話だし、要らないと俺は思う。
ランタイムがでっち上げているだけの引数だから、
OSが変わっても影響がでることはあり得ないし。
510デフォルトの名無しさん:2009/12/22(火) 20:39:03
>>275>>308>>479です。

・先ず、この質問で気分を悪くされた方々、申し訳ありません。
 十分な勉強をしていない素人が簡単に知識を得ようというのは
 良くないことですよね。
 マクロの延長線で考えていたので、これ以上は諦めてkeybd_eventで
 満足しよう思います。

>>481
存在は知っていましたが、言われて初めて検索しました。
不勉強を実感しています。今後の参考にしていこうと思います。

>>487
何度も丁寧にご回答頂きありがとう御座います。
非常に勉強になり、助かりました。
どうやらクリップボードに入れる以前の問題の様に思います
また時間があればこつこつ勉強しようと思います。

>>488-502
話題にしていただきありがとう御座います。

>>492>>503
毎日の仕事中で、非常に忙しい時間帯に実行する必要があるものなので、
少しでも「処理時間が早い」ものを と考えていました。
あるウィンドウを画面遷移させ、その画面のスナップショットと、
ウィンドウタイトルをpptに貼り付け、また画面を遷移する繰り返しを
100枚以上やるものです。
元々先述の[keybd_event]を使ったマクロで大きく短縮出来ていたのですが、
欲張って[Sleep]が少なくて済む方法が無いかと考えていました。

以上です。長文になり申し訳ありません。
511デフォルトの名無しさん:2009/12/22(火) 22:03:57
>>505
d
WinAPI始めたばかりでさっぱりだったんだ
512デフォルトの名無しさん:2009/12/23(水) 00:14:32
質問する前にせめて最新100レス以内ぐらいは探そうよ
WinAPIどころか人間を始めたばかりとしか
513デフォルトの名無しさん:2009/12/23(水) 00:24:50
はいはい、煽らない煽らない
514デフォルトの名無しさん:2009/12/23(水) 01:16:56
はいはい、煽りレスを煽らない煽らない
515デフォルトの名無しさん:2009/12/23(水) 01:24:36
質問系スレの最近の回答時効は20レス程度なんで
昔のように500レスぐらい読み返しても重複話題が
全くなかった古き良き時代はとっくに過ぎてる。
516デフォルトの名無しさん:2009/12/23(水) 01:27:44
キーの同時押しをSendInputで表現することができるようですが、
どのようにコードを組んでいいか分からないので教えてください。
517デフォルトの名無しさん:2009/12/23(水) 01:39:02
MSDN
518デフォルトの名無しさん:2009/12/23(水) 02:31:40
WM_GETMINMAXINFOについてなんですが、
SetWindowPos等の関数でWS_THICKFRAMEを持たないウィンドウのサイズを変更した際には、
WM_GETMINMAXINFOメッセージが送られきません。
このような場合は、どのようにウィンドウのサイズを制限すればいいのでしょうか。
519デフォルトの名無しさん:2009/12/23(水) 03:14:58
古き良き時代て
検索もできない馬鹿が増えただけだろ
520デフォルトの名無しさん:2009/12/23(水) 03:24:10
人間始めたばかりのチンパンジーに検索もできないとか言っちゃうお前が馬鹿だよ
521デフォルトの名無しさん:2009/12/23(水) 13:06:08
//--Module.cpp--
#include <iostream>
struct Hoge
{
    static void __stdcall Func(void)
    {
        std::cout << __FUNCTION__ << std::endl;
    }
};

//--Module.def--
LIBRARY "Module"
EXPORTS
    Func = Hoge::Func @1

上記のようにC++のクラス内静的関数、あるいは名前空間内の関数をエクスポートすることは不可能でしょうか?
522デフォルトの名無しさん:2009/12/23(水) 13:23:06
スレ違い
523デフォルトの名無しさん:2009/12/23(水) 16:24:59
>>510
 自分の勉強のため、Excel2000 VBA(On Win2K)で動くコードを書いてみた。
EnumWindows()でキャプチャできそうなウィンドウを列挙して、BitBlt()で
転送、ワークシートの各ページに貼り付けてる。PrintWindow()はパソコン
壊れたので動作確認できてない(実装はしてるけど)。
 このスレ的には、C/C++が主流と言うか当然なので粘るのはよくないかもね。

ttp://rapidshare.com/files/324722603/ClipboardTest.zip
524デフォルトの名無しさん:2009/12/23(水) 16:56:11
BitBltではキャプチャできるとは限らないから意味ないよ
525デフォルトの名無しさん:2009/12/23(水) 21:51:28
>>521
DEFファイルにHoge::Funcではなく、マングル名(C++コンパイラが変形したあとの名前)を記述する。
または、DEFファイルを使わず__declspec(dllexport)と__declspec(dllimport)だけでやる。
526デフォルトの名無しさん:2009/12/24(木) 11:22:01
ウザイから放置で
527デフォルトの名無しさん:2009/12/25(金) 10:49:03
GetVolumeInformationで取得できるボリュームのシリアル番号って、
Windows上の画面ではどこで表示できますか?
528デフォルトの名無しさん:2009/12/25(金) 11:18:22
Windowsの使い方はスレ違いです。
529デフォルトの名無しさん:2009/12/25(金) 11:19:52
チートの作り方おしえてください
530デフォルトの名無しさん:2009/12/25(金) 11:24:42
ネタのひねりが全く足りない。
くだらない。
531デフォルトの名無しさん:2009/12/25(金) 12:35:31
トーチの作り方おしえてください
532デフォルトの名無しさん:2009/12/25(金) 12:40:26
タネのひねりが全く足りない。
くだらない。
533デフォルトの名無しさん:2009/12/25(金) 15:03:16
最近レベル落ちた?
534デフォルトの名無しさん:2009/12/25(金) 15:19:37
チンパンジーが増えただけだろ。
535デフォルトの名無しさん:2009/12/25(金) 17:37:34
WinMainの最後の引数、MSDNを読むと外部から値を指定して起動すると
ウィンドウの挙動を制御できるように読めるのですが、プログラムで対応する処理が無くても
MSDNに書かれている通りの動作になるんですか??
536デフォルトの名無しさん:2009/12/25(金) 17:38:28
いま知り合いのMS社員に訊いて見るから3ヶ月くらい待て
537デフォルトの名無しさん:2009/12/25(金) 18:04:49
>>535
受け取ったら適切に処理しろ
538デフォルトの名無しさん:2009/12/25(金) 18:45:53
>>537
可能なときは自分もそうしているけど、

>>535
ぶっちゃけ、プログラムで無視しても、外から指定したとおりになる。
最初にShowWindowを呼び出したとき、その引数を無視して、
外からの指定(STARTUPINFOのwShowWindow == WinMainのnCmdShow)に従うため。
http://msdn.microsoft.com/ja-jp/library/cc411211.aspx
539デフォルトの名無しさん:2009/12/25(金) 19:45:25
だからWinMainの引数は全部不要ってこのスレの前の方にも出てるでしょうが
プロセスAから起動したプロセスBは必ずAの子プロセスになるのでしょうか?
Aの子プロセスにせずに起動させる方法はあるでしょうか?
ShellExecute や CreateProcess, CreateProcessAsUser で試してみたところ,すべて子プロセスになりました
541デフォルトの名無しさん:2009/12/25(金) 23:26:31
> すべて子プロセスになりました

えっ
542デフォルトの名無しさん:2009/12/25(金) 23:37:24
>プロセスAから起動したプロセスBは必ずAの子プロセスになるのでしょうか?
多分そうだと思う。
543デフォルトの名無しさん:2009/12/25(金) 23:41:41
コマンド起動
544デフォルトの名無しさん:2009/12/26(土) 09:32:52
Win32的には、Toolhelpで手繰って処理でもしない限り
親子関係にあまり意味は無かったりするから、気にしなくていいんじゃない?
545デフォルトの名無しさん:2009/12/26(土) 09:40:06
漏れも前に色々試してみたけどどうやっても子になったな
546デフォルトの名無しさん:2009/12/26(土) 10:33:55
ていうか子プロセスになる事の何が不満なのかサッパリ分からん
547デフォルトの名無しさん:2009/12/26(土) 17:40:14
ちょっと質問です。
ノートPCの筐体を閉じた時に、なんかイベントとかメッセージって飛んで来ますでしょうか?
筐体の開け閉めに連動したランチャーを作ろうかと思いまして……閉めた時にちょっとした処理を行うとか。
548デフォルトの名無しさん:2009/12/26(土) 17:42:04
ねえよ
549デフォルトの名無しさん:2009/12/26(土) 17:46:01
WM_QUERYNOTEPCCLOSING
閉じる直前に送られる。FALSEを返すと中止

WM_NOTEPCCLOSED
閉じた後に送られる。
550デフォルトの名無しさん:2009/12/26(土) 18:00:34
WM_POWERBROADCAST
適当にググったらでてきた
詳しくは知らん
551デフォルトの名無しさん:2009/12/26(土) 18:02:23
適当なウィンドウをSpy++で監視すれば分かる程度の質問を何故するのか理解に苦しむ
552デフォルトの名無しさん:2009/12/26(土) 19:36:04
Spy++って何?
553デフォルトの名無しさん:2009/12/26(土) 19:51:07
とある便利なツールの名前
554デフォルトの名無しさん:2009/12/26(土) 19:52:52
Spy++ も知らずに Win32 開発とは・・・。恐れ入った。
555デフォルトの名無しさん:2009/12/26(土) 19:55:16
マジでSpy++って何?
C++の親戚みたいなもの?
556デフォルトの名無しさん:2009/12/26(土) 19:59:23
Spy++ (SPYXX.EXE) は、システム内のプロセス、スレッド、ウィンドウ、および
ウィンドウ メッセージを表示できる、32 ビット用のユーティリティです。
Spy++ には次の機能が備わっています。

- グラフィックスによって、プロセス、スレッド、およびウィンドウを含む、システム
オブジェクトの関係をツリー表示できます。
- 指定したウィンドウ、スレッド、プロセス、またはメッセージを検索できます。
- 選択したウィンドウ、スレッド、プロセス、またはメッセージのプロパティを表示
できます。
- Spy++ の表示ウィンドウから、ウィンドウ、スレッド、プロセス、またはメッセージ
を直接選択できます。
- ファインダ ツールを使用すると、マウスのドラッグ アンド ドロップ操作によって、
特定のウィンドウの情報を検索できます。
- メッセージ記録用のパラメータを指定すると、メッセージ オプションを細かく設定
できます。
557デフォルトの名無しさん:2009/12/26(土) 20:00:30
スパイ++ のほかに 2 つのよく似たツールがあります。
プロセスとスレッドの詳細な情報を表示するプロセス ビューア (PVIEW.EXE) と、
プログラムの動的なデータ交換 (ダイナミック データ エクスチェンジ : DDE) のメッセージを監視する DDE スパイ (DDESPY.EXE) です。
558デフォルトの名無しさん:2009/12/26(土) 20:01:20
Spy++は、Microsoft Visual Studioに付属のツールです。
559デフォルトの名無しさん:2009/12/26(土) 20:07:08
チャットじゃないんだから、わからないものはまず自分で調べなよ。
インターネットに接続できる環境もってるんだから。
560デフォルトの名無しさん:2009/12/26(土) 20:27:16
ちなみにSpy++はEEにはありません。
561デフォルトの名無しさん:2009/12/26(土) 20:32:27
なんだよ使えねーな
562デフォルトの名無しさん:2009/12/26(土) 21:02:17
>>549
もっと詳しく。そのWMの値はどこに書かれてますか?
563デフォルトの名無しさん:2009/12/26(土) 21:04:48
>549
情報サンクス。でもどこにも見付からない……解説ページとかあればぜひ。
>550
WM_POWERBROADCAST はサスペンドとかを設定している時しか飛んでこなさそうな感じでした。
>551
Spy++で試してみたけど引っ掛かりませんでした(@XPSP2)。試したノートPCが古かったのかな……
564デフォルトの名無しさん:2009/12/26(土) 21:05:12
EEしか知らないWin32プログラマなんて居るのか?
565デフォルトの名無しさん:2009/12/26(土) 21:12:10
NOTEPC なんて和製英語使うわけないだろ。
からかわれてるんだよ。
566デフォルトの名無しさん:2009/12/26(土) 21:13:49
ネタに決まってるだろ馬鹿
そもそもFALSEを返すと中止って何だよw
不思議な力が働いてノートPCを閉めれなくするのか?www
567デフォルトの名無しさん:2009/12/26(土) 21:18:46
ウソを教えろ。
568デフォルトの名無しさん:2009/12/26(土) 21:25:51
>>567
うそ【嘘】

1 事実でないこと。また、人をだますために言う、事実とは違う言葉。偽(いつわ)り。「―をつく」「この話に―はない」

2 正しくないこと。誤り。「―の字を書く」

3 適切でないこと。望ましくないこと。「ここで引き下がっては―だ」
569デフォルトの名無しさん:2009/12/26(土) 21:34:06
嘘ではありません。
非公開のウィンドウメッセージなので名前は適当に付けました。
事前にAPIを呼び出してウィンドウを登録しないと通知は来ません。
570デフォルトの名無しさん:2009/12/26(土) 21:39:28
RegisterWindowMessage() とかを理解した上で言ってれば面白かったのにな。
571デフォルトの名無しさん:2009/12/26(土) 21:40:24
何言ってんだお前?
572デフォルトの名無しさん:2009/12/26(土) 21:43:10
>>570=話を理解してない馬鹿
573デフォルトの名無しさん:2009/12/26(土) 21:48:20
>569
値は?
574デフォルトの名無しさん:2009/12/26(土) 21:49:51
>>570は非公開メッセージの存在とか事前登録したウィンドウにしか飛んでこない通知メッセージの存在を知らないんだろ
575デフォルトの名無しさん:2009/12/26(土) 21:52:38
>>573
0xBACA
576デフォルトの名無しさん:2009/12/26(土) 21:54:09
もういいから。
ファイルを右クリックして詳細タブで表示できるプロパティ
(ファイルの説明,種類,製品名等の情報)はどうやって取得するのでしょうか?
578デフォルトの名無しさん:2009/12/26(土) 22:10:29
種類は拡張子からレジストリで。
説明とか製品名とかは、バージョンリソースから。
579デフォルトの名無しさん:2009/12/26(土) 22:14:49
[―{}@{}@{}-]
↑これ何すか?
580デフォルトの名無しさん:2009/12/26(土) 22:17:13
581デフォルトの名無しさん:2009/12/26(土) 22:23:38
つーか>>540=>>577だろ。
582デフォルトの名無しさん:2009/12/26(土) 22:30:37
まじかよ
583デフォルトの名無しさん:2009/12/27(日) 12:09:20
あるNTFS上のファイルを特定する場合
c:\myfile.txt
というようにパスで指定すると
移動したりリネームしたりすると破綻しちゃいます。
パス文字列からIDか何かを取得し、そのIDからパス文字列を取得できる
API,手法はないですか?
584デフォルトの名無しさん:2009/12/27(日) 12:11:17
ファイルサイズとハッシュしかないんでは? 一致を探る。
個別の固有番号が付いてるとか聞いたことがない。
585デフォルトの名無しさん:2009/12/27(日) 12:33:06
586デフォルトの名無しさん:2009/12/27(日) 12:36:49
↑の関連で、こんなのはあるんだな。

http://msdn.microsoft.com/en-us/library/aa364570(VS.85).aspx
587デフォルトの名無しさん:2009/12/27(日) 13:56:09
つまり>>584は馬鹿って事ですな
588デフォルトの名無しさん:2009/12/27(日) 14:41:23
NTFSがファイルにIDを付けて管理してるなんてWin32スレ的には常識だろ。
589デフォルトの名無しさん:2009/12/27(日) 14:54:41
OpenFileByIdつうそのままな名前のAPIもあるしな
590デフォルトの名無しさん:2009/12/27(日) 14:58:45
へー。ほんとだ。>>586 で取得した Object ID を渡せるんだね。
591デフォルトの名無しさん:2009/12/27(日) 15:04:23
>>586は管理者権限いるしリブートかけるとIDの一意性は保証されなくなるってGoogle先生が言ってた
592デフォルトの名無しさん:2009/12/27(日) 15:08:14
つーか、GUIDとDWORDで全然違うもんじゃないのか?
593デフォルトの名無しさん:2009/12/27(日) 15:10:27
DWORDって何?
594デフォルトの名無しさん:2009/12/27(日) 15:21:24
595デフォルトの名無しさん:2009/12/27(日) 15:38:12
ファイルIDならGetFileInformationByHandleで得れるだろが
596デフォルトの名無しさん:2009/12/27(日) 19:30:29
GetFileInformationByHandleのもボリュームシリアルナンバーと組み合わせて一意だから、
ボリューム(ドライブ)を跨いでの移動だと追い切れない。

となると、結局>>585-586の追跡サービスのほうがいいという話になると思う。
597デフォルトの名無しさん:2009/12/27(日) 19:47:36
そんな事まで質問者は訊いてないだろ、ぼけ
598デフォルトの名無しさん:2009/12/27(日) 20:01:41
あぁ、ゆとり教育の弊害がここにも・・・
599デフォルトの名無しさん:2009/12/27(日) 20:12:48
たしかに訊いてない
質問者が訊いてるのは「API,手法はないですか」だから、回答は「ある」「ない」だけでいいってことか
600デフォルトの名無しさん:2009/12/27(日) 20:15:16
「ある」NTFS上の
と書いてあるだろ
ボリューム間の移動なんてどうでもいいんだよ
601デフォルトの名無しさん:2009/12/27(日) 20:18:16
ボリュームを跨いだ移動は実質的には削除と同じだから追えなくて当然じゃん
602デフォルトの名無しさん:2009/12/27(日) 20:25:51
ボリュームって何?
603デフォルトの名無しさん:2009/12/27(日) 20:37:09
>>602
ドライブとかディスクパーティションとかのことだと思えばだいたいあっている。
http://msdn.microsoft.com/en-us/library/ms790711.aspx
604デフォルトの名無しさん:2009/12/27(日) 20:38:12
つーか質問内容は最後の二行だろう。
余計な部分に食いつくのはスレ住人の悪い癖だな。

パス文字列からIDか何かを取得
GetFileInformationByHandle(Ex)

IDからパス文字列を取得
OpenFileById→GetFinalPathNameByHandle→FindFirstFileNameW/FindNextFileNameW
605デフォルトの名無しさん:2009/12/27(日) 21:35:32
皆仕事で質問の本質とかを考慮しながら答えるのに慣れちゃってるからね。
末端の答えしか必要としないなら、ここよりGoogle先生に聞いた方がいい。
606デフォルトの名無しさん:2009/12/27(日) 21:52:08
そんなお節介しなくていいから。

そもそもが確実に追跡する方法なんて無いに決まってるのだから
移動したりリネームしたりできないようにロックしとくか
移動したりリネームしたりしても破綻しないように作っとけ
という結論になる。
607デフォルトの名無しさん:2009/12/27(日) 23:06:01
>>583
この場合に相当するかどうかは知らないが、
相対パスや環境変数と組み合わせるのは常識だと思うんだ。
608デフォルトの名無しさん:2009/12/28(月) 00:26:15
2つのパスを表す文字列が、同じものを指しているかどうかを調べる方法はありますか。
例えば↓のような感じで、同じファイルでも異なる表記があると思います。(なので単純な文字列比較ではだめですよね)
C:\foo\hogehoge.txt
C:\FOO\HOGEHO~1.TXT
C:\foo\bar\..\hogehoge.txt
\\?\C:\foo\hogehoge.txt

やりたいことは、パスを表す文字列が複数あって、
それらが重複したパスを持たないように、ユニークにしたいってことなんですが。
実際にファイルを開いてみて、ファイル固有のIDを比較するしかないですか?
609デフォルトの名無しさん:2009/12/28(月) 00:43:21
>>583=>>608か?
610デフォルトの名無しさん:2009/12/28(月) 00:57:04
>608
1つ目のパスの指すディレクトリに、空のファイルか何かを新規作成。
2つ目のパスの指すディレクトリで、作った空のファイルとかがあるかを調べる。
もしあれば、2つのパス(ディレクトリまで)は同じなので、後はファイル名を調べれば良い。
611デフォルトの名無しさん:2009/12/28(月) 00:59:58
物凄くアホな方法だな
612デフォルトの名無しさん:2009/12/28(月) 02:13:04
でも面白い発想だぬ
613デフォルトの名無しさん:2009/12/28(月) 05:08:41
api fullpathなんとかつかえ
614デフォルトの名無しさん:2009/12/28(月) 07:31:27
相対指定も含めると単語毎にケツから可能性の除去を繰り返すしか無いね
615デフォルトの名無しさん:2009/12/28(月) 11:33:00
join/subst等考えると>610で更にNTFSなら少し前に出てたIDでチェックかな
616デフォルトの名無しさん:2009/12/28(月) 11:46:42
ファイルが作成できるとは限らないだろ
617デフォルトの名無しさん:2009/12/28(月) 11:53:34
>>616
ま、そのときは (>>583 = >>608 仮定だけど) 元仕様のリネームも弾かれるわね
618デフォルトの名無しさん:2009/12/28(月) 11:56:15
UAC有効だとプログラムから作成できなくてもユーザーによる移動・リネームは可能
619デフォルトの名無しさん:2009/12/28(月) 12:04:33
あ 盲点だ。
GetFullPathName あたりを使うか
GetFileInformationByHandle(Ex) を使う(>>604) あたりが妥当なのか
620デフォルトの名無しさん:2009/12/28(月) 12:11:39
ファイルIDって確かハードリンクに対して同一のIDだから
パスの比較には使えないよ
621デフォルトの名無しさん:2009/12/28(月) 12:20:41
フツーのパス比較ならPath系APIでいいが
MAX_PATHを超えるパスや\\?\には無理

つまり 自分で作れ ってこった
622デフォルトの名無しさん:2009/12/28(月) 12:52:38
ながいパスを正常に扱える有名どころのソフトやライブラリてあるのかな?
一般的なファイラでも見たことないし。
623デフォルトの名無しさん:2009/12/28(月) 13:07:42
そもそもWindowsのシェル自体がMAX_PATHを超えるパスを考慮した設計がされてないので
ぶっちゃけどうでもいい
624デフォルトの名無しさん:2009/12/29(火) 02:05:59
そこら辺って7でもまだ直ってないの?
625デフォルトの名無しさん:2009/12/29(火) 04:42:30
直る直らないってかそういうのと別次元の話なのはITEMIDLISTの定義を見ればわかること
626デフォルトの名無しさん:2009/12/29(火) 05:17:16
rootkitじゃあるまいしシェルが認識できないパスへ対応する事に何の意味があるんだか
627デフォルトの名無しさん:2009/12/29(火) 07:38:40
フォルダ名を説明文にしたりしたいのにできないのな
みんなはファイルはID振ってデータベースで管理とかやってんのかな
628デフォルトの名無しさん:2009/12/29(火) 08:04:48
C:\2009年度のファイルです。\12月のファイルです。\2ちゃんねるに関連したファイルです。
\Win32API質問箱に投稿するファイルです。\スレッドはBuild84です。\質問に答えるために試しに書いてみたソースコードです。
\開発言語はC++です。\対応OSはVista以降です。\パス文字列からIDを取得できるのか?\test.cpp

こんな感じか?
そりゃあMAX_PATHでは全然足りないだろうねw
629デフォルトの名無しさん:2009/12/29(火) 08:06:13
普通にファイルとパスで一意に特定するだけだが。
IDを使う必要など微塵もない。
630デフォルトの名無しさん:2009/12/29(火) 08:08:57
検索すればいいんだからファイル名なんて短く簡潔でいい
フォルダ階層のみで管理する時代なんてとっくに終焉を迎えてるだろ
631デフォルトの名無しさん:2009/12/29(火) 10:13:23
「おっぱい膨らみ始めた少女の画像」で検索できるか?
632デフォルトの名無しさん:2009/12/29(火) 10:47:29
長いパスのファイルってエクスプローラで表示されないの?
だとするとセキュリティ的に問題あると思うが・・・
633デフォルトの名無しさん:2009/12/29(火) 10:57:25
長いパスは糞グラマが作ったソフトでオーバーランするので注意。

例:
char fname[MAX_PATH];
lstrcpy(fname,argv[1]);
lstrcat(fname,".txt");
634デフォルトの名無しさん:2009/12/29(火) 11:06:25
これはでも、不可抗力だよな・・・。
635デフォルトの名無しさん:2009/12/29(火) 13:10:17
どこが?
636デフォルトの名無しさん:2009/12/29(火) 14:43:49
あそこが
637デフォルトの名無しさん:2009/12/29(火) 14:49:14
一見3行目にバグが潜んでいるかのように見えるが、
実は2行目でアウト。だろ?
638デフォルトの名無しさん:2009/12/29(火) 15:44:14
その程度の脆いコードをすぐに指摘できないようじゃあまだまだ素人だな

ここでも読んで勉強して来い
ttp://www.kumei.ne.jp/c_lang/intro/no_20.htm
639デフォルトの名無しさん:2009/12/29(火) 15:53:21
FAT16X(Win95)以降、ファイル名の表記法が緩和され、マルチバイト文字
(一部文字は同一視)が使用出来るようになりました。便利になった反面
別表記でも同一ディレクトリ内部に作成すると干渉する可能性があります。
(不本意に既存ファイルを上書きもしくは削除後新規作成してしまう)
ファイルを作成する前にFindFirstFiles FindNextFilesに問い合わせ
情報が得られるかどうかチェックして下さい。情報が得られた場合
はその名称が使用されています。
ファイルオープンで可能か否かでチェックする方法はおすすめしません。
ロックされている場合は不正確な結果になるからという理由もさる
ことながらロックしないでオープンした場合の別プロセスの同一操作
に対する順序整合性が保証されないからです。
640デフォルトの名無しさん:2009/12/29(火) 15:59:07
> FindFirstFiles FindNextFiles
そのようなAPIはWindowsには存在しないため、スレ違いです
641デフォルトの名無しさん:2009/12/29(火) 15:59:42
>>638
argcのチェック?そんなもんでいちいち指摘してたら2chにコードなんかかけないだろ。
行数の制限があるのに。
642デフォルトの名無しさん:2009/12/29(火) 16:01:34
スマンコ
FindExisitingFile
FindOtherExistingFile
だた
643デフォルトの名無しさん:2009/12/29(火) 16:05:35
>>641
本気で言ってるならVBでも使ってなさいとアドバイスしておこう。
644デフォルトの名無しさん:2009/12/29(火) 16:10:21
645デフォルトの名無しさん:2009/12/29(火) 16:13:06
>>639
FindFirstFileとかを使っても、その時点でファイル名が使用されていないか
わかるだけ。
そのファイルを作る前に、別プロセスが同じことをした場合はそのプロセス
が作ったファイルを上書きしてしまう可能性がある。
CreateFileのCREATE_NEWパラメータ指定での実行で早いもの勝ち方式

2つの別表記が同一ファイルかのチェックは、そのファイルを読み書きロック
条件のもとで同時に開けるかでチェックするといいんではないかと...
別プロセスが偶然、一方を読み書きロックで開いていた場合は結果は不正確
だが...
646デフォルトの名無しさん:2009/12/29(火) 16:13:30
MAX_PATH+1?
647デフォルトの名無しさん:2009/12/29(火) 16:16:00
>>644
あいにくこれはもうこれ以上大きくならないから没
648デフォルトの名無しさん:2009/12/29(火) 16:18:40
>>647
おまえぶっ飛ばすぞ
649デフォルトの名無しさん:2009/12/29(火) 16:19:56
とりあえずメモリ確保に失敗するケースを想定しないコードは糞。
次のように返値がNULLかどうかをきちんとチェックしてこそ安全なコードと云える。
これを出来ないプログラマーがC/C++を使う資格は無い。

DWORD* DIB32_SafeAlloc(DWORD width,DWORD height,DWORD color)
{
 DWORD* p = (DWORD*)malloc(width*height*4);
 if(p)
 {
  DWORD* q = p+width*height;
  while(p<q) *p++ = color;
 }
 return(p);
}
650デフォルトの名無しさん:2009/12/29(火) 16:20:46
^^;
651デフォルトの名無しさん:2009/12/29(火) 16:21:56
>>645
> そのファイルを作る前に、別プロセスが同じことをした場合はそのプロセス
> が作ったファイルを上書きしてしまう可能性がある。
とか細かいことは言うくせに、他のプロセスがファイルをロックしてる可能性は考えないの?
それとも先に開くパターンを入れ替えて試すわけ?
652デフォルトの名無しさん:2009/12/29(火) 16:22:04
>>649
IEとかチェックしてなさそうだよなぁwww
653デフォルトの名無しさん:2009/12/29(火) 16:25:26
>>651
他のプロセスがファイルをロックしていればそもそも上書きしてしまう可能性すら無いから干渉しないだろ
バカかお前
654デフォルトの名無しさん:2009/12/29(火) 16:30:39
>>653
表記の話をしてるのか開けるかの話をしてるのか、どっち?

表記の話だったなら、俺は全てDOSパス名に変換して文字列一致の判定をすれば、
あとはファイル名だけなんとかすればいいと思うんだけど。
655デフォルトの名無しさん:2009/12/29(火) 16:37:39
共有資源に対してチェックなんて行為がそもそも無意味なんだよ
そんな事も分からんのか
656デフォルトの名無しさん:2009/12/29(火) 16:39:44
   ___    クルッ…   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  / || ̄ ̄|| <⌒ヽ ))  < >>655 はてさて、
  |  ||__|| <  丿    | どこを縦に読みゃいいんだ?
  | ̄ ̄\三⊂/ ̄ ̄ ̄/  \___________
  |    | ( ./     /
657デフォルトの名無しさん:2009/12/29(火) 16:40:08
WindowsServer配下のLAN環境ではDFSであることが普通で
「同一ファイル」が複数の名称を持ち得る。
別の名前のファイルの操作が別の名前のファイルに干渉することを
防ぐ手段は無い。
2つ以上のファイルが「同一ファイル」であるか否かを確実に
検出する方法は例えあったとしても非公開だろ。無い可能性も高いし。
それが嫌ならWindowsを使うなって話にもなるかも。
ハードリンクとかもあるし。ハードリンクを考えると
Unixとかでも実は同様で、そもそもからしてファイルシステムは
メモリと同様、情報の一時記憶領域でしかないんで、情報の半永久
保存を目的とするんだったら、RDBとかの別のミドルウェアを
援用してシステムに応じてそれぞれ工夫しろってのが常識だろ。
658デフォルトの名無しさん:2009/12/29(火) 16:43:47
そんな常識を何を長々と講釈垂れてるんだ?
659デフォルトの名無しさん:2009/12/29(火) 16:46:23
天狗になりたいお年頃
660デフォルトの名無しさん:2009/12/29(火) 16:47:51
> 2つ以上のファイルが「同一ファイル」であるか否かを確実に
> 検出する方法は例えあったとしても非公開だろ。無い可能性も高いし。

普通に公開されてるんですが、バカですか?
661デフォルトの名無しさん:2009/12/29(火) 16:48:01
常識が長すぎるだろJK
662デフォルトの名無しさん:2009/12/29(火) 16:52:36
MAX_PATH問題に関しては俺はこのスレで過去何度も激論を交わした兵だぜ
663デフォルトの名無しさん:2009/12/29(火) 16:54:24
結論は?
664デフォルトの名無しさん:2009/12/29(火) 16:59:47
MAX_PATHを超える可能性がある場合はバッファオーバーランに気をつける。
strcpyの代わりにstrcpy_s、std::stringを使うなど。
665デフォルトの名無しさん:2009/12/29(火) 17:07:37
可能性がある場合はとか考えずに、全ての場合にstrcpy_sを使え。
666デフォルトの名無しさん:2009/12/29(火) 17:11:26
確実に信頼できる場合はstrcpyを使った方が何百倍も速いでしょ
667デフォルトの名無しさん:2009/12/29(火) 17:13:03
>>649
全然Safeでは無いんだが
誰も指摘しないのはさすがレベルの低いプログラマが集うスレってことか
668デフォルトの名無しさん:2009/12/29(火) 17:25:06
.NETならオーバーランとかMAX_PATHとか気にしなくていいのに頭悪い人達だぁよ
669デフォルトの名無しさん:2009/12/29(火) 17:27:48
>>668
System.IO.PathTooLongException
指定したパス、ファイル名、またはその両方がシステム定義の最大長を超えています。
たとえば、Windows ベースのプラットフォームの場合、パスの長さは 248 文字未満、ファイル名の長さは 260 文字未満である必要があります。
670デフォルトの名無しさん:2009/12/29(火) 17:28:59
>>649
ちょw
671デフォルトの名無しさん:2009/12/29(火) 17:29:50
ワラタ
672デフォルトの名無しさん:2009/12/29(火) 17:31:13
>>669
.NETでこうってことはAPI直す気ないんだよね多分
673デフォルトの名無しさん:2009/12/29(火) 17:33:48
>>669
CLRが例外を投げてくれるのでプログラマがMAX_PATHを意識する必要は無いってことですよ
674デフォルトの名無しさん:2009/12/29(火) 17:34:20
.NETでMAX_PATHを無視してバンバン作られると問題になりそうだから仕方なくね?
675デフォルトの名無しさん:2009/12/29(火) 17:37:40
APIにMAX_PATHの制限があるのだからプログラマはそれに従っとけばいいだけ
仮に2^31文字までのパス長に対応したexNTFSなるファイルシステムが出来たとしても
どうせAPI経由ではMAX_PATHの制限が付きまとうのは変わらない
676デフォルトの名無しさん:2009/12/29(火) 17:38:39
> APIにMAX_PATHの制限があるのだから

そんな制限ないから。
677デフォルトの名無しさん:2009/12/29(火) 17:40:04
WIN32_FIND_DATA::cFileNameがMAX_PATHってことは
MAX_PATHを超えるファイルは列挙されないんじゃないの?
678デフォルトの名無しさん:2009/12/29(火) 17:40:22
.NETではMAX_PATHを超えるパスを扱えない欠陥商品しか作れないんだな
679デフォルトの名無しさん:2009/12/29(火) 17:40:39
>>673
例外をキャッチするなら手間割いてる訳で、結局気にしてることになるんじゃね
680デフォルトの名無しさん:2009/12/29(火) 17:44:09
長いパスに対応する必要があるのはマルウェア対策ソフトぐらいだろ。
そういう目的の為に一部のAPIが例外的に長いパスに対応してるだけで一般のアプリが使う物ではない。
681デフォルトの名無しさん:2009/12/29(火) 17:45:00
APIでも欠陥商品しか作れないのは変わらんがな…。
682デフォルトの名無しさん:2009/12/29(火) 17:47:03
そういう>>678はMAX_PATHを超えるパスを柔軟に扱える優良商品ばかり作ってるんだろうな?
683デフォルトの名無しさん:2009/12/29(火) 17:50:11
MAX_PATHを叩いてる俺カコイイとか思ってる糞餓鬼だろ。
684デフォルトの名無しさん:2009/12/29(火) 17:53:01
ファイル名は8.3で全部ルートに
685デフォルトの名無しさん:2009/12/29(火) 19:52:21
>>660
どうか、その関数を教えて下さいな。
この星の上にあるWindowsマシンたちがかつて作ったファイル(テンポラリを含め)
すべてに一意連番が振られでもしてない限り不可能な筈なんだけど
686デフォルトの名無しさん:2009/12/29(火) 19:57:21
GetFinalPathNameByHandleだろ
687デフォルトの名無しさん:2009/12/29(火) 19:57:48
知ってるがお前の態度が気に入らない
688デフォルトの名無しさん:2009/12/29(火) 19:59:55
> この星の上にあるWindowsマシンたちがかつて作ったファイル(テンポラリを含め)
> すべてに一意連番が振られでもしてない限り不可能な筈

なんで?
689デフォルトの名無しさん:2009/12/29(火) 20:01:23
レス検索しろよクズ
690デフォルトの名無しさん:2009/12/29(火) 20:01:28
例え方から低脳振りが滲み出てるね
僻み入ってくるとなんでこうなるんだ?
691デフォルトの名無しさん:2009/12/29(火) 20:02:38
この星の上にあるWindowsマシンたち(笑)
692デフォルトの名無しさん:2009/12/29(火) 20:16:03
オラに1クロックずつ時間を分けてくれ〜みたいなw
693デフォルトの名無しさん:2009/12/29(火) 20:17:27
>>1-1000
どうか、その関数を教えて下さいな。
この星の上にあるWindowsマシンたちがかつて作ったファイル(テンポラリを含め)
すべてに一意連番が振られでもしてない限り不可能な筈なんだけど
694693:2009/12/29(火) 20:18:18
自己解決しました
695デフォルトの名無しさん:2009/12/29(火) 20:20:21
>この星の上にあるWindowsマシンたち

カッコいいじゃん
凡庸な文しか書けないくせに馬鹿にすんなよ
696デフォルトの名無しさん:2009/12/29(火) 20:22:39
>>692
ちょっとクスっと来たww。
697デフォルトの名無しさん:2009/12/29(火) 20:25:13
お前らよく読め。

この星の上にある(全ての)Windowsマシンたちがかつて作った(全ての)ファイル(今は無きファイルも含む)

から同一ファイルを探したいってことだろ。
さあ早く>>685に関数を教えるんだ。
698デフォルトの名無しさん:2009/12/29(火) 20:27:48
>>697
自演で援護かいおめでてーな
699デフォルトの名無しさん:2009/12/29(火) 20:27:54
                                      ;;,,r='';;;;;;;;;;;;;`;;";;;
                                    ,,rイ;;;;;;;;;;;;;;;;;;;;;;;;Ξ;;;;;
                                   i;;;,=i;;;;;;;;;;;;彡;;;;;;;;;;;;=;;
       、、_  ,;;_,,                        / t;;;;;;;;;;;;;;ノノ;;;;;;;こ;;;;
     ,,.ィ`;;;;;`~´;;;;;;ニ、、                   /   ヽ;;;;;;≡;;;;;;;;;;;ヾ;;;;
     ,i´;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::`ヽ、                レ^ヽ   l;;;;;;;;;;;;;;'''';;;;;;;ミ
   ,/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ノミミ;;;;;;l、                 (_,,;-、   );;/´`i;ミ`i;;;;;;
   ノ;r''t;;;;;;;:::::;;;;;;;;;ー;;レ'ー';;;;;;;;),                 )i)ノ   ノノ б);;;;;;;;;;;ミ
  彳し,,=,,ィ'";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;レ'               ,ノ ~    ノ 、 ,/ノ;;;;;ミミ;
   t;;n;:;;;;ィ:;j'ノノl;;tゝt''_,;=ヽノ、               `ーj         `l ~t(;、;;;;;
    ヽ;、;ノ_i」,__、`i ゝノ,-;‐、,j ,l アンタじゃ無理だ        `ー=、      j、   );;;
    tヽ <'`ー'イ ,,, ゝ‐''" ノイ                        ヾ~´   ノ i、 ,,ノ/;;;
     ゝ、.  ̄´  (冫.  ノl      _,,;=-‐‐-、   ,-‐-'"^ヾ`l   /  ヽ  イノ
      lヽ、  ,;:'"`> ノ .lー-=、_ / |ノ   >ィ`ー、_-ヽ `tゝ=''T")   `i、
     _,,ィt, `t、` ̄´/l  ヽ   T"     /~>-‐-、rヽヽrヽ   | j----、、 _,,..ィ
   /j  :l   `'=='"      ,ノ     ,,(,イ´   ``^'''"´   l l __  7'
-tー'" i'  ノ   ヽ、    _,,;=''"_,,.;:    /              ll   `ヽ/
 |  `ー―--==、_ヽ ,,,.ィ'"´  ´  、 ,, /     ,/'         l.     j   /
700デフォルトの名無しさん:2009/12/29(火) 20:29:58
FindFirstFileInAllWindowsComputersOnThePlanet
FindNextFileInAllWindowsComputersOnThePlanet
701685:2009/12/29(火) 20:31:56
結局誰も答えられないようですね。

これにて  論  破  完  了
702デフォルトの名無しさん:2009/12/29(火) 20:36:15
         ____   
       / \  /\ キリッ
.     / (ー)  (ー)\      
    /   ⌒(__人__)⌒ \    <結局誰も答えられないようですね。
    |      |r┬-|    |      これにて  論  破  完  了
     \     `ー'´   /
    ノ            \
  /´               ヽ              
 |    l              \
 ヽ    -一''''''"〜〜``'ー--、   -一'''''''ー-、.    
  ヽ ____(⌒)(⌒)⌒) )  (⌒_(⌒)⌒)⌒))
703デフォルトの名無しさん:2009/12/29(火) 20:40:10
GetFinalPathNameByHandleで取得したパス名が一致してないから
ファイルは別なんだ...??
704デフォルトの名無しさん:2009/12/29(火) 20:41:22
2009年度MVP (Most ヴァカ Programmer)

>>639=>>657=>>685
705デフォルトの名無しさん:2009/12/29(火) 20:46:06
スパさんみたいだな
706デフォルトの名無しさん:2009/12/29(火) 20:48:09
>>685に答えられない低脳の馬鹿共が煽ってるだけか
冬だなぁ…
707デフォルトの名無しさん:2009/12/29(火) 20:48:42
>>703
限らんよ。ハードリンクの場合は、それぞれの名前が返されるだけ。
同一であるか検証は無理っぽ。ユーザーが名前の大文字小文字とか
を適当に修正して推測するしかない。
708デフォルトの名無しさん:2009/12/29(火) 20:49:21
>>706
自演で援護かいおめでてーな
709デフォルトの名無しさん:2009/12/29(火) 20:52:46
>>707
FindFirstFileNameW/FindNextFileNameWで調べればいいだろ
GetFinalPathNameByHandleが最初に出てきたレスを読め馬鹿
710デフォルトの名無しさん:2009/12/29(火) 20:54:09
>>685=>>707
こいつ本当にバカだな
711デフォルトの名無しさん:2009/12/29(火) 20:57:32
馬鹿の大盤振る舞い
712デフォルトの名無しさん:2009/12/29(火) 20:58:17
この星の上にあるWindowsマシンたちの過半数を占めるXPで使えないので却下

とか言ってきそうだなw
713デフォルトの名無しさん:2009/12/29(火) 21:22:40
もうだめだこのスレ
714デフォルトの名無しさん:2009/12/29(火) 21:29:38
DFS上でソフトリンクされているファイルのローカル名称がわかる
システムはある意味怖いw(セキュリティゼロ)
ってことで、2つのファイル名の遡源を取得して同一かどうか比較する
方法はすべてボツ
715デフォルトの名無しさん:2009/12/29(火) 21:41:09
最後まで反論しないと気が済まないんだねぇ
そういやぁ少し前にもそういう奴いたなぁwww 同一人物かな?
716デフォルトの名無しさん:2009/12/29(火) 21:46:34
いままで散々ハードリンクの話をしてたくせに
論破されたら突然ソフトリンクに話をすり替え

さすがだな
MVPの底力を改めて実感したよ
717デフォルトの名無しさん:2009/12/29(火) 21:50:35
>>639=>>657=>>685=>>707=>>714

「すべてボツ」
だっておwwwwww
718デフォルトの名無しさん:2009/12/29(火) 21:55:53
dfsでソフトリンクのローカル名称がわからなかったらどうやって解決すんだよ。
719デフォルトの名無しさん:2009/12/29(火) 21:56:41
将来のNTFSではCopyの意味も相当変わりそうだし
中途半端な今のシステムでの今回の話は将来大きく
変わりそうな予感。なんで深入りしないほうが吉かと。
720デフォルトの名無しさん:2009/12/29(火) 21:56:53
後出しジャンケンでもいい、何が何でも勝ちたいんだ!
プライドもへったくれもない奴
721デフォルトの名無しさん:2009/12/29(火) 21:58:42
>>718
権限ってご存知?
権限が無ければ実ファイルシステムの実体が見えないわけで...
722デフォルトの名無しさん:2009/12/29(火) 22:00:07
こいつは今は亡きWinFS厨だな。
723デフォルトの名無しさん:2009/12/29(火) 22:01:06
後出しジャンケンできるよう、「かも」「とか」を多用し、幾通りもの解釈が可能となるよう曖昧な長文を書き連ねる。
でも所詮はググって得た知識を継ぎ接ぎしてるだけ。レス間隔が開いてる時間は検索中。
文章から察するに三流大学の学生か専門学校生じゃないかな。
724デフォルトの名無しさん:2009/12/29(火) 22:03:18
で、ハードリンクの話はどこ行ったんだ?
725デフォルトの名無しさん:2009/12/29(火) 22:08:18
突然論点すり替えてすべてボツですか^^;
726デフォルトの名無しさん:2009/12/29(火) 22:08:33
結論:ファイル仮想化レイヤーが無かったDOSの頃はヨカタけど戻れない
今の仮想化レイヤーは中途半端でムカツく
727デフォルトの名無しさん:2009/12/29(火) 22:08:45
>>721
それほどサーバー間をタイトにつないでるdfsってどの実装だよ。
728デフォルトの名無しさん:2009/12/29(火) 22:10:39
>>726
いや誰もそんな話はしてないから。論点のすり替えばっかだね。
729デフォルトの名無しさん:2009/12/29(火) 22:13:19
>>707で観念しとけば良かったものを・・・
730デフォルトの名無しさん:2009/12/29(火) 22:17:04
>>727
君に付いている奴だよ。重さ2kgくらいかな。殆どが灰色で白く硬いケースに
入ってるんじゃないかと
>>728
いやファイルシステムの仮想化が中途半端なんで、名前空間レベルでの
慣習的、非法則的同一視が行われる結果、複数の名称が同一ファイルに
マップされる事態が発生して困っている人が居るって話だろ
731デフォルトの名無しさん:2009/12/29(火) 22:17:52
自分に都合の悪いことは一切見えないんだな
732デフォルトの名無しさん:2009/12/29(火) 22:19:38
>>730
だから、誰もそんな話してないって
733デフォルトの名無しさん:2009/12/29(火) 22:21:37
ファイルに対して複数のパスを持てる機能がハードリンクなのに何が仮想化なんだ?
734デフォルトの名無しさん:2009/12/29(火) 22:21:59
さすがMVP
735デフォルトの名無しさん:2009/12/29(火) 22:24:22
自己解決しました
736デフォルトの名無しさん:2009/12/29(火) 22:26:08
>>733
DOS時代の独立した記憶ストリームの名前という位置づけから
マスターとトランザクション(差分)たちに関連付けられた
名前という地位の転換のことを仮想化と呼ぶね
しかしAPIとは合わなそうw
DOSとも合わなかったけどねw
737デフォルトの名無しさん:2009/12/29(火) 22:26:34
どうせまた10分後ぐらいに新しい用語を引っ提げて戻ってくるだろ
738デフォルトの名無しさん:2009/12/29(火) 22:28:36
要するにAPIは過渡期の仕様
739デフォルトの名無しさん:2009/12/29(火) 22:29:13
>>736
なんかもう日本語が崩壊してしまって何が言いたいのか全く分からん
誰か翻訳してくれ
740デフォルトの名無しさん:2009/12/29(火) 22:53:34
>>738
何?APIが守旧派だって、自民党みたいだなw
何?.NETが改革派だって、民主党みたいだなw
741デフォルトの名無しさん:2009/12/29(火) 23:06:03
.NETも結局API引き継いでるから改革でもなんでもない
742デフォルトの名無しさん:2009/12/29(火) 23:14:38
>>738
DOS時代に投入されたAPIが総じてその時代水準に比して
優れ過ぎていたから、その次の次の時代がいち早く来て
しまって結果的に過渡期の仕様と言われるようになった
んじゃないかと...(その殆どは未消化の状態でお蔵入り)
743デフォルトの名無しさん:2009/12/29(火) 23:18:09
DOSとかどうでもいいから

同じ実体を指すかどうか、複数のパスから参照されているかを意識しなくともアクセスできるのがハードリンクなのに
MVPだけあって何も分かってないみたいだな
744デフォルトの名無しさん:2009/12/29(火) 23:24:59
> 複数の名称が同一ファイルにマップされる事態が発生
この文章でこいつがハードリンクを理解してないのは読み取れた
745デフォルトの名無しさん:2009/12/29(火) 23:29:16
この星の上にあるWindowsマシンたちにワロタw
これはもうネタスレだYO!
746デフォルトの名無しさん:2009/12/29(火) 23:32:33
>>744
C:¥Windows¥AhoBaka.txt
C:¥Windows¥ahobaka.txt
は文字列としては異なるファイル名だが
ファイルとしては同じだろ
747デフォルトの名無しさん:2009/12/29(火) 23:36:11
>>746
>ファイルとしては同じ
違う。パスが同じ。
パスとファイルの区別も付かんのか?
748デフォルトの名無しさん:2009/12/29(火) 23:44:50
> 文字列としては異なるファイル名
ハードリンクどころかファイルシステムをも理解してない事が判明
749デフォルトの名無しさん:2009/12/29(火) 23:48:53
自己解決しました
750デフォルトの名無しさん:2009/12/29(火) 23:51:17
パス
ファイル
ファイル名

これらの違いを全く分かってないやつがハードリンクを語ってたのかよ
どうりで話が噛み合わない訳だw
751デフォルトの名無しさん:2009/12/29(火) 23:54:31
>>750
おいおい
パス名を忘れてるぞ
あと
ストリームとか
シンボリックリンクとか
ショートカットとかも関連してくるな
他にもありそ
752デフォルトの名無しさん:2009/12/30(水) 00:02:44
パスとパス名は同じ意味でしょうが
ファイルとファイル名ほどの違いはない

しかもショートカットみたいなアプリレベルの代物を持ち出すなよ
つくづく何も分かってないアホだなぁ
753デフォルトの名無しさん:2009/12/30(水) 00:05:53
c:\autoexec.bat <- パス
autoexec.bat <- ファイル名
↑が示すファイルそのもの <- ファイル

でいいの?
754デフォルトの名無しさん:2009/12/30(水) 00:06:28
MVPですから
755デフォルトの名無しさん:2009/12/30(水) 00:06:52
パスとパス名が同じ意味に解釈出来る人ってつくづく
幸せなコンピュータライフを贈ってきた人だとオモ
経験値が伺えますなw
756デフォルトの名無しさん:2009/12/30(水) 00:07:08
>>746
何一つ正解と言える部分が無いんだが、お前本当にプログラマか?
757デフォルトの名無しさん:2009/12/30(水) 00:08:34
笑い納めだなこりゃあ
758デフォルトの名無しさん:2009/12/30(水) 00:09:44
>>755
どう違うのか教えてよ。
759デフォルトの名無しさん:2009/12/30(水) 00:12:29
760デフォルトの名無しさん:2009/12/30(水) 00:14:46
だって同じ物だし。
761756:2009/12/30(水) 00:15:21
代わりに答えてあげます
2つのファイル名を表す文字列のパスが同じとは、それぞれの
先頭から見て同じ文字列が幾つか続いていて同じ部分が¥
で終わっている場合、2つのファイル名は同一パスに
あると言いますね。同一ディレクトリにあるとまでは
言えないです。ハイ。同じパスに無くても同一ディレクトリ
のファイルかも知れませんよ。
パス名とは、ファイル名が¥を含む文字列の場合を言います。
全然違うでしょ?
762デフォルトの名無しさん:2009/12/30(水) 00:17:12
他人を騙ってもその間の抜けた文章でバレバレだから。
763デフォルトの名無しさん:2009/12/30(水) 00:18:14
> 2つのファイル名を表す文字列のパスが同じ
そもそもこんな言葉使わねーよ
764デフォルトの名無しさん:2009/12/30(水) 00:18:41
相変わらず何も分かってねぇwww
765デフォルトの名無しさん:2009/12/30(水) 00:18:45
もう何を行ってるのか分からない
766デフォルトの名無しさん:2009/12/30(水) 00:19:45
日本語で書いてくれるとうれしいな。
767デフォルトの名無しさん:2009/12/30(水) 00:20:20
もう喋らなくていいよ
お前がMVPだ
768デフォルトの名無しさん:2009/12/30(水) 00:20:43
ファイルのパスってなぁに?
769デフォルトの名無しさん:2009/12/30(水) 00:23:45
パスはただの場所であってファイル名を含まないの?
770デフォルトの名無しさん:2009/12/30(水) 00:24:10
しかしまぁ、面白い奴が住み着いたなw
771デフォルトの名無しさん:2009/12/30(水) 00:26:39
http://msdn.microsoft.com/ja-jp/library/system.io.path(VS.80).aspx

|| パスとは、ファイルまたはディレクトリの位置を示す文字列です。

MS的には含むこともあるらしいよ。
772デフォルトの名無しさん:2009/12/30(水) 00:26:53
そもそも¥じゃなくてバックスラッシュだろ
773デフォルトの名無しさん:2009/12/30(水) 00:28:09
ウリはウォン記号ニダ
774デフォルトの名無しさん:2009/12/30(水) 00:30:54
.NETとAPIの間でそういった概念が統一が取れてると思い込まない
であげるほうが親切というものです。
775デフォルトの名無しさん:2009/12/30(水) 00:31:39
だから日本語を書けと(ry
776デフォルトの名無しさん:2009/12/30(水) 00:35:14
まあ、このMVPがハードリンクを理解するのにあと3年は要するのがわかった
777デフォルトの名無しさん:2009/12/30(水) 00:35:15
http://msdn.microsoft.com/en-us/library/bb773621(VS.85).aspx

APIでも一緒だわな。ファイルを含まないなら、わざわざPathIsDirectoryなんて関数作らんし。
778デフォルトの名無しさん:2009/12/30(水) 00:37:53
MAX_PATH=3+256+1だっけ?
779デフォルトの名無しさん:2009/12/30(水) 00:39:51
MAX_PATH=255+sizeof(".")+3+sizeof("")
だろ
780デフォルトの名無しさん:2009/12/30(水) 00:41:40
MAX_PATH=260です!
781デフォルトの名無しさん:2009/12/30(水) 00:43:52
782デフォルトの名無しさん:2009/12/30(水) 00:52:45
あれぇ?MVPどっか行っちゃったね。
どうやらProgrammerじゃないみたいだし、Pigでいいか。
783デフォルトの名無しさん:2009/12/30(水) 00:57:59
今時自分がプログラマだなんて思っている人は一番
プログラムされちゃってるシトなのにさ
784デフォルトの名無しさん:2009/12/30(水) 01:06:14
なんだMVPまだいてるじゃんw
大好きな反論と論点すり替えはもうしないの?
785デフォルトの名無しさん:2009/12/30(水) 01:08:46
本日のMVPショーは終了しました。
次回のお越しをお待ちしております。
786デフォルトの名無しさん:2009/12/30(水) 01:12:06
プログラマは空論と論点隠蔽が専門ですが...何か?
787デフォルトの名無しさん:2009/12/30(水) 01:20:10
GetFinalPathNameByHandleは、ファイルが開けないことには使えない、ってのが痛いねぇ。
788デフォルトの名無しさん:2009/12/30(水) 01:25:59
FSCTL_GET_NTFS_FILE_RECORDを使って$MFTを直接読み取ればいいさ
789デフォルトの名無しさん:2009/12/30(水) 03:25:47
>>768
パスという言葉が使われだしたのはDOSとかUNIXのシェルとかの
環境変数PATHにちなむのではないかと思てる。
コマンドが与えられたときこの環境変数の値に入っているディレ
クトリ(複数)の下の実行可能ファイルを検索するという意味なのだが
そのへんのセンスで使われているケースが多いんじゃね?
だからパス名とは、ファイル名をルートからの階層表示で
表した時の最後の区切り子より前の部分というニュアンス
じゃないかと
790デフォルトの名無しさん:2009/12/30(水) 04:12:37
でも、ファイル名をフルパスでといった場合には・・
791デフォルトの名無しさん:2009/12/30(水) 04:18:32
..¥sample¥test¥hoge.txtのパス名は..¥sample¥test¥
だけど、これはフルパス(表示)じゃない
って感じじゃね?
792デフォルトの名無しさん:2009/12/30(水) 04:20:00
>>779
>sizeof(".")
>sizeof("")
ちょwww
793デフォルトの名無しさん:2009/12/30(水) 04:38:47
>>791
否定文による定義ってのは凄いなw

あるファイル表示がフルパス表示でないとは
先頭がルートフォルダーになっていないこと

これが本当なのかどうかは知らんが、PC用語の
定義ってのは難しすぎてゆーかその場しのぎ的
というか、いい加減ってか、結構荒んでるな。
少なくとも全員がしゃかりきになって覚えるべき用語
じゃないね。無理に覚えたりすると精神に障害を来すかもな
(にも関わらず会社に入ったら覚えさせられてしまう
ことが多かったりする)
794デフォルトの名無しさん:2009/12/30(水) 04:47:56
フルパスはWinだとドライブ名も入れないとダメだろう
ルートディレクトリから書かれててもどのドライブか書いてなければ
一意に決まらないしな。
795デフォルトの名無しさん:2009/12/30(水) 09:15:24
>>746
それですら(本来の)NTFS的には別ファイルだ。
http://support.microsoft.com/kb/817921

MVPすげーな。
796デフォルトの名無しさん:2009/12/30(水) 09:41:15
バージョンやマウントしているファイルシステム
によって違うみたいだな
結局いろいろとややこしいんで大文字と小文字は
区別されないと考えたほうが良さげ
というのは未だにあると思う
797デフォルトの名無しさん:2009/12/30(水) 09:49:49
区別しないでここまで来てしまったのだから、いまさら区別できない。というのがMSの判断。
セキュリティ的に問題有りまくりなのでXpからデフォルト禁止になった。
798デフォルトの名無しさん:2009/12/30(水) 10:12:46
ゴダゴダやってないで、早く
この星の上にあるWindowsマシンたちが納得できる答えを出してくれよ
799デフォルトの名無しさん:2009/12/30(水) 10:20:50
2つのファイル名が与えられたとき、それらのファイルに変更操作
を加えずに独立したストリームかどうかを判断する決定的方法はある?
についての答えなら既に出てるだろ?
800デフォルトの名無しさん:2009/12/30(水) 10:32:10
この話題で年をまたぐのかw
801デフォルトの名無しさん:2009/12/30(水) 10:35:01
おめーら、ソ連がアフガンに侵攻したってぇこの年の瀬に
なにくだらねぇ話してやがんでい
802デフォルトの名無しさん:2009/12/30(水) 11:00:06
NtQueryInformationFileでパス名からボリュームに一意なIDを取得できる。
終了。
803デフォルトの名無しさん:2009/12/30(水) 11:21:55
>>801
kwsk
804デフォルトの名無しさん:2009/12/30(水) 11:25:09
>>802
ネットワークファイルパスでもおkですか?
権限は影響しますか?
805デフォルトの名無しさん:2009/12/30(水) 11:55:30
>>804
反論があるなら、エントリポイント示してやったんだから自分で調べろ。
806デフォルトの名無しさん:2009/12/30(水) 12:18:16
NtQueryInformationFileなんか使わなくてもGetFileInformationByHandle(Ex)で出来るだろ馬鹿
807デフォルトの名無しさん:2009/12/30(水) 12:20:00
質問はすべて反論だと解釈する奇妙な奴w
808804:2009/12/30(水) 12:21:14
804!=806ね
すねないでね
809デフォルトの名無しさん:2009/12/30(水) 12:27:14
> これが本当なのかどうかは知らんが、PC用語の
> 定義ってのは難しすぎてゆーかその場しのぎ的
> というか、いい加減ってか、結構荒んでるな。
> 少なくとも全員がしゃかりきになって覚えるべき用語
> じゃないね。無理に覚えたりすると精神に障害を来すかもな
> (にも関わらず会社に入ったら覚えさせられてしまう
> ことが多かったりする)

出た、MVPの名言w
パスとファイルの違いわかってないヴァカのくせして偉そうにwww
810デフォルトの名無しさん:2009/12/30(水) 12:33:24
> この星の上にあるWindowsマシンたちがかつて作ったファイル(テンポラリを含め)
> すべてに一意連番が振られでもしてない限り不可能な筈なんだけど
一晩かかってこれの答えといえるNtQueryInformationFileに辿り着いたわけ?
>>595で正解出てるのにねぇ〜
811デフォルトの名無しさん:2009/12/30(水) 12:36:03
>>809
自作自演的な名言偉いでつね
812デフォルトの名無しさん:2009/12/30(水) 12:39:32
ボリュームの種類、権限の相違によらない一般的方法は無いんではないかと
1分間考えたらわかる結論が昨晩のうちに出たのではないかと思ってました
がまだAPIレベルで一発解決出来ると思ってらっしゃるのですね
813デフォルトの名無しさん:2009/12/30(水) 12:42:18
>>810
オレ、さっき参入したんだけど。一晩掛かってとか妄想癖の馬鹿?
814デフォルトの名無しさん:2009/12/30(水) 12:43:42
> 文字列としては異なるファイル名だがファイルとしては同じだろ
> 2つのファイル名を表す文字列のパスが同じ
> あるファイル表示がフルパス表示でないとは
> 先頭がルートフォルダーになっていないこと

よくもまぁこんな知識のかけらもない奴が用語の定義とか言えるねぇ
どういう神経してるんだろう
815デフォルトの名無しさん:2009/12/30(水) 12:45:03
暇ならお外で遊んできたら
816デフォルトの名無しさん:2009/12/30(水) 12:45:24
>>813
その話題は解決済ですのでお引き取りくださいね^^
817デフォルトの名無しさん:2009/12/30(水) 12:48:40
MVPまだいてるのかよ
てか24時間スレに粘着してるのか
818デフォルトの名無しさん:2009/12/30(水) 13:00:32
main()
{
 do
 {
  Post( 煽りレス );
 } while ( 反論してくる人数 > 0 );
 Brain( 論破完了 );
}

MVPの脳内はこんな感じだから。
反論する人が誰一人居なくなるまでスレから離れないつもりだろ。
819デフォルトの名無しさん:2009/12/30(水) 13:13:36
スレ内検索すればとっくに出てるのに
>>685
>この星の上にあるWindowsマシンたち
とか言っちゃって袋叩きにあって後に引けなくなり、
>>730でハードリンクを理解してないだけかと思ったら
>>746でパスを全く理解してないと判明し
>>761で日本語も満足に書けないと判明

普通ここまで赤っ恥かくと二度と来ないと思うんだけどなあ
820デフォルトの名無しさん:2009/12/30(水) 13:16:34
821デフォルトの名無しさん:2009/12/30(水) 13:18:53
権限についてもわかってないんだろうな・・・。
822デフォルトの名無しさん:2009/12/30(水) 13:27:17
ボリュームについてもわかってない可能性大
823デフォルトの名無しさん:2009/12/30(水) 13:28:14
ちょっと否定文を書いたらむきになってすべて否定文に
してくる人まね何とかには困ったものですなw
824デフォルトの名無しさん:2009/12/30(水) 13:34:54
>>799
もしかするとボリュームの種類や権限の相違によってうまくいかない場合も
あるかも知れませんが、多くの場合において
>>806さんや>>802さんが指摘されたように、幾つかのAPIを
援用すればわかる可能性が高いようです。
825デフォルトの名無しさん:2009/12/30(水) 13:39:02
ボリュームの種類(笑)
826デフォルトの名無しさん:2009/12/30(水) 13:45:55
権限の相違(笑)
827デフォルトの名無しさん:2009/12/30(水) 13:46:01
APIを援用(笑)
828デフォルトの名無しさん:2009/12/30(水) 13:49:29
肯定文にしたら一発で笑顔が戻ったようで何よりです
829デフォルトの名無しさん:2009/12/30(水) 13:56:28
また得意の論点逸らしか
830デフォルトの名無しさん:2009/12/30(水) 14:00:04
ボリュームや権限についてももよくわかってないみたいだね
無理に覚えたりすると精神に障害を来すとか言ってる向学心ゼロのクソガキなのはわかったけど
831デフォルトの名無しさん:2009/12/30(水) 14:05:36
鬱になるから正式マニュアルの厳密だが否定的文体など読まず、
解説書や参考書や雑誌の曖昧だが肯定的文体を読むようにしたら?
832デフォルトの名無しさん:2009/12/30(水) 14:11:04
曖昧な情報を継ぎ接ぎした結果が>>814だからなぁw
833デフォルトの名無しさん:2009/12/30(水) 14:18:02
>>793
> これが本当なのかどうかは知らんが
全くもって出鱈目です
834デフォルトの名無しさん:2009/12/30(水) 14:20:59
向学心ゼロってプログラマとしては致命的ではなかろうか
835デフォルトの名無しさん:2009/12/30(水) 14:29:54
向学心ゼロのほうが向いているって。向学心の多い俺はちょっと遠慮させて
もらってるけど
836デフォルトの名無しさん:2009/12/30(水) 14:38:45
>>835
Windowsは常に変化してるからな。理詰で最初に頭から覚え込んでしまう予習大好き
秀才タイプよりか
常に自分が現状に同期が取れてないかも知れないと頻繁に確認することを怠らない
復習勤勉タイプのほうが向いてるだろな
837デフォルトの名無しさん:2009/12/30(水) 14:40:33
>>793
この人、「定義」という用語もわかってなくね?
838デフォルトの名無しさん:2009/12/30(水) 14:45:34
>>836
あと言葉の端々に粘着するタイプもあんまし向いてないね。
要所要所は押さえる必要はあるが、あんまし将来を見通して
用語を定められない(余裕が無い)のがWindowsな世界なんで
矛盾が発生してる場合もあるけどそういうのを許容できるタイプ
じゃなきゃ辛いかもね
839デフォルトの名無しさん:2009/12/30(水) 14:49:35
>>836=>>838=MVP
復習勤勉タイプて
お前は単なる後出しジャンケンだろが
840デフォルトの名無しさん:2009/12/30(水) 14:52:12
>>836
ならば復習してるかテストだ。

【問題】
「パス」「パス名」「ファイル」「ファイル名」について日本語で説明せよ。
841デフォルトの名無しさん:2009/12/30(水) 14:53:13
模範解答をどうぞ>>MVP
842デフォルトの名無しさん:2009/12/30(水) 14:55:09
常に変化してるつってもパスやファイルといった基本的な用語は変化しない訳だが
843デフォルトの名無しさん:2009/12/30(水) 14:57:06
パス:定期券
パス名:定期券の名前:会社、路線、区間、期限、利用者氏名などで構成されてます
ファイル:オフィスのキャビネットに入ってます
ファイル名:(オフィスのキャビネットに入っている)ファイルの名前
844デフォルトの名無しさん:2009/12/30(水) 14:58:54
なんだ復習もしてないのか
さすがMVP
845デフォルトの名無しさん:2009/12/30(水) 15:00:18
> ファイル:オフィスのキャビネットに入ってます
説明になってねぇwwwwやっぱアホだこいつwww

りんご:スーパーに売ってます
ってか
846デフォルトの名無しさん:2009/12/30(水) 15:05:52
ファイル:タイトルシールが2つ以上貼ってある場合があります。タイトルだけで
別のファイルであると即断してはいけません。
847デフォルトの名無しさん:2009/12/30(水) 15:10:36
ファイルに名前を付けるなんて、、、擬人化もこkまできたか
848デフォルトの名無しさん:2009/12/30(水) 15:24:38
>>846
APIでファイル名じゃなくタイトル名にアクセスできるの?
それともタイトル名=ファイル名ってこと?
849デフォルトの名無しさん:2009/12/30(水) 15:33:01
おまいらいいかげんにしろ!
850デフォルトの名無しさん:2009/12/30(水) 15:33:32
>>848

>>843のキャビネットに入ってるファイルのことだぜ
851デフォルトの名無しさん:2009/12/30(水) 15:35:30
じゃあ、>>843はファイルに名前をつけて呼んでるの?キモッ
852デフォルトの名無しさん:2009/12/30(水) 15:46:56
この流れなら聞ける

ディレクトリとフォルダの違いについて教えて下され
853デフォルトの名無しさん:2009/12/30(水) 15:49:51
>>852
スレ違いですので他所へどうぞ
854デフォルトの名無しさん:2009/12/30(水) 15:52:24
>>852
フォルダー:エクスプローラーの左ペイン
ディレクトリー:treeコマンド

さよなら
855デフォルトの名無しさん:2009/12/30(水) 17:03:23
>>845
>りんご:スーパーに売ってます

さかなは切り身で泳いでるわけではないよ?
856デフォルトの名無しさん:2009/12/30(水) 17:05:28
>>852
フォルダ:
書類をまとめて整理するための文房具で、ファイルともいう。

ソースはういきぺでぃあ
857デフォルトの名無しさん:2009/12/30(水) 17:13:32
なぁ〜んだ、答えられなくて逃げちゃったのか
どこまでも間抜けな奴
858デフォルトの名無しさん:2009/12/30(水) 17:53:07
folder
directory
859デフォルトの名無しさん:2009/12/30(水) 18:01:25
フォルダはwindows系でディレクトリはUNIX系ってだけじゃないの?
860デフォルトの名無しさん:2009/12/30(水) 18:11:30
>>859
Win32APIにはCreateDirectory()とかがあるんだが
861デフォルトの名無しさん:2009/12/30(水) 18:11:46
もともとフォルダはMac系・・・
862デフォルトの名無しさん:2009/12/30(水) 18:15:55
MVPお得意の論点すり替えが見事に成功したようですね^^
863デフォルトの名無しさん:2009/12/30(水) 18:36:38
フォルダーはエクスプローラ系だろ
ディレクトリとは似ていて微妙に違うと
いった程度。エクスプローラ独自の解釈の
ディレクトリ世界って感じ
864デフォルトの名無しさん:2009/12/30(水) 18:43:38
>>863
全然違うよ
865デフォルトの名無しさん:2009/12/30(水) 18:52:07
昔のWindowsではマイコンピュータがルートフォルダーでその下にC:ドライブや
マイドキュメントがあったりとかしてたし
マイドキュメントは一つのディレクトリで大抵C:ドライブの下のあるディレクトリ
だったのをエクスプローラが独自のフォルダー空間にマップする時にルートフォルダー
直下に置いたものだった 他にも似たような特殊ディレクトリがあったっけ
もしかして今でもそうだろうけど。変わっているかも
866デフォルトの名無しさん:2009/12/30(水) 19:10:55
> 昔のWindowsではマイコンピュータがルートフォルダーでその下にC:ドライブや
> マイドキュメントがあったりとかしてたし
ねーよ
867デフォルトの名無しさん:2009/12/30(水) 19:14:44
フォルダのルートがデスクトップなのはフォルダが登場したWin95以来変わってない訳だが
868デフォルトの名無しさん:2009/12/30(水) 19:16:52
パスとファイルとファイル名を区別できなかった馬鹿が
今夜はフォルダとディレクトリについて存分に語ってくれそうだw
869デフォルトの名無しさん:2009/12/30(水) 19:39:28
マイコンピュータが最も特殊なフォルダーで、対応するディレクトリが無いのが
特徴だ(った)ね
以上APIとは関係が薄いので、終了
870デフォルトの名無しさん:2009/12/30(水) 19:44:02
他のアプリにPostMessageしたあとに、処理されたかどうかを知る方法はありますか?

タブの選択を変えたくてPostMessageでWM_NOTIFYのTCN_SELCHANGEとかを送っています
このためVirtualAllocExで対象のプロセスのメモリを確保しています
何も考えずに最後にVirtualFreeExをしてしまうと
メッセージが処理される前に解放してしまうことがあるようで例外がでることがあります。
解放せずにそのままにしておき毎回そこを使うようにするしかないのでしょうか?
871デフォルトの名無しさん:2009/12/30(水) 19:58:10
>>869
特殊でもなんでもない
マイネットワーク、ごみ箱、コントロールパネルやデスクトップ“フォルダ”にも対応するディレクトリは無い
こんな事はシェル名前空間を理解していれば常識の範囲内です
872デフォルトの名無しさん:2009/12/30(水) 20:27:14
>>870
タブが切り替わったか確認するくらいしかないんじゃね?
873デフォルトの名無しさん:2009/12/30(水) 20:50:00
そもそもWM_NOTIFYってPostMessageできるのか?
構造体のアドレスを渡すシステム定義のメッセージはPostMessageが失敗するようになってたはずだが
874デフォルトの名無しさん:2009/12/30(水) 20:59:48
WM_CREATE/WM_?ETTEXTなどはERROR_MESSAGE_SYNC_ONLYで失敗するが
WM_NOTIFYだけは特例として失敗しない。
だからといってWM_NOTIFYをPostMessageしても良いという理由にはならないので
SendMessageで送信しなさい。
875デフォルトの名無しさん:2009/12/30(水) 21:04:34
>>872
やっぱりないですかね。
切り替わったかどうかを読み取るのも微妙な気がするので、悩んでみます。
どうせ自分用アプリなので深くは気にしていないのですが。
ありがとうございました。

>>873
SendMessageだと全く受け取ってくれませんでしたが、PostMessageだと受け取ってくれます。
ずっとSendMessageでやっててなんで動かないのか悩みまくっていたのですが
ググり直してPostMessageに変えたらあっさり動いてくれました。
ですが今度は別の問題が出てきたというわけです。
876デフォルトの名無しさん:2009/12/30(水) 21:23:16
SendMessageすべきメッセージで動かないなんて有り得ないでしょうが
君の書いたコードが間違ってるんじゃないの?
877デフォルトの名無しさん:2009/12/30(水) 21:27:17
タブの選択を変えるぐらいならUI Automationで出来るだろ
878870:2009/12/31(木) 00:32:31
>>876
動かしたい別アプリに似せたテスト用のプログラムを作り確認したのですが
正確に言うと動かないのではなく、SendMessageだとWM_NOTIFYそのものが来ないのです
テスト用プログラムで、メモリの取得とかを省いた同じ流れのコードで自分自身に送ってみると問題なく動きました
そこで調べたところ過去ログのBuild76の986-996に全く同じ状況の方がいたのでPostMessageにしたのです

>>877
自動テストには興味がなかったので全く知らない手法でした
選択したいタブの取得に若干手こずりましたがうまくいきそうです
C#で組んでいるので逆に助かりました
大きなヒントをありがとうございました
879デフォルトの名無しさん:2009/12/31(木) 01:19:44
>>870
お前、なんていう名のアプリ作ってんの?
オレの周りに、ヘッポコが作っているから、絶対に使うなと指令だすから是非教えろ。
880870:2009/12/31(木) 01:26:05
自己解決しました。
881デフォルトの名無しさん:2009/12/31(木) 01:27:22
UIAって知名度低すぎるよなー
まあこの種の掲示板でVirtualAllocExを使ってゴニョゴニョするような
阿呆な回答しかできないヘボプログラマーが多いのが最大の理由だろうけど
882デフォルトの名無しさん:2009/12/31(木) 02:05:50
つーかWindowsでは異端だがJava辺りでIPCはテキストファイル経由って感じの
プロトタイプアプリを作ってから、VB.NETとかC#に移植してもう少しプラット
フォームの実情に即したものにして、最終的にVCで書き直すって俺の常套手段
的なやりかたは迂遠?
883デフォルトの名無しさん:2009/12/31(木) 02:38:49
Javaは知らんが、Win32や.NETでわざわざファイルを経由するなんて馬鹿の極み
884デフォルトの名無しさん:2009/12/31(木) 03:52:09
>>882
VBとかC#が出てくる理由がわからん
885デフォルトの名無しさん:2009/12/31(木) 04:12:55
>>881
UIAutomationはXP用.NETの一部として提供されたのが始まりだから、
知名度が低くてあたりまえ。
XP/Server2003だと.NET3.0必須だし。
886デフォルトの名無しさん:2009/12/31(木) 04:20:00
つまり、Vista以降を前提とした開発はまだ少ないって事だな。
887デフォルトの名無しさん:2009/12/31(木) 04:48:52
CGIのurlからInternetConnect(),HttpOpenRequest(),HttpSendRequest()を使って
ページを取得するのはどうやるですか?

こういう普通のurlだと簡単に取得できるのですが、
hInternet = InternetOpen( "Mozilla/4.0", INTERNET_OPEN_TYPE_PRECONFIG_WITH_NO_AUTOPROXY, NULL, NULL, 0 );
hConn = InternetConnect( hInternet, "サーバー名", INTERNET_DEFAULT_HTTP_PORT, NULL, NULL,
      INTERNET_SERVICE_HTTP, 0, NULL );
hReq = HttpOpenRequest( hConn, "GET", "index.html", NULL, NULL, NULL, 0, NULL );
HttpSendRequest( hReq, NULL, 0, NULL, 0 );

hReq = HttpOpenRequest( hConn, "GET", "index.html?a=1&b=2&C=3", NULL, NULL, NULL, 0, NULL );
のように、"?a=1&b=2&C=3"が付いているとNOT FOUND ページが取得されてしまいます。
888デフォルトの名無しさん:2009/12/31(木) 05:00:24
>>885
UIAどころかその前身のMSAAですら知名度は低いだろが
889デフォルトの名無しさん:2009/12/31(木) 05:18:14
解説サイトを作る連中に初級〜中級レベルの人間が多い為か知らないが
初心者向けのありふれた情報しか載ってないサイトばっかりなのが
APIの知名度格差を広げる原因ではないかと推測してみる
890デフォルトの名無しさん:2009/12/31(木) 05:23:15
2ちゃんねるにコード書いて年越しとはおめでたいな
891デフォルトの名無しさん:2009/12/31(木) 05:47:49
コードも書けずに年越す糞グラマよりマシ
892デフォルトの名無しさん:2009/12/31(木) 05:50:55
俺はスクリプトすら満足に動かせずに年越し
893デフォルトの名無しさん:2009/12/31(木) 05:55:15
パワポとエクセルしか使わなかったorz
894デフォルトの名無しさん:2009/12/31(木) 10:19:06
ありふれてない情報は売れるからな。
895デフォルトの名無しさん:2009/12/31(木) 13:28:17
ありふれた情報(しかも間違いだらけ)を売ってるやつもいるけどな
896デフォルトの名無しさん:2009/12/31(木) 14:54:18
10年以上仕事でWindowsプログラミングやってる。

正月休みだから少しム板を覗いてみたけど
普段はめったにここには来ないな。
この板って有益な情報があまりないもんね。
897デフォルトの名無しさん:2009/12/31(木) 15:12:11
特にこのスレは罵り合いしか書いてない
898デフォルトの名無しさん:2009/12/31(木) 15:21:36
プログラマの愚痴の掃き溜めだからな
いかに皆仕事で嫌々プログラム書いてるかがわかる
899デフォルトの名無しさん:2009/12/31(木) 15:51:51
>>887
ブラウザで同じ要求をしてみて応答を確認してみては?
クエリパラメータの渡し方自体はそれで合っている。
900デフォルトの名無しさん:2009/12/31(木) 16:20:38
> 10年以上仕事でWindowsプログラミングやってる。
何の自慢にもなってないよ。
901デフォルトの名無しさん:2009/12/31(木) 16:23:09
ブビしか使ったこと無いヘボプログラマに有益な情報なんて無くて当然でしょ
902デフォルトの名無しさん:2009/12/31(木) 16:28:18
ここ質問スレなんだから、質問と回答以外は雑談スレ作ってそっちでしてくれ。
903デフォルトの名無しさん:2009/12/31(木) 16:53:19
>>902
スレタイ読め

「Win32API雑談箱 Build84」
904デフォルトの名無しさん:2009/12/31(木) 17:33:01
もう解決したようだが
SendMessage(hWnd, TCM_SETCURFOCUS, index, 0);
SendMessage(hWnd, WM_KEYDOWN, VK_RETURN, 0);
タブ選択はこれで出来たよ。
アトミックな処理じゃないから、誤動作する可能性はあるが。

普通のタブ形式ならTCM_SETCURSELやTCM_SETCURFOCUSで切り替わるけど
ボタン形式だと動作が変わるんだね。
905デフォルトの名無しさん:2009/12/31(木) 17:59:22
>>904
メッセージを使って強引に操作するのは間違った方法だからわざわざ書かなくていい。
906デフォルトの名無しさん:2009/12/31(木) 21:01:03
>>889
マスゴミが糞ばっかりになったのは視聴者が糞ばかりだったから
webサイトが糞ばっかりになるのは(ry
907デフォルトの名無しさん:2009/12/31(木) 21:23:12
>>906
マスゴミ関係者乙
908デフォルトの名無しさん:2009/12/31(木) 21:36:26
webサイトが糞ばっかりになるのはwebが普及したから。
909デフォルトの名無しさん:2010/01/01(金) 01:44:20
俺2000年以前に毎日6時間くらい、会社の専用回線でインターネットしまくってたけど、
価値のある情報は当時もわずかだったよ。
ただ、当時はエロサイト詐欺サイト左翼洗脳サイト闇情報サイトの比率が非常に高かったね。
まともな情報をWebで書き込んでると、しょっちゅう脅迫電話っていうか、
「著作権を侵害している」とかいう電話が毎度毎度かかってきていた。
既存の曲やキャラクター、写真などは一切使用していないのに。
910デフォルトの名無しさん:2010/01/01(金) 01:48:47
ホント、無益な板だね w
911 【大凶】 【463円】 :2010/01/01(金) 02:35:55
aa
912887:2010/01/01(金) 03:44:46
>>899
>クエリパラメータの渡し方自体はそれで合っている。
と教えていただいたので、他を調べてみた結果、この後のHttpQueryInfo()で
余計な事をやって居たのが原因だと判明しました。
お陰さまで解決する事ができました。ありがとうございました!!
913 【大凶】 【1404円】 :2010/01/01(金) 15:10:51
今年も雑談よろしくお願いします
914デフォルトの名無しさん:2010/01/01(金) 15:21:02
Win32APIに関して言えば10年前の方が有益な情報は多かった。
でもこれは当然のこと。
.NETが登場して有能なWin32プログラマが.NETに移行した結果だから。
915デフォルトの名無しさん:2010/01/01(金) 16:28:43
今年も罵り合いよろしくお願いします
916デフォルトの名無しさん:2010/01/01(金) 16:46:55
確かWin98の時はエディトコントロールに対して
SendMessageのWM_SETTEXTで文字列送りつけたら
全体がその文字列に置き換わった覚えがあるんだけど、
今XPで同じことやってみたら、末尾に文字列を追加する動作をした。

これって仕様変更? 記憶違い? どっちかのミス?
917デフォルトの名無しさん:2010/01/01(金) 16:47:51
.NETはパフォーマンスが出ないのに何で使うんだろう
スクリプト言語やらJAVAやらVBやらもいろいろ使ってみたが、結局CかC++に戻ってきた
C++はよいところもあるが、無駄が多い上に一貫性を感じない
918デフォルトの名無しさん:2010/01/01(金) 16:49:03
……ごめん、単純ミスだった。
正月早々何やってるんだ俺_| ̄|○
919916と918:2010/01/01(金) 16:50:13
あ、>918は>916の取り消し。
920デフォルトの名無しさん:2010/01/01(金) 17:43:34
>>917
挫折した自分を正当化しなくていいよ
921デフォルトの名無しさん:2010/01/01(金) 17:45:12
>>917
こういうヤツってC/C++でも大したコード書けないんだろうな
922デフォルトの名無しさん:2010/01/01(金) 18:27:14
パフォーマンスを出すのはCPU仕事
CPUを食い尽くすのはプログラマーの仕事
923デフォルトの名無しさん:2010/01/01(金) 18:38:00
defineみたいな頭の悪い言語仕様に振り回されてる人種に言われたくない罠
924デフォルトの名無しさん:2010/01/01(金) 18:41:14
> .NETはパフォーマンスが出ない
新年早々おバカ発言ですか
925デフォルトの名無しさん:2010/01/01(金) 18:52:52
わざわざインタプリタやランタイムかませて、進歩するハードウェアの足を引っ張るのもどうかと思うね
926デフォルトの名無しさん:2010/01/01(金) 18:55:03
じゃ、コンパイラやらアセンブラやらかますの止めて、全部マシン語でやれよ。ハゲ
927デフォルトの名無しさん:2010/01/01(金) 18:55:44
バッファオーバーランや整数オーバーフローしまくる糞コードしか書けないプログラマが多いから仕方ない
928デフォルトの名無しさん:2010/01/01(金) 18:56:34
>>926
やってますが何か?
ハゲてますが何か?
929デフォルトの名無しさん:2010/01/01(金) 18:58:04
ハゲ増しのお言葉↓
930デフォルトの名無しさん:2010/01/01(金) 19:00:24
まともなコード書けない糞グラマに限って>>917>>925みたいな事を言うんだよね。
931デフォルトの名無しさん:2010/01/01(金) 19:01:51
.NETはインタプリタじゃ無いんですけど・・・アホですか?
932デフォルトの名無しさん:2010/01/01(金) 19:08:26
早くも今年度MVP登場か?
933デフォルトの名無しさん:2010/01/01(金) 20:29:51
> (define baka? (lambda (x) (= x 923)))
> (baka? 923)
#t
934デフォルトの名無しさん:2010/01/01(金) 21:04:47
MVPの座を防衛しようと必死だなw
935デフォルトの名無しさん:2010/01/02(土) 00:35:39
>>914
有能なプログラマは相変わらずWIN32かMFCで開発してる気がするけどなぁ
936デフォルトの名無しさん:2010/01/02(土) 00:38:18
VBやらC#やらってAPIはほとんど使わないの?
使うことが多いならめんどくさくない?
APIの引数とかの構造体とかから作ってから
呼び出さないといけないんでしょ?
937デフォルトの名無しさん:2010/01/02(土) 00:42:10
while(true)
{
if( PeekMessage(&msg, NULL, 0,0,PM_REMOVE) )
{
if (msg.message == WM_QUIT) break;
TranslateMessage(&msg);
DispatchMessage(&msg);//MsgProcに送信
}

//〜処理〜//

Sleep(1);
}

ウィンドウのタスクバーをつかんで移動させると
//〜処理〜//のところに制御が回ってこないのだが正常なの?
938デフォルトの名無しさん:2010/01/02(土) 00:49:19
>>935
優秀な人間は大八車引いてるのかしら

>>936
?が多すぎて馬鹿そう
939デフォルトの名無しさん:2010/01/02(土) 00:56:05
>938
プログラマとして優秀な人間は
ほかの事に関しても優秀なのかよ。
940デフォルトの名無しさん:2010/01/02(土) 00:59:13
>>939
だから馬鹿だってんだよ馬鹿
941デフォルトの名無しさん:2010/01/02(土) 01:42:53
今年も相変わらず罵り合いだけで安心しました。
942デフォルトの名無しさん:2010/01/02(土) 01:45:27
ウィンドウのタスクバーってどこだよ?w
943937:2010/01/02(土) 01:52:11
タイトルバーだった
944デフォルトの名無しさん:2010/01/02(土) 01:54:51
ドラッグ中にウィンドウの内容を表示する、にチェックしてもメッセージ来ない?
945937:2010/01/02(土) 02:20:20
>>944
変化なし
946デフォルトの名無しさん:2010/01/02(土) 12:24:35
>>937
制御が来ないが正常な動作
Windowsの問題点の一つ
947デフォルトの名無しさん:2010/01/02(土) 12:30:06
>>937
ttp://msdn.microsoft.com/en-us/library/ms632622(VS.85).aspx
ここに書いてある通り、正常な動作。
948デフォルトの名無しさん:2010/01/02(土) 15:23:35
>>946
MessageBoxを閉じるまで処理が返ってこないのを問題点というぐらい馬鹿な発言だぞ
949デフォルトの名無しさん:2010/01/02(土) 16:33:39
いやいや
これがあるからウィンドウプロシージャで全部解決というわけにはいかなくなるんだよ
その結果処理を別スレッドに分散させざるを得なくなり処理の一元化に失敗してプログラムの構造が複雑化するわけ
950デフォルトの名無しさん:2010/01/02(土) 16:43:31
>>949
前年度MVPの方ですか?
モーダルループを理解してない馬鹿発言はそのぐらいにしといて下さいね
951デフォルトの名無しさん:2010/01/02(土) 16:52:51
949訳: スレッドは難しくてわかりません><
952937:2010/01/02(土) 17:03:07
なるほど、制御が来ないが正常な動作なのか
//〜処理〜// を別スレッドにすれば解決なのかな
953デフォルトの名無しさん:2010/01/02(土) 17:10:42
>>950
どこがどう間違ってるのか分からない
指摘してもらえると助かる
954デフォルトの名無しさん:2010/01/02(土) 17:54:59
>>949=>>953=日本語が理解できてない馬鹿
955デフォルトの名無しさん:2010/01/02(土) 17:58:07
> ウィンドウプロシージャで全部解決
これがそもそも馬鹿
956デフォルトの名無しさん:2010/01/02(土) 18:03:50
だからどこが間違ってるんだよw
957デフォルトの名無しさん:2010/01/02(土) 18:05:51
ウィンドウプロシージャで全部解決というのが間違ってます。
これが理解できないならWin32を勉強しなおしましょう。
958デフォルトの名無しさん:2010/01/02(土) 18:08:08
一度MVPが作ったソフトを見てみたい
パスとファイルの区別つかなくてウィンドウプロシージャを分ってない人がどういうソフトを作ってるのか興味がある
959デフォルトの名無しさん:2010/01/02(土) 18:10:38
基本的に全ての処理はウィンドウプロシージャからぶら下げるんじゃなかった?
だから無限ループを作ったりするとメッセージ処理が止まって操作がきかなくなる
960デフォルトの名無しさん:2010/01/02(土) 18:17:31
何のためにスレッドがあると思ってんだこの馬鹿
961デフォルトの名無しさん:2010/01/02(土) 18:23:55
だから別スレッドで処理する必要が出てくるから同期とかいろいろ面倒になる
それを使わない方法もあるんだけど(というか設計上はそっちが本命だったはず)
それでもウィンドウを掴むぐらいでメッセージ処理が止まっちゃったら
リアルタイムっぽく動いてほしいプログラムは困るよねってこと
962デフォルトの名無しさん:2010/01/02(土) 18:25:22
> それを使わない方法もあるんだけど(というか設計上はそっちが本命だったはず)
間違いです
スレッドを使うのが本命です
963デフォルトの名無しさん:2010/01/02(土) 18:29:03
ウィンドウプロシージャではGUIとしての処理だけを行い、それ以外の重い処理は別スレッドで行う

Win32の常識だが…
964デフォルトの名無しさん:2010/01/02(土) 18:33:47
WinSock2の非同期ソケットを調べていてそう感じたんだが……
例外かな?
965デフォルトの名無しさん:2010/01/02(土) 18:39:17
一応Microsoft側の視点てことで
966デフォルトの名無しさん:2010/01/02(土) 18:42:42
ホント何も分かってないんだな
967デフォルトの名無しさん:2010/01/02(土) 18:52:59
だから別スレッドは使わないでメインスレッドオンリーという前提では
解決できない問題だよねって言いたいわけだが……
968デフォルトの名無しさん:2010/01/02(土) 18:55:42
> メインスレッドオンリーという前提
だーかーらー
こんな前提がおかしいんだよ
Win3.1で開発してるのか?
969デフォルトの名無しさん:2010/01/02(土) 18:59:11
スレッドを使いこなせない馬鹿はレスしなくていいから。
970デフォルトの名無しさん:2010/01/02(土) 18:59:12
前提がおかしいかどうかを決めるのは君じゃないだろ
それが与えられた条件で可能かどうかを判断するのが技術者ってもんだ
971デフォルトの名無しさん:2010/01/02(土) 19:01:35
シングルスレッド用のCランタイムが廃止されて久しいっていうのに
未だにシングルスレッドに拘るバカって何なの?
972デフォルトの名無しさん:2010/01/02(土) 19:01:44
でそんな前提でやらなきゃいけない事ってあるんですか
973デフォルトの名無しさん:2010/01/02(土) 19:02:25
VB6ユーザーでしょ
974デフォルトの名無しさん:2010/01/02(土) 19:04:10
>>971
だから条件を決めるのは君じゃないってば
975デフォルトの名無しさん:2010/01/02(土) 19:08:03
>>974
じゃあ誰が条件を決めるのさ?
相変わらず論点を逸らそうと必死だね
976デフォルトの名無しさん:2010/01/02(土) 19:09:30
私はスレッドが使えませんのでシングルスレッドが絶対条件です
ってか?www
977デフォルトの名無しさん:2010/01/02(土) 19:10:33
かっけーw
978デフォルトの名無しさん:2010/01/02(土) 19:12:38
MVPに構うなよお前ら
979デフォルトの名無しさん:2010/01/02(土) 19:14:39
>>975
論点をそらそうと必死なのはそっちだろ
主張は>>949=>>961=>>967に書いたとおり
>>952で質問自体は解決してしまってるけど>>950が何を言いたいのかにちょっと興味があっただけ
分かってないことはまだまだ多いし
980デフォルトの名無しさん:2010/01/02(土) 19:16:28
Microsoft側の視点ではGUI以外の処理は別スレッドで行うことになってます
981デフォルトの名無しさん:2010/01/02(土) 19:18:38
ソースがあるといいな
Raymond Chennのブログでもいい

自分のはそう感じただけだから
982デフォルトの名無しさん:2010/01/02(土) 19:19:31
> メインスレッドオンリーという前提
> ウィンドウプロシージャで全部解決

これが馬鹿だって言ってるのにMVPだけあって何もわかってないみたいだね
983デフォルトの名無しさん:2010/01/02(土) 19:26:32
>>937のソースからそう判断したわけだが
984デフォルトの名無しさん:2010/01/02(土) 19:30:23
罵るためだけに意見も論点を曖昧にして無駄にスレをのばしていくいつものパターン。
罵り合いの果て、結局何の話をしているのか自分でも分からなくなってくんだろう。
985デフォルトの名無しさん:2010/01/02(土) 19:36:08
論点を曖昧にするのはMVPだけですが何か?
986デフォルトの名無しさん:2010/01/02(土) 19:36:52
とりあえず罵り合いをしている人間とは別人というのを宣言して、

>>937
処理のところで本当に処理をするのはそもそもの誤り。
メッセージループ中では速やかにメッセージを処理するだけで、
定期的に何らかの処理をしたいのであればタイマーメッセージを使う。
メッセージとして処理するには重いのであれば、別スレッドを使う。
ただしGUI以外の処理を別スレッドにするかどうかは内容次第。

ただそれだけの話なのに結論を引き延ばしてグダグダやっても意味がないだろ。
987デフォルトの名無しさん:2010/01/02(土) 19:41:17
もちろん>>986に書いた内容も異論が出てくるだろうけど、
自分の意見をはっきりさせずにあれが間違いだ、分かっていないと、
グダグダやることにいったい何のメリットがあるんだよ?

これが正しいと思うのならはっきり根拠と正確な内容を書けばいいだけだろ。
延々とくだらないやりとりを続けて、いったい何がしたいんだ?
988デフォルトの名無しさん:2010/01/02(土) 19:45:19
>>949=>>961=>>967=>>986=>>987
勝手にまとめるなよ

少しは自分の発言に責任持ったら?

> メインスレッドオンリーという前提
> ウィンドウプロシージャで全部解決
989デフォルトの名無しさん:2010/01/02(土) 19:46:58
MVPの方がまともそうだけどな。
990デフォルトの名無しさん:2010/01/02(土) 19:47:39
新年早々自演ですか
991デフォルトの名無しさん:2010/01/02(土) 19:51:41
どうやら俺様の勝利で終了のようだな
992デフォルトの名無しさん:2010/01/02(土) 19:52:23
>これがあるからウィンドウプロシージャで全部解決というわけにはいかなくなるんだよ
そもそもこれが間違いで、

>その結果処理を別スレッドに分散させざるを得なくなり
これが正しいWin32アプリの在り方

>処理の一元化に失敗してプログラムの構造が複雑化するわけ
これはキミの技量が足りないだけ

というだけの事でしょうが
何をウダウダ言ってるんだ?
993デフォルトの名無しさん:2010/01/02(土) 19:57:02
とりあえずMVPがスレッドすら使いこなせない素人なのはわかった
994デフォルトの名無しさん:2010/01/02(土) 19:58:16
>>948
GetMessage(&msg, NULL, 0, 0);
switch (msg.message)
{
case MM_WOM_DONE:
m_waveOutDev.UnprepareHeader(pWaveHdr);
...
m_waveOutDev.WriteHeader();
...
break;
}
メッセージがディスパッチされないため、サウンド再生が停止する不具合が起こる。
995デフォルトの名無しさん:2010/01/02(土) 19:59:54
>>994
モーダルループを理解していればそのような馬鹿な発言はしません。
996デフォルトの名無しさん:2010/01/02(土) 20:01:04
理解してるわけないだろ
997デフォルトの名無しさん:2010/01/02(土) 20:02:23
モーダルループを自分で作ったことがあるプログラマなら理解してるはずなんだが
998デフォルトの名無しさん:2010/01/02(土) 20:03:14
あと3スレで解決しろよ
999984=986=987:2010/01/02(土) 20:04:57
>>988
なにか被害妄想が酷くないか?
自分に意見する人間は全部同一人物じゃないの心の平穏が保てないわけじゃあるまい。

>>995
それがグダグダの原因だと言っているんだよ。
「理解していれば」ではなく、自分の見解をはっきりさせない限り、無駄に長引くことになるだけ。
自分の意見に自信があるなら、きっちり説明して一刀両断にすれば終わる話だろ。
1000デフォルトの名無しさん:2010/01/02(土) 20:05:37
スレッドが分かりません
モーダルループが分かりません


素人はレスするなよ……
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。