Win32API質問箱 Build54at TECH
Win32API質問箱 Build54 - 暇つぶし2ch1:デフォルトの名無しさん
07/06/12 19:59:25
スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんやお姉さんたちが答えてくれるかも。

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

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

2:デフォルトの名無しさん
07/06/12 20:00:44
53 スレリンク(tech板)
52 スレリンク(tech板)
51 スレリンク(tech板)
50 スレリンク(tech板)
49 スレリンク(tech板)
48 スレリンク(tech板)
47 スレリンク(tech板)
46 スレリンク(tech板)
45 スレリンク(tech板)
44 スレリンク(tech板)
43 スレリンク(tech板)
42 スレリンク(tech板)
41 スレリンク(tech板)
40 スレリンク(tech板)
39 スレリンク(tech板)
38 スレリンク(tech板)
37 スレリンク(tech板)
36 スレリンク(tech板)
35 スレリンク(tech板)
34 スレリンク(tech板)
33 スレリンク(tech板)
32 スレリンク(tech板)
31 スレリンク(tech板)

3:デフォルトの名無しさん
07/06/12 20:01:25
30 スレリンク(tech板)
29 スレリンク(tech板)
28 スレリンク(tech板)
27 スレリンク(tech板)
26 スレリンク(tech板)
25 スレリンク(tech板)
24 スレリンク(tech板)
23 スレリンク(tech板)
22 スレリンク(tech板)
21 スレリンク(tech板)
20 スレリンク(tech板)
19 スレリンク(tech板)
18 スレリンク(tech板)
17 スレリンク(tech板)
16 スレリンク(tech板)
15 スレリンク(tech板)
14 URLリンク(pc5.2ch.net)
13 URLリンク(pc5.2ch.net)
12 URLリンク(pc5.2ch.net)
11 URLリンク(pc5.2ch.net)
10 URLリンク(pc5.2ch.net)
9 URLリンク(pc5.2ch.net)
8 URLリンク(pc5.2ch.net)
7 URLリンク(pc3.2ch.net)
6 URLリンク(pc3.2ch.net)
5 URLリンク(pc3.2ch.net)
4 URLリンク(pc3.2ch.net)
3 URLリンク(pc.2ch.net)
2 URLリンク(pc.2ch.net)
1 URLリンク(pc.2ch.net)

4:デフォルトの名無しさん
07/06/12 20:02:07
- MSDN ホームページ
URLリンク(www.microsoft.com)
- MSDN ライブラリ
URLリンク(msdn.microsoft.com)
- MSDN 2 ライブラリ
URLリンク(msdn2.microsoft.com)
- 猫でもわかるプログラミング
URLリンク(www.kumei.ne.jp)
- Google
URLリンク(www.google.com)
- MSDN ライブラリ 2006年6月版
URLリンク(www.microsoft.com)
- Platform SDK Update
(WindowsR Server 2003 R2 Platform SDK Full Download)
URLリンク(www.microsoft.com)
URLリンク(www.microsoft.com)
URLリンク(www.microsoft.com)

- Win32 API入門
URLリンク(wisdom.sakura.ne.jp)
- Win32 プログラミング入門
URLリンク(www7.plala.or.jp)

- Advanced Windows (書籍)
URLリンク(www.amazon.co.jp)

-おまけ
dat落ちしている過去スレが見れるかも。Build19が見たい人、余裕のある人は●でも買ってやってくれ。
URLリンク(www.2chsearch.info)
URLリンク(makimo.to)

5:デフォルトの名無しさん
07/06/12 20:02:48
MSDN日本語版は誤訳があったり、一部欠けていたりするなど不完全なため、英語版推奨。
URLリンク(msdn.microsoft.com)
URLリンク(msdn2.microsoft.com)

MSDN ライブラリ 2006年12月版
URLリンク(www.microsoft.com)

MicrosoftR WindowsR Software Development Kit for Windows Vista? and .NET Framework 3.0 Runtime Components
URLリンク(www.microsoft.com)

6:デフォルトの名無しさん
07/06/12 20:03:40
俺乙

7:デフォルトの名無しさん
07/06/12 20:07:55
>>7-1001


8:デフォルトの名無しさん
07/06/12 20:12:59
華麗なスレ建て乙華麗

9:デフォルトの名無しさん
07/06/12 20:44:31
Microsoft Windows Software Development Kit for Windows Vista and .NET Framework 3.0 Runtime Components
URLリンク(www.microsoft.com)

Microsoft Windows Software Development Kit Update for Windows Vista
URLリンク(www.microsoft.com)

日本語版 Windows SDK
URLリンク(www.microsoft.com)

10:デフォルトの名無しさん
07/06/12 21:25:16
win32apiの関数だけで2Dのゲームを作るのとdirectXを使ってwindowタイプの2Dのゲームを作るのとではやはりdirectXの方が描画が明らかに早いですか

11:デフォルトの名無しさん
07/06/12 21:52:28
>>10
ゲームによる

12:デフォルトの名無しさん
07/06/12 22:15:34
でもまあたいがいはDirectXのが早い

13:デフォルトの名無しさん
07/06/12 22:28:10
Vistaもあるし,D3Dで書いた方がいいんでね?

14:デフォルトの名無しさん
07/06/13 01:47:52
"12345678" ==> 0x12345678
に変換するWin32APIがあったら教えてください

15:デフォルトの名無しさん
07/06/13 01:59:19
"0x123" -> 0x123 shlwapi.lib StrToIntEx()

16:デフォルトの名無しさん
07/06/13 03:10:21
sscanfじゃいかんの?

17:デフォルトの名無しさん
07/06/13 04:55:12
スレ違いです

18:デフォルトの名無しさん
07/06/13 05:19:08
>>14の質問の意図は「数字を数値化する方法」じゃなくて
「数字を数値化するAPIをおれによこせ おれはかみになるんだ」ってことだしな

19:デフォルトの名無しさん
07/06/13 05:49:48
>>14
文字列を数値に変換したいけど
CRT使いたくないからAPI教えてって事なら>>15

10進数の文字列を値の違う16進数の数値に変換って事なら
答えは、ない
0x12345678 = 305419896 だから
"12345678" -> 12345678 -> 305419896 か
"12345678" -> "0x12345678" -> 0x12345678
この処理が必要になる


20:デフォルトの名無しさん
07/06/13 09:13:22
このwpeproみたく、socketの盗み見、編集をするためのAPIの名前のヒントをください。
dllのinjectionで割り込むのがスジでしょうか。

URLリンク(wpepro.net)

21:20
07/06/13 09:30:41
NEGiES version 1.57
みたいなやつを作ろうとおもってます。

URLリンク(hp.vector.co.jp)

22:デフォルトの名無しさん
07/06/13 09:40:28
>>14 はstrtol()を知らないだけなんじゃないかと思う

23:デフォルトの名無しさん
07/06/13 09:41:54
>>21
パケットモニタか
ここで聞いた方がいいんじゃないか

ネットワークプログラミング相談室 Port19
スレリンク(tech板)

24:20
07/06/13 09:48:23
参照はioctlsocketにSIO_RCVALLでできるのまでわかっています。
でも、これだと編集はできないです。

25:20
07/06/13 09:52:25
>>23
ありがとう、過去ログ呼んで、聞いてみます。

26:デフォルトの名無しさん
07/06/13 20:56:16
WPARAM とか LPARAM の
頭文字、W Lは何の略なのでしょうか?
あとlpsCmdLineのlps
LR_DEFAULTSIZEのLR
nCmdShowのnが 何なのか
気になっております。


27:デフォルトの名無しさん
07/06/13 21:03:20
WとLは、WORDとLONG、昔はWORD型とLONG型だった
LRは知らない
nは駆逐されつつあるシステムハンガリアンでint型を表す接頭辞

28:デフォルトの名無しさん
07/06/13 21:05:23
何で駆逐されつつあるんでしょうか?

29:デフォルトの名無しさん
07/06/13 21:08:13
LPARAM Long長のパラメータ(旧)。今はLONG_PTR長のパラメータのこと。
#if defined(_WIN64)
typedef __int64 LONG_PTR;
#else
typedef long LONG_PTR;
#endif

WPARAM WORD長のパラメータ(旧)。今はUINT_PTR長のパラメータのこと。
#if defined(_WIN64)
typedef unsigned __int64 UINT_PTR;
#else
typedef unsigned int UINT_PTR;
#endif

LR_DEFAULTSIZEのLRはLoad Resourceの頭だと思われ。
nCmdShowのnは符号付整数として、Numericのnかな?←自信ない

30:デフォルトの名無しさん
07/06/13 21:14:56
URLリンク(biography.sophia-it.com)

この人が祖だったわけね。

31:デフォルトの名無しさん
07/06/13 21:22:40
>>28
URLリンク(msdn.microsoft.com)

>>27の言い方は極端かもしれないが、.(あくまで)NET Frameworkでは、
『パラメータ名にはハンガリー型表記法を使用したプリフィックスは付けません。 』
としている。


駆逐かどうかは知らんけどな。

32:デフォルトの名無しさん
07/06/13 21:32:16
>>30
何の?

33:26
07/06/13 21:38:21
ありがとうございます。
lpsCmdLineは分かりませんか?
LongPointerでしょうか…
でもsがそれだと変だしなぁ...

34:デフォルトの名無しさん
07/06/13 21:47:12
なんなんだ、このやり取りは?
アホくさ

35:デフォルトの名無しさん
07/06/13 21:49:19
LPSTR lpsCmdLineでしょ

36:デフォルトの名無しさん
07/06/13 21:56:39
うはw
Excel、Word作ったヤツが、ハンガリアン記法はじめたんかいな

37:デフォルトの名無しさん
07/06/13 21:59:12
lpszじゃないのか?
16ビットのころのfarポインタのASCIZ文字列だったけな

38:デフォルトの名無しさん
07/06/13 22:11:12
long
pointer
string
zero terminated  ってかこれAPIってよりC言語のお話じゃないの?

39:デフォルトの名無しさん
07/06/13 22:15:31
まあAPIそのものがCだったからな。CDECLじゃなくてPASCALだったけど

40:デフォルトの名無しさん
07/06/13 22:39:02
ちなみにlpszプリフィックスは
Large Pointer to String terminated by Zeroの略称で、終端にNULLを置くようですね。

41:デフォルトの名無しさん
07/06/13 22:54:16
ハンガリアン記法の歴史ならここでも読んでおけ
URLリンク(local.joelonsoftware.com)

42:デフォルトの名無しさん
07/06/14 23:09:38
>>22
知らないで自前で作っちゃったよ・・・orz

43:デフォルトの名無しさん
07/06/15 09:50:58
最高にわろた

44:デフォルトの名無しさん
07/06/15 14:42:40
>>41
なるほど。
元々のハンガリアン記法は常識的なものだったんだな。

45:デフォルトの名無しさん
07/06/15 14:43:23
>>41
なるほど。
元々のハンガリアン記法は常識的なものだったんだな。

46:デフォルトの名無しさん
07/06/15 18:18:43
一行文字入力ダイアログボックスってどうやって出すの?

47:デフォルトの名無しさん
07/06/15 18:21:45
>>46
意味がわからん。例えばどれのことだ?
普通にダイアログ作って1行入力して受け取るんじゃダメなのか。

48:デフォルトの名無しさん
07/06/15 18:24:13
MessageBoxの逆みたいのないんですか?
if(InputBox(handle, text, caption, buf, sizeof(buf))) printf("%s\n", buf);
みたいに使えるようなの。

49:デフォルトの名無しさん
07/06/15 18:27:30
作ってみ。そんな手間じゃないぞ。

50:デフォルトの名無しさん
07/06/15 20:17:46
ハンガリアン記法か・・・。

他のスレにも書いたネタで恐縮だが、
typedef int HEIGHT ;
typedef int WEIGHT ;

HEIGHT h = 170 ;
WEIGHT w = h ;
これがコンパイラによってハネられないために、生まれたものだと思う。

C/C++のtypedefは、
新しく型を定義するのではなく、既存の型に別名を付ける
という代物で、
なんでtypealiasじゃないんだよ! という困ったチャン。

構造体やクラスでラップすれば、型が違うのでダメよとハネてくれるんだけど、なんだかなぁ。

51:デフォルトの名無しさん
07/06/15 20:20:39
Delphi とか、C++ Builder にはあるな>InputBox

52:デフォルトの名無しさん
07/06/15 21:36:36
フルパスから拡張子を除いたファイル名取得するAPIってないですか?
今はPathFindFileName()→PathRemoveExtension()でやってるんですけど

53:デフォルトの名無しさん
07/06/15 22:33:17
>>52
パスだけ、ファイル名だけ、の2つを
つなげればいい。APIはなんだっけか

54:デフォルトの名無しさん
07/06/15 23:42:40
>>42
最近のヤツはマルチスレッドで利用してもたいてい問題無いようにはなってるけど、
C++の規格としてそれが保障されてるわけじゃないから自作モノにも意味があるよ。

55:デフォルトの名無しさん
07/06/15 23:48:44
また妄想で適当なことをほざく馬鹿が湧く。
もう春はとっくに終わったぞ。

56:デフォルトの名無しさん
07/06/15 23:49:53
夏の方が長い

57:デフォルトの名無しさん
07/06/15 23:53:01
文字列変換関数なんて普通に作ったらリエントラントだろ
マルチスレッドがどうとか意味不明すぎる

58:デフォルトの名無しさん
07/06/15 23:56:42
>>55-57
知ったかぶった馬鹿どもがこんなにいるとは思わんかった。

59:デフォルトの名無しさん
07/06/16 00:01:45
>>58
負け犬の独り言はチラシの裏にでも書いておけ。

60:デフォルトの名無しさん
07/06/16 00:51:16
>>54
strtokと勘違いして内科医?

61:デフォルトの名無しさん
07/06/16 01:07:08
strtok はスレッドセーフじゃないな。明らかに。

62:54
07/06/16 01:10:51
>>60
   /\___/ヽ
 /''''''   '''''':::::::\
 .| (◯),   、(◯)、.::|:
 .| " ,,ノ(、_, )ヽ、,,"".:::|:
 .|   ´,rェェェ、` .:::::::::|:
 -\  |,r-r-|  .:::::/…
    ヾ`ニニ´ / ̄"''''ヽ:

63:デフォルトの名無しさん
07/06/16 06:03:46
>>62
吹いたwwwwwwwwwwwwww

64:デフォルトの名無しさん
07/06/16 07:29:03
僕ハッカー

65:デフォルトの名無しさん
07/06/16 08:23:14
Win32APIに64bitなGetTickCountってないの?

66:デフォルトの名無しさん
07/06/16 08:27:56
ない

67:デフォルトの名無しさん
07/06/16 11:47:12
>>61
msdnには大丈夫と書いてあるが。

68:デフォルトの名無しさん
07/06/16 11:59:49
何も考えずに対策無しに実装したらって話だろ

69:54
07/06/16 12:45:02
自己解決しました。

>>60にカチンときたので、コンパがあっても教えません。
バーカ!


70:デフォルトの名無しさん
07/06/16 12:50:58
解決も何も、元々質問じゃねーだろ
騙るならもうちょっとスレ読んでからなw

71:デフォルトの名無しさん
07/06/16 13:00:23
>>65
長い時間をはかるのに使うような代物じゃない。
オーバーフロー対策は、

DWORD dwElapsed ;
if (dwStart <= dwEnd) {
dwElapsed = dwEnd - dwStart ;
} else {
dwElapsed = dwStart - dwEnd ;
}

これでいいんじゃない?

72:デフォルトの名無しさん
07/06/16 13:35:51
START=DWORD_MAX-10で、
END=20のとき、
ELAPSEDは、DWORD_MAX-30になるのか?

何も考えずに、
DWORD dwElapesed = dwEnd - dwStart;
でいいんじゃないのか?

73:デフォルトの名無しさん
07/06/16 13:46:46
>>71
クマー

74:デフォルトの名無しさん
07/06/16 14:29:09
以前"ファイルハンドルを開きっぱなしでそのファイルを削除しようとすると、
「ファイルまたはフォルダの削除エラー」がでます。 "
ということを質問させてもらいました。

削除に関しては、CreateFileにFILE_SHARE_DELETEのフラグをつけることで
エラーが出なくなり解決しましたが、
リネーム時に「ファイルまたはフォルダの変更エラー」が
出てしまいます。

今はFILE_SHARE_READ,FILE_SHARE_WRITE,FILE_SHARE_DELETEのフラグを
立てています。

ファイルハンドルを開きっぱなしのファイルがリネームされるときに
エラーにならなくなる方法がありましたら教えてください。
またファイルがリネームされるタイミングを知ることができれば、
ファイルハンドルを解放できますが、そういう方法もありますか?


75:デフォルトの名無しさん
07/06/16 14:41:49
CreateEventとかCriticalSection

76:デフォルトの名無しさん
07/06/16 14:42:34
その代わりスレッドWaitForSingleObject

77:デフォルトの名無しさん
07/06/16 15:06:33
普通にCreateFileでハンドル閉じる前にリネームできるけどな
またどうせ変なことでもやってんじゃないの?

78:デフォルトの名無しさん
07/06/16 15:09:48
オレも変だなあと思ってリネームしてみたけどエラー出なかった

79:デフォルトの名無しさん
07/06/16 16:49:25
>>74
根本的に何か変な雰囲気を感じる。

まず、「」でくくられたエラーメッセージが、
GetLastError()の返す値をFormatMessage()したものとは違うっぽい。

次に、
対症療法的に目先のことばっかり考えていて、
もっと基本的な部分を見落としているような気配がする。

そして、
ファイルを開いていても、ファイル名を変更することはできるのだけど、
それができないと言ってるあたりに、何か重大なことを隠している予感がする。

80:74
07/06/16 17:20:10
すいません。原因がわかりました。

CreateFileしているファイルはログをCSV形式で出力するもので、
あるバイナリエディタでも開いており、それが悪さをしていたようです。

つまらない原因で申し訳ありません。

> まず、「」でくくられたエラーメッセージが、
> GetLastError()の返す値をFormatMessage()したものとは違うっぽい。

エラー時のダイアログのタイトル部分です。


81:デフォルトの名無しさん
07/06/16 17:36:42
>エラー時のダイアログのタイトル部分
こんなのを手がかりにするべきではない
やるならFormatMessageなりエラー値なり、
ちゃんとAPIのドキュメント読んで、エラーコード等を取得すべきだし、
それを手がかりにして検索なり質問なりすべき

82:デフォルトの名無しさん
07/06/16 17:46:27
プログラム側のエラーじゃなくて、リネームをエクスプローラかなんかでやって出た
エラーだったんだろう。

83:デフォルトの名無しさん
07/06/16 18:37:24
文字列変換をANSIからTCHARに変換するAPIってないのですか?
プロジェクトの文字セットがunicodeなら、MultiByteToWideCharして
マルチバイトなら無変換

84:デフォルトの名無しさん
07/06/16 18:52:30
const char str[] = "ほげほげ";
TCHAR buf[sizeof str];

_stprintf(buf, "%hs", str);

というのはどうだろう。
ロケール指定は必要になると思うが。

85:デフォルトの名無しさん
07/06/16 19:08:49
よく意味のわからない質問に答えられるな

86:デフォルトの名無しさん
07/06/16 19:11:25
C++でATLを使ってよければATL::CA2Tとか楽

87:デフォルトの名無しさん
07/06/16 19:14:43
#ifdef UNICODE
できればいいんじゃね?

88:デフォルトの名無しさん
07/06/16 19:18:17
APIにはない

inline とか#ifdef つかって手前で作れって話かと

89:デフォルトの名無しさん
07/06/16 21:00:28
皆さん、有難うございます。83です。無いのですか、orz
TEXT(" ")マクロのAPI版を期待しんだすが...
>>84 と >>87の方法を検討したいとおもいます。
>>86 ATLは使ったことがありません。

90:デフォルトの名無しさん
07/06/16 21:52:35
>TEXT(" ")マクロのAPI版を期待しんだすが...

なぜ >>83 でそう書かないのか理解に苦しむ

91:デフォルトの名無しさん
07/06/16 22:39:51
>>80
> エラー時のダイアログのタイトル部分です。

そのダイアログは誰が出したもの?
>>82の予想通りっぽいけどさ。

変な雰囲気を感じたのは、
主語的なものが抜けていたからだったんだな。

92:デフォルトの名無しさん
07/06/16 22:49:32
>>83
Win32APIには、TCHARやLPTSTRやLPCTSTRを受け渡しするものは、ない!
(いや、例外的に何かあったような気もする・・・)
そんなものを渡されても、判別、つかないっしょ。

>>84
オーバーヘッドが問題にならないなら、
それはいいアイデアだ。
_stprintf(buf, _T("%hs"), str);
にすれば使えるね。


93:デフォルトの名無しさん
07/06/16 22:50:41
【派遣ネガティブ根性チェック】

3つ以上、チェックがつけばアナタの性格はひん曲がっており、
ネガティブ負け組派遣人生を歩んでいます。

□派遣先正社員の作った糞開発ツールはたとえバグだらけでも苦労して使うべきだ
□派遣先の人事権のある社員の意見はたとえ間違っていてもマンセーする
□昼食は必ず派遣先の社員と行くべきだ
□派遣先から「いつまでもここで仕事してくださいね(安い金でw)」と言われて嬉しい
□自社で仕事なんてできるわけがない
□派遣労働の問題点の話題が出ると感情剥き出しにして反論する
□派遣労働の問題を指摘する人は嫌いだ
□派遣先には仕事だけでなくプライベートについてもグイグイ引っ張って欲しい
□奢ってくれる派遣先正社員を尊敬する
□自分の月額金額を知らないのは当然だ、単金を聞いてはいけない
□派遣先正社員より自分の生涯収入が低いのは当然だ
□派遣先に尻尾を振り、かわいがってもらうことが大切だ
□チビは派遣先にかわいがってもらいやすから派遣には有利だ


94:デフォルトの名無しさん
07/06/16 22:52:01
>>89
> TEXT(" ")マクロのAPI版

意味が分からない。

マクロはコンパイル時に、ANSIかUnicodeか決まっちゃうのよ。


95:デフォルトの名無しさん
07/06/17 00:17:39
GetVersionExというAPIをVB6 EXEから使用していますが、
作成したEXEをプロパティで互換モード(Win95、Win2000等)に設定しても
戻り値(OSのVer番号)は、実行環境のOSのVer値となります。

この現象は、「WinXpSp2」「WinVista」にて確認しましたが、
 ①互換モードで実行されているか否か
 ②どのOSの互換モードに設定されているか
を知る方法を、ご存じの方は教えてください。

96:デフォルトの名無しさん
07/06/17 01:24:48
>>95
ちゃんと変わるけどなぁ(XP SP2で確認)

97:95
07/06/17 02:05:14
>>96
ありがとうございます。

こちらは下記コードでもためしましたが、やっぱりだめでした..
URLリンク(www.bcap.co.jp)

98:デフォルトの名無しさん
07/06/17 02:11:17
>>97
VBでビルドする度にEXEが新しくなって設定がリセットされている
とか、
VBでEXEを作ってはいるが、VB上から実行していて、EXEを使ってない
とか、
そういうところに盲点あったりしないか?

99:95
07/06/17 02:56:06
>>98
そのミスはないです。
ちなみに互換モード設定はEXE更新後も保持されるようです。

Visual C++ 6.0で作成したEXEを、互換モード設定し起動したところ、
設定したOSのVerが、ちゃんとかえってきました。
DLLにしてVBからコールしようと思います。

100:デフォルトの名無しさん
07/06/17 08:32:11
使用する言語によって動作が変わるAPIがあったら今頃大騒ぎになってるだろ・・・

101:デフォルトの名無しさん
07/06/17 13:51:37
Explorerのファイルサイズの1.23GBみたいに書式化してくれる関数教えてください。

102:デフォルトの名無しさん
07/06/17 14:01:17
そのぐらい自分で作れよ。

103:デフォルトの名無しさん
07/06/17 14:10:04
>>101
MSDNライブラリ
→Win32 and COM Development
→User Interface
→Windows Shell
→Shell Reference
→Shell Lightweight Utility Functions
→String Functions
→関数名の一覧から自分の目で探せ

104:デフォルトの名無しさん
07/06/17 14:14:55
自分の妄想した通りのプログラムが出来る関数教えてください。

105:デフォルトの名無しさん
07/06/17 14:17:28
そのぐらい自分で妄想しろよ。

106:デフォルトの名無しさん
07/06/17 14:33:39
>>104
自分の妄想した通りのプログラムは、自分の妄想の中で実行すれば、いいんじゃね?



107:デフォルトの名無しさん
07/06/17 14:34:23
やあ、>>89 =83です。
こんな風にしたんだが良いと思う? 
一様win98SE(マルチバイト)とXP(uni.)で正常に動作するのが出来た。

//char -> TCHAR変換
char str[X];
TCHAR buf[X];

_stprintf( buf,
#ifdef UNICODE
_T("%hs"),
#else
_T("%s"),
#endif
str);

108:デフォルトの名無しさん
07/06/17 14:35:54
>>104
std::string mousou(std::string nounai) {
  //ここにコードを書いてください
}

109:デフォルトの名無しさん
07/06/17 14:55:24
>>107
_stprintfはスレ違いだな。このスレ的にはwsprintf。

110:デフォルトの名無しさん
07/06/17 15:11:45
>>107
なんでOSによってANSIとUnicodeを切り替えるの?
XPでもANSIでいいじゃない。

111:デフォルトの名無しさん
07/06/17 15:12:23
うっさいはげ

112:デフォルトの名無しさん
07/06/17 15:21:44
>>107
なんで#ifdef UNICODEするの?

_stprintf(buf, _T("%hs"), str) ;
これ一発でOKじゃんか。

%sにhを付けると、strを常にANSIとして扱うという意味だよ?


113:107
07/06/17 16:28:21
>>112 熱烈感謝あげ
>%sにhを付けると、strを常にANSIとして扱うという意味だよ?
知らなかったよ、orz
h付でchar->UNI、hなしでchar->charと妄想した。

>>110 いや、あれよ、やっぱNT系OS用はuni.使わないとかっこわるいじゃない。

114:デフォルトの名無しさん
07/06/17 16:31:00
MSLUぶち込めばWin9xでもUnicodeAPI使えなかったっけ?

115:デフォルトの名無しさん
07/06/17 16:36:24
> かっこわるいじゃない
お前は何を言っているんだ?

複雑なコード書くほうがよっぽどカッコ悪い。
# で、文字列操作関連でバグ出して、もっとカッコ悪くなるんだろうな。

116:デフォルトの名無しさん
07/06/17 16:42:48
>>113
>NT系OS用はuni.使わないとかっこわるいじゃない

なんとなく気持ちは解るけど、それはミスディレクション
基本は keep it simple、だよ
NT系以外もターゲットにするなら、Unicodeは極力利用しないのがベター
無用な複雑性こそ憎むべきだよ

117:デフォルトの名無しさん
07/06/17 16:46:55
Windows Vista にて
普通のサーバープログラムを sexe でサービスに入れたのですが
通知領域(タスクトレイ)にアイコンが表示されません。
サーバー機能は問題なく動作しているようです。
もちろん「ディスクトップとの対話をサービスに許可」していますし
Shell_NotifyIcon のタイムアウト処理も行い
msgTaskBarRestart によるタスクトレイ再登録も行っています。

直接の原因は Shell_NotifyIcon が ERROR_FILE_NOT_FOUND に
なってしまっていることのようです。
何のファイルが見つからないんだ??? さっぱりわからん。

対応策はあるのでしょうか?
やはり サービスプロジェクトで書き換えるしかない?

118:デフォルトの名無しさん
07/06/17 16:47:59
sex ではチンポ入れるんだよ

119:デフォルトの名無しさん
07/06/17 16:49:42
↑のコメントをした者ですが、
ちなみにサービス起動しない場合はちゃんとアイコンは表示されます。

120:デフォルトの名無しさん
07/06/17 16:51:53
119のコメントは117のコメントに対するものです。

121:デフォルトの名無しさん
07/06/17 16:54:55
>116
NT以外って何?CEのこと?3.1のこと?

122:デフォルトの名無しさん
07/06/17 16:57:15
>>120
Vista以外だとどうなの?
それからVistaでの変更の影響は調べたの?
セッション0の分離とか大規模な変更が行われたので、
互換性に関する資料がMSから大量に出されてたと思うけど。


123:デフォルトの名無しさん
07/06/17 16:57:46
>>121
いや、流れからすると95系だろ

124:デフォルトの名無しさん
07/06/17 17:10:34
>>117
>何のファイルが見つからないんだ??? さっぱりわからん。

URLリンク(msdn2.microsoft.com)
>The most common cause of failure is that the taskbar window doesn't exist or is unresponsive.
>GetLastError in that case returns E_FILE_NOT_FOUND.

125:デフォルトの名無しさん
07/06/17 17:34:33
>>122
WindowsXP の場合は、タスクバーにアイコンは表示されて
サーバー機能も問題なく動作します。
ただ、何故かサービスのくせにひとたびログインしてログオフすると
プロセスが死にます。この辺はまだ未調査です。

>>124
ありがとうございます。調査します。

126:デフォルトの名無しさん
07/06/17 17:41:44
>>WindowsXP の場合は、タスクバーにアイコンは表示されて
タスクバー→タスクトレイの間違いです。すみません。

127:デフォルトの名無しさん
07/06/17 19:12:54
ボロ出し過ぎ

128:デフォルトの名無しさん
07/06/17 19:43:20
整理すると、sexe でサービス登録した場合、以下の現象になっている。
1)Windows XP の場合は、ログオフでサービス停止になる。
  タスクトレイアイコンは表示される。
2)Windows Vistaの場合は、タスクトレイにアイコンが出ない。
  ログオフしてもサービス停止にはならない。


129:デフォルトの名無しさん
07/06/17 20:17:28
>>113
MSDNライブラリでprintfの書式化文字列のところくらい見ろヨ

>>116
バイナリもテストも2重になっちゃうものね。



130:デフォルトの名無しさん
07/06/17 20:22:19
>>125
プロセスが死ぬのは、お前の書いたコードのバグで、例外か何かで落ちてるんだろ。
Drワトソンとか使ってチェックしる!

そもそも、
ユーザーのデスクトップのタスクトレイに、サービスが直接アイコンを出す
というのは、あんまりよくないと思う。

サービスのプロセスとは別に、
タスクトレイにアイコンを表示したりする、サービスのクライアントのプロセスを用意したほうがいい。
それをAll Usersのスタートアップに突っ込んでおけばいい。

131:デフォルトの名無しさん
07/06/17 21:24:08
>>95
どうせVB6.EXEのほうの設定(してない)が適用されてるとかいうオチだろ

132:デフォルトの名無しさん
07/06/17 21:36:37
>>130
>プロセスが死ぬのは、お前の書いたコードのバグで、例外か何かで落ちてるんだろ。
>Drワトソンとか使ってチェックしる!

バグかもしれないが、CFrameWnd::OnDestroy() が呼び出されて正常終了している
ところまでは解っている。

>そもそも、
>ユーザーのデスクトップのタスクトレイに、サービスが直接アイコンを出す
>というのは、あんまりよくないと思う。

そうなのですか。了解。


133:デフォルトの名無しさん
07/06/17 21:39:51
>CFrameWnd::OnDestroy() が呼び出されて正常終了している

そりゃログアウトしたらウィンドウはクローズするよ
サービスなんだからウィンドウが無くても動き続けるように作らなくちゃ

134:デフォルトの名無しさん
07/06/17 21:48:36
>そりゃログアウトしたらウィンドウはクローズするよ
>サービスなんだからウィンドウが無くても動き続けるように作らなくちゃ

ウインドウは通常 ShowWindow( SW_HIDE ) していて、タスクトレイの
アイコンからのメニューで表示できるようなプログラムになっています。
それでどうしてもタスクトレイにアイコン表示したかった。

ウインドウがあるから当然なのかなとも思ったのですが、Vista では
サービス停止にならなかったので???と思ったしだいです。

135:デフォルトの名無しさん
07/06/17 21:56:28
セッション0隔離でググれ

136:デフォルトの名無しさん
07/06/17 21:59:22
>>セッション0隔離でググれ
了解。ありがとうございます。


137:デフォルトの名無しさん
07/06/17 22:19:38
>>131
>>98が指摘しているけど、違うらしいぞ。

何を指摘されているのか理解していないのかもしれないが。


>>132
トップレベル・ウィンドウに終了しる! っていうメッセージが来て、
はいはい、わかりました
といって終了するようにプログラムしたのは、おまえ自身だろ?

そりゃぁ終了するわな、当然。

サービスなんだから、そういうメッセージが来てもシカトしろよ。
サービスとして起動されている場合だけシカトするのでもいいよ。

ていうか、
ただのアプリとして作ったものをsexeを使ってサービスとして走らせるのに、
タスクトレイにアイコンだしたり、ユーザとの対話をするというのが、おかしい。

138:デフォルトの名無しさん
07/06/17 22:24:11
そもそも、sexeを使おうという時点で、間違ってるよ。
自分でサービスのためのAPIを使おうとすれば、自ずと理解することが、すっぱり抜けてる。

139:デフォルトの名無しさん
07/06/17 22:24:48
サービスにすると嫌われるよ

140:デフォルトの名無しさん
07/06/17 22:33:12
sexe はちょっと試してみただけです。
いろいろと勉強になりました。
ありがとうございました。

141:デフォルトの名無しさん
07/06/17 22:34:40
sex はちょっと試してみただけです。
いろいろと勉強になりました。
ありがとうございました。

142:デフォルトの名無しさん
07/06/17 23:04:34
>>139
sexeに比べたらマシだろ。

143:デフォルトの名無しさん
07/06/17 23:41:45
ついでにさらに教えてほしいのですが、
サーバープログラムもサーバーとしての機能設定を行ったり、
クライアントの情報をリアルタイムで確認したりという
GUIがあった方が良いケースもあると思いますが、
こういうプログラムはサービスにする必要はありますでしょうか?


144:デフォルトの名無しさん
07/06/17 23:45:33
>>143
普通はサーバプログロムのみをサービスにしてGUI系は別プロセスにするんじゃないか?

145:デフォルトの名無しさん
07/06/17 23:55:06
>>144
そうするとリアルタイムという部分が若干のタイムラグとなりますが、
やっぱりその実装ですかね...


146:デフォルトの名無しさん
07/06/17 23:58:49
>>144
そうするとリアルタイムという部分が若干のタイムラグとなりますが、
やはりその実装ですかね...

147:デフォルトの名無しさん
07/06/18 00:01:24
>>145
143の文章も意味が不明瞭だが、
もうちょっと、他人にわかりやすく、端折らずに書いてよ。

タイムラグを気にしているけど、
サービスと、
稼働状況をモニターするクライアントとの間は、
どうやって情報を受け渡ししようと考えてるの?

148:デフォルトの名無しさん
07/06/18 00:09:45
>タイムラグを気にしているけど、
>サービスと、
>稼働状況をモニターするクライアントとの間は、
>どうやって情報を受け渡ししようと考えてるの?

TCP/IP による通信です。
タイムラグはさほど気にすることはありませんが...

149:デフォルトの名無しさん
07/06/18 00:12:10
じゃあ解決だね

150:デフォルトの名無しさん
07/06/18 00:13:10
解決です。ありがとうございます。

151:デフォルトの名無しさん
07/06/18 00:17:33
>>148
なんだよ。
気にしないものを、気にしてたのかよ。
馬鹿馬鹿しい。

で、
同一プロセスの次が、いきなりTCP/IPかよ。
タイムラグを気にしてるから、共有メモリと同期を使うのかと思ったぞ。

152:デフォルトの名無しさん
07/06/18 00:25:42
>>151
TCP/IPはクライアントとの通信です。
モニターはサーバーPCのみでOKということです。
同一プロセスならばリアルタイムですが、プロセスを分けると
共有メモリにしろ周期的にチェックする必要があるので
タイムラグが若干発生するけどまあ気にするほどでもないかと
いうことです。失礼しました。

153:デフォルトの名無しさん
07/06/18 00:41:19
>>152
文章が不明瞭だと思ってたけど、日本語が通じなんだな、おい。


154:デフォルトの名無しさん
07/06/18 00:49:50
>>153
単なる誤解でしょ。

>>稼働状況をモニターするクライアント
をモニター=クライアントと解釈するかどうかですよね。
そうだとすると通じてなかった。


155:デフォルトの名無しさん
07/06/18 00:55:50
>>154
それ以外の解釈は、ないだろ。

誤解するかもしれないので、
「稼働状況をモニターする」
と書いたのに。

だいたい、お前が作っているサービスが何をする代物なのか、言ってないだろ。


156:デフォルトの名無しさん
07/06/18 00:59:21
>>155
>お前が作っているサービスが何をする代物なのか、言ってないだろ。

ここで議論することでもないですので、これで終わりにしましょう。
ありがとうございました。

157:デフォルトの名無しさん
07/06/18 00:59:22
> 同一プロセスならばリアルタイムですが、プロセスを分けると
> 共有メモリにしろ周期的にチェックする必要がある

同一プロセスだからといってリアルタイムとは限らないし、
プロセスを分けることで、周期的にチェックするしか出来ないわけでもない。

158:デフォルトの名無しさん
07/06/18 12:48:34
>>134
・Vistaではサービスは別のセッションで動くように変更された
・あるセッションで動いているウィンドウは別セッションでは表示されない
・Windowsが終了(ログオフ含む)時に閉じようとするのは、ログオンしているセッションに属しているウィンドウのみ
・WM_DESTROYの応答でPostQuitMessageしていたらウィンドウ閉じるときにプロセスが終わってしまう

この4点で「なぜVistaではトレイアイコンが出ないか」「なぜXPではログオフでプロセスが終わってしまうか」
の両者の理由が理解できるかと。


159:デフォルトの名無しさん
07/06/18 13:03:07
まあ、サービスをシステム権限で動かしてデスクトップとの対話を有効にすると
大きな穴になる可能性があるからなあ。
昔、その場限りでアドミン権限で実行させるためだけのサービスとか作って遊んでたっけ・・・

160:デフォルトの名無しさん
07/06/18 13:24:10
>>159
>昔、その場限りでアドミン権限で実行させるためだけのサービスとか作って遊んでたっけ・・・

まあ実際RunAsってサービス使って実装されてるしね。
URLリンク(www.atmarkit.co.jp)
>なおこの機能は、Windows 2000では「RunAs」というサービス、
>Windows XPでは「Secondary Logon」というサービスを使って実現されている。
>Windows 2000/XPでは、デフォルトでこのサービスが組み込まれ、
>システム起動時に自動的に起動されるようになっているが、
>何らかの理由からこのサービスが起動されていないと、
>[別ユーザーとして実行]は利用できない。

161:デフォルトの名無しさん
07/06/18 15:58:38
>>159
そんなサービス作らずとも、
標準のatコマンドで直近の時間を指定するか、soonコマンドを入れるかすれば、
管理者権限をもったプロセスを普通のユーザが起動できたぞ。

>>160
話が唐突に飛んでる

162:デフォルトの名無しさん
07/06/18 16:07:33
>>161
>話が唐突に飛んでる

スマソ。
>>159 が作っていたのが「いわゆるデスクトップでその場限りでアドミン権限で実行させるため」
のものだと誤解していたようだ。

しかしあれだけの文章から>>159 が作っていたのが
「別のウィンドウステーションでその場限りでアドミン権限で実行させるため」のものと
よく確信できたね。
じつは>>159==>>161


163:161
07/06/18 16:43:49
>>162
NT4.0時代では常套手段だったから。



164:デフォルトの名無しさん
07/06/18 18:48:49
>>158への対策として「別セッション上のデスクトップのウィンドウを操作したい」ってのは可能なの?
別セッションのHDESKに接続できれば何とかなりそうな気もするけどAPIが見あたらない・・・

165:デフォルトの名無しさん
07/06/18 18:58:04
>>163
それはatを実行する権限を持ったやつが必要だしなあ
fileman.exeをadminで実行してしまえばそこから起動するやつはみなadminだったっけな

166:デフォルトの名無しさん
07/06/18 21:48:52
VSのインテリセンスのような小窓?はどうやって実装しているんでしょうか。
解説しているサイトか取っ掛かりになるようなキーワードを教えてください。

167:デフォルトの名無しさん
07/06/18 21:54:26
ToolTipじゃねーの?

168:デフォルトの名無しさん
07/06/18 22:05:26
アクティブにしないフラグつっこんでShowWindowとかSetWindowPosしてるだけじゃね?
と考えるおれは素人

しかしToolTipを間違ってクリックするとフォアグラウンド奪う実装は
なんとかしてほしい

169:デフォルトの名無しさん
07/06/18 22:16:49
CD-Rソフトのように、アプリケーションの起動中のみ、
CDやUSBメモリのようなメディアを接続しても
オートランを働かせないようにするにはどうしたら良いでしょうか?

170:デフォルトの名無しさん
07/06/18 22:28:10
>>169
おちつけ
kwsk

171:デフォルトの名無しさん
07/06/18 22:37:30
R焼きソフトを起動中にオートランが起動しないのは、
CDドライブを握ってる副作用みたいなもん。
USBメモリは差し込む前にデバイスを握ることができないので
機能として実装するのは難しかったはず。

172:デフォルトの名無しさん
07/06/18 22:58:21
一時的にオートランの設定をOFFにする。
問題はアプリが異常終了したとき、OFFのままになる。

173:デフォルトの名無しさん
07/06/19 01:29:37
プログラムが異常終了していないか監視するプログラムを作る。

174:デフォルトの名無しさん
07/06/19 01:33:09
OSが終了しないとも限らない
OSの監視も必要だ

175:デフォルトの名無しさん
07/06/19 01:56:01
OSごと異常終了することへの対策は、

アプリが起動したら、
レジストリの自動実行に、オートランの設定を元に戻すプログラムを登録し、
アプリが正常終了したら、その登録を消すようにすればいい。

元に戻すプログラムは実行されたら、自分で自動実行の登録を消すのも忘れずに。

176:デフォルトの名無しさん
07/06/19 02:26:48
autoun関係のレジストリって、変更後再起動しないと
explorerが認識してくれないこと無い?

177:デフォルトの名無しさん
07/06/19 02:28:36
Win95を無視するなら
RegisterWindowMessage(TEXT("QueryCancelAutoPlay"))
をどうぞ

178:デフォルトの名無しさん
07/06/19 10:24:04
マルチポストあんましたくないんですが、すみません、このスレでいいのか迷うんですが、
Windows2000やXP、Vistaで、アプリからサービスを一時的に停止したり
開始したりする方法を教えて下さい。
宜しくお願いします。

179:デフォルトの名無しさん
07/06/19 10:27:58
やばい機能に使えそうだから教えない

180:デフォルトの名無しさん
07/06/19 10:28:46
net start/stop呼んどけ

181:デフォルトの名無しさん
07/06/19 10:32:23
マルチは嫌い。

182:デフォルトの名無しさん
07/06/19 10:34:02
>>178
>マルチポストあんましたくないんですが
ふざけんな阿呆。
PC一般板にでも逝け。
そして二度と来るな。

183:デフォルトの名無しさん
07/06/19 13:57:40
静的ライブラリにリソースファイル (.res) を入れました。
このライブラリを別のプログラムからリンクした場合、
リソースがリンクされないようなのですが、どうしてでしょうか。
解決策はないでしょうか。

184:デフォルトの名無しさん
07/06/19 14:14:56
.libにリソースは入れられない

185:デフォルトの名無しさん
07/06/19 15:52:58
ええ?でも VC8 でビルドすると自然に入りますよ。

186:デフォルトの名無しさん
07/06/19 16:00:40
入る?DLLとかじゃなくて?

libってのは、objファイルを集めたもので、リンク時に使われてる関数が含まれてる
objファイルを取り出してリンクするためのものだから、resが入ってても困ると思うんだが。

187:デフォルトの名無しさん
07/06/19 16:12:27
>>186
入るよ。 lib.exe /LIST Some.lib とかコマンド打つと、.res が入っている。
.obj も .res も link.exe への入力になるんだから、
そのまま .res もリンクしてくれればいいのだけど、
どうもしてくれないみたい。何かオプションがいるのかな。

188:デフォルトの名無しさん
07/06/19 16:16:31
いや、、そのresは名前をつけられるの?

189:デフォルトの名無しさん
07/06/19 16:22:04
そりゃ、静的ライブラリを作るプロジェクトの
リソースコンパイラの設定でできるよ。

190:デフォルトの名無しさん
07/06/19 18:36:56
borlandなりgccなりvcなりしかるべき処理系のスレにいったほうが幸せになれると思うよ

191:デフォルトの名無しさん
07/06/19 18:54:28
VC8じゃstaticライブラリのプロジェクト設定にはリソースコンパイラ用のページが現れないな。
ファイルを混入させることはできても、リソースとしてリンクさせることはできないんだろう。

192:デフォルトの名無しさん
07/06/19 22:04:46
>>164
SetThreadDesktop

193:デフォルトの名無しさん
07/06/20 01:03:05
>>192
別セッション上のデスクトップのハンドルって取得できるの?

194:デフォルトの名無しさん
07/06/20 03:11:36
ライブラリにリソースを入れるのはいいとして、
ライブラリの中身全てがリンクされるわけじゃないぞ。

参照しているものだけがリンクされるんだ。
だから、リソースをライブラリに入れただけでは、リンクされないぞ。

ちゃんと、そのリソースを参照しないとな。

195:SEX
07/06/20 04:21:18
WNDCLAS"SEX"
INITCOMMONCONTROL"SEX"

196:デフォルトの名無しさん
07/06/20 07:04:20
こういう事って可能でしょうか?
A.EXEからB.DLLのエクスポート関数を呼び出したのを監視するプログラムを作る。
可能であれば方法を教えて下さい。

197:デフォルトの名無しさん
07/06/20 07:20:58
Bの方に通知機能を入れておけ

198:196
07/06/20 08:06:04
それがA.EXE、B.DLLともソース閲覧のみで変更は許されてないんです。
関数はB.DLLのリストビューウィンドウを呼び出すもので負荷の少ない通知メッセージを探しているんですけど。

199:デフォルトの名無しさん
07/06/20 08:29:19
つ[Spy++]

200:20
07/06/20 08:30:59
>>196
APIフック。AdvancedWindowsの弟4部 DLL を読めば解決すると思います。

201:196
07/06/20 09:08:51
>>199
とりあえず、WM_CREATEで作れました。
>>200
アッー!APIフックですかぁ。確かにできますね。
AdvancedWindows買うつもりですが高いですね。
ありがとうございました。

202:デフォルトの名無しさん
07/06/20 09:13:54
>>191
> VC8じゃstaticライブラリのプロジェクト設定にはリソースコンパイラ用のページが現れないな。
> ファイルを混入させることはできても、リソースとしてリンクさせることはできないんだろう。
ページはあるよ。ちゃんとやってみた?
リソースはデフォルトでライブラリに含まれるようになっている。

>>194
> ちゃんと、そのリソースを参照しないとな
どうやって参照するの?
リソースIDで参照しても参照したことにならないよね?

203:デフォルトの名無しさん
07/06/20 09:36:25
>>202
>どうやって参照するの?
だから名前付けられるのかって聞いたんだよ
意味が無いということを説明したいのに反論ばかりして
人の言うこと聞く気も無いだろ、キミ

204:デフォルトの名無しさん
07/06/20 09:57:53
それ以前にスレ違いだ

205:デフォルトの名無しさん
07/06/20 10:10:17
>>203
ああ、そういことね。了解。すんません。

206:デフォルトの名無しさん
07/06/20 17:51:12
workgroup の 自分のマシン名を得るのはどのようにすればよいのでしょうか?

207:デフォルトの名無しさん
07/06/20 17:57:41
>>206
Windowsの正規の呼び方ではない、
「マシン名」なんていう言い方をするから、
わからんのですよ。

正しい呼び方は、コンピュータ名。
MSDNライブラリで、GetComupterまで入力すれば、候補のリストに
GetComputerName
GetComputerNameEx
あたりが見つかるでしょう。



208:206
07/06/20 18:08:49
>>207 ありがとうございます。できました。

ついでに環境変数にもいっぱいあったのでそれも参考にします。

209:デフォルトの名無しさん
07/06/20 21:03:58
>>207
× コンピュータ名
○ NetBIOS名

210:デフォルトの名無しさん
07/06/20 21:53:59
>>193
調べてないけどターミナルサービス関係のAPIで何とかなったりしない?
Vistaでは常にセッションが分かれるけどXPでも高速ユーザー切り替えや
リモートデスクトップ使っているときは意識する必要があるはずだから

211:デフォルトの名無しさん
07/06/20 23:41:09
>>209
マイコンピュータのプロパティを開いて、タブの一覧を見よ。
「コンピュータ名」と書かれているから。

212:209
07/06/21 00:08:15
>>211
スレ違いだけど↓
URLリンク(www.monyo.com)

213:デフォルトの名無しさん
07/06/21 00:16:13
>>212
GetComputerNameをMSDNライブラリで引いてみなよ。
NetBIOS名を取得するって書いてある。

とはいえ、
GetNetBIOSなんとか
ではないんだよ。

あくまでも、
GetComputerNameなの。


214:デフォルトの名無しさん
07/06/21 00:18:28
どうでもいい

215:209
07/06/21 00:36:58
>>213
APIの名称については文句をいっていない。
問題にしているのは「正しい呼び方は、コンピュータ名」<この部分
URLリンク(msdn2.microsoft.com)
>Retrieves a NetBIOS or DNS name associated with the local computer. The names are established at system startup, when the system reads them from the registry.

216:デフォルトの名無しさん
07/06/21 01:01:26
もうバカはほっとけよ

217:デフォルトの名無しさん
07/06/21 01:29:03
>>215
コンピュータ名 = NetBIOS名もしくはDNS名

ドメインコントローラがActiveDirectoryの場合は、NetBIOS名にならない。

218:デフォルトの名無しさん
07/06/21 04:34:48
>>215
その英文から「NetBIOS名」という超訳をひねりだせる脳味噌に感激

219:デフォルトの名無しさん
07/06/21 07:15:33
NetBIOS or DNS name
だからNetBIOS名かDNS名だろ

220:デフォルトの名無しさん
07/06/21 09:55:18
NetBIOS無くてもFQDNでアクセスできるからなあ

221:デフォルトの名無しさん
07/06/21 10:15:04
>>217 その内容については知っている
>>206に「workgroupの~」って付けて発言しているから
DNS HOST名を包括しているコンピュータ名という用語を>>207

使用するのは正しくないと>>209でいいたかっただけ

222:デフォルトの名無しさん
07/06/21 10:23:54
FDQN

223:デフォルトの名無しさん
07/06/22 13:44:36
特定のプロセスIDの所有するすべてのスレッドIDを取得したいんだけどどのAPIでやりますか?
スレッドIDで過去ログGrepしたけどないんで教えてください。
後、フックを入れてフォアグラウンドになったときをつかまえてスレッドID取得というのは無しの方向で。

224:デフォルトの名無しさん
07/06/22 14:14:18
Tool Helpでも使えば

225:デフォルトの名無しさん
07/06/22 14:16:05
Tool Helpだな

226:デフォルトの名無しさん
07/06/22 14:27:17
>>224
>>225
ありがとう。AdvancedWindowsのProcessInfoアプリケーションがサンプルになりました。

227:デフォルトの名無しさん
07/06/22 15:10:41
SystemParametersInfo()の電力管理フラグ、
スクリーンの低消費電力モードとスクリーンの電力停止モードはどう違うのでしょうか?
どちらも同じ値が返ってきますが。

228:デフォルトの名無しさん
07/06/22 17:33:28
文字通りなんじゃねーか?
コンパネの電源管理には電源を切る時間しか出てないから実際には使われてないのかも

229:デフォルトの名無しさん
07/06/22 18:17:32
マウスとキーボードが10分間放置されたときに自動的に終了するアプリを作りたいんだけど、
マウスのほうは定期的に座標を調べれば動いてるかどうかわかるが、
キーボードの無操作を検知するにはどうしたらいい?

自プロセスはタスクトレイに入っているのみ。


230:デフォルトの名無しさん
07/06/22 18:21:54
スクリーンセーバーにしろw

231:デフォルトの名無しさん
07/06/22 18:28:58
普通に考えたらジャーナルフックとかじゃないのか

232:デフォルトの名無しさん
07/06/22 18:58:09
>>229
普通にKEY_DOWN捕まえるだけじゃねぇか
バカじゃねぇのプtゥtw
フックが嫌ならGetAsyncKeyStateとかで

233:デフォルトの名無しさん
07/06/22 20:51:04
無操作を検知するのにKEY_DOWNとな!

234:デフォルトの名無しさん
07/06/22 21:14:34
>>233
はいはいアホアホ


235:デフォルトの名無しさん
07/06/23 00:05:34
>定期的に座標を調べれば動いてるかどうかわかるが
そもそもなんでこれでマウスが操作されてないかどうか解るんだ?
走査頻度にもよるが、同じ位置に戻ってたら動いてるかどうか解らないのでは?
移動せずにボタンだけ使ってるとかも解らない気がするし

236:デフォルトの名無しさん
07/06/23 00:15:12
フックでキーとマウスのイベントを取得して、
イベント発生ごとにタイマーをリセットすればいい。

237:デフォルトの名無しさん
07/06/23 01:45:52
なんという頭の良さ
まるで天才ではないか

238:デフォルトの名無しさん
07/06/23 01:50:08
初めからそう言ってるじゃねぇか

239:デフォルトの名無しさん
07/06/23 01:58:32
最初の質問からして初心者過ぎるAPI以前の問題
下手なアプリ作ってPC壊さないようにね

240:229
07/06/23 02:03:56
フック限定ですか?
アッパーとかでは無理でしょうか?

241:デフォルトの名無しさん
07/06/23 02:17:28
ハートブレイクショットならいけるかも

242:デフォルトの名無しさん
07/06/23 02:50:08
瞬獄殺ならおk

243:デフォルトの名無しさん
07/06/23 02:59:57
>>240
フックもできないお前にアッパーは無理だろ
ドライバ書いた事有るのか?

244:デフォルトの名無しさん
07/06/23 12:17:51
ブルースクリーン直行が落ちだろうな。
悪いこと言わないから、スタンバイか休止状態で妥協しとけ。

245:デフォルトの名無しさん
07/06/23 13:19:25
WindowsでおよそのLoad Averageを計算したいのですが、処理待ちのプロセス数はどうやって求められますか?

246:229
07/06/23 14:12:18
KEY_DOWNを使ったのですが
自分のウィンドウがアクティブじゃなかったので
取れませんでした
騙したわね!!

247:デフォルトの名無しさん
07/06/23 14:23:18
自分のウインドウしかとらないように作れば当たり前だろ。
なんでそんなに頭が悪いんだ?

248:デフォルトの名無しさん
07/06/23 14:35:01
だから教えるだけ無駄
親切に教えてやっても騙されたと思うんだぜ

249:デフォルトの名無しさん
07/06/23 14:42:45
マウスカーソルの下にある文字列を取得する方法ってない?

250:デフォルトの名無しさん
07/06/23 14:50:58
ある

251:デフォルトの名無しさん
07/06/23 15:05:14
ないあるよ

252:デフォルトの名無しさん
07/06/23 17:07:40
>>245
パフォーマンスカウンタ。

ThreadオブジェクトのThread Stateカウンタにスレッドの状態が出るから、
自分で全スレッドのインスタンスに対して状態をチェックして集計しる!

253:デフォルトの名無しさん
07/06/23 17:09:12
LISTBOXにADDSTRINGする場合、文字列のデータはWindowsがコピーして管理してくれるんですか?

254:デフォルトの名無しさん
07/06/23 17:19:15
MSDN見ろよ…

255:デフォルトの名無しさん
07/06/23 17:19:44
   ∩___∩         |
   | ノ\     ヽ        |
  /  ●゛  ● |        |
  | ∪  ( _●_) ミ       j
 彡、   |∪|   |        J
/     ∩ノ ⊃  ヽ      >>253
(  \ / _ノ |  |
.\ “  /__|  |
  \ /___ /

256:249
07/06/23 17:26:03
>>250
サンクス

257:デフォルトの名無しさん
07/06/23 17:51:25
>>253
そう

258:デフォルトの名無しさん
07/06/23 18:45:37
HWND既知のあるウィンドウが閉じられるときそのWM_DESTROYを取得するために、
サブクラス化というのを使えば出来そうだという所までは分かりましたが書式が分からないので
このページのサンプル
URLリンク(www.wisdomsoft.jp)
LRESULT CALLBACK WndProc()内 の rect_box = CreateWindow{......}; の部分を
rect_box = FindWindow("Notepad",NULL); //メモ帳のハンドル
と書き換え
LRESULT CALLBACK StaticProc() のswitch内に case WM_DESTROY: と追加しても
メモ帳終了時のWM_DESTROYが取得できていないようです。

どのようにすれば正常に動くのでしょうか?

259:デフォルトの名無しさん
07/06/23 18:57:12
それ別プロセスのは無理よ

260:デフォルトの名無しさん
07/06/23 20:24:50
ファイルにNTFS圧縮かけるAPIってある?
EFS暗号化ならあるのに、こっちがわからん。

261:258
07/06/23 21:08:59
>>259
あのサンプルでは出来ないんですか。
サブクラス化するという手段自体が間違ってますか?

262:デフォルトの名無しさん
07/06/23 21:13:37
間違ってはない
フック使えばサブクラス化でもできる

263:デフォルトの名無しさん
07/06/23 21:17:12
>>260
FSCTL_SET_COMPRESSION しらべれ

264:デフォルトの名無しさん
07/06/24 12:10:05
ねーねー
ほかのプロセスが開いてロックしているファイルを
横から開くにはどうすればいいのん?

265:デフォルトの名無しさん
07/06/24 12:10:58
それ可能なのか?そんなことできるならロックの意味がないような・・

266:デフォルトの名無しさん
07/06/24 12:14:25
プロセスを終了させる

267:デフォルトの名無しさん
07/06/24 12:20:55
リードだけなら出来たりしないのかな?
試しにエディタで開いてみたら
書き込めませんよーってエラー出たけど開くのだけは出来たよ

268:デフォルトの名無しさん
07/06/24 12:26:45
そのプロセスが FILE_SHARE_READ でファイルを開いてたんだろ。
0 だと読み取りも書きこみも禁止される。

269:デフォルトの名無しさん
07/06/24 12:42:07
つかCreateFileの引数の解説読んでれば想像付くけどな

270:デフォルトの名無しさん
07/06/24 13:09:39
それようのモードがあったのか
ありがと^^

271:デフォルトの名無しさん
07/06/24 15:05:41
ちょい質問。

Win2000、XPで Windows+M押下時と違って
Windows+Dを押した時何かのフラグが立ったみたいで
なんとかforeground();関数で
ウィンドウを最前面にもってこれないんだけど
方法わかる方いたら教えてください。。

よろしくです。

272:デフォルトの名無しさん
07/06/24 16:04:38
せっかくしまったのに余計なことをしないでください。

273:デフォルトの名無しさん
07/06/24 18:15:36
ウィンドウズ乙

274:デフォルトの名無しさん
07/06/24 18:23:40
WinXPにおけるメモリマップドファイルについて質問なのですが、

・HDDのファイルがメモリに複写されているわけではなく、あくまで仮想的なアドレスをファイルに割り振っているだけ。
 よって、メモリにマッピングした直後はメモリはそれほど消費しない。

・マッピングされたファイルを書き換えた情報は一端メモリに蓄積され、マッピング終了時にHDDのファイルへ反映される。
 なので、マッピングされたファイルにデータを書き込めば書き込むほどメモリの使用量が増えていく。

という解釈であっているのでしょうか?

275:デフォルトの名無しさん
07/06/24 19:24:30
読み込むだけでも消費した気がする

276:デフォルトの名無しさん
07/06/24 19:39:01
>>274
基本的にはそんな理解でいいと思う
細かい動作はページングファイルと同じように考えればいいはず
メモリが足りなくなってくればHDDへ書き出される(読み取りしか行っていないなら捨てられる)
メモリが余ってくれば読み込まれてゆく

277:デフォルトの名無しさん
07/06/24 20:46:24
自前のコンソール画面を作りたいのですが、
APIで簡単に作る方法ってありますか?

278:デフォルトの名無しさん
07/06/24 20:49:39
AllocConsoleじゃなくて自前で一から作りたいって事?

279:デフォルトの名無しさん
07/06/24 20:54:58
eclipseのコンソール見たいのが作りたいです

280:デフォルトの名無しさん
07/06/24 20:57:27
エディットコントロールにでも流せばいいじゃない

281:デフォルトの名無しさん
07/06/24 21:09:19
WM_SETTEXTですか?

282:デフォルトの名無しさん
07/06/24 21:32:17
エディットコントロールの追記なら最後尾にカーソル移動してEM_REPLACESELを投げる
背景を変えたければ親でWM_CTLCOLOREDITを受ける

283:デフォルトの名無しさん
07/06/24 21:36:59
printfでエディットコントロールに書き込めるようにはできませんか?

284:デフォルトの名無しさん
07/06/24 21:40:06
stdoutを受け取って回送させるか、バッファに入れてから再度送りつけるか好きなようにやれ。

285:デフォルトの名無しさん
07/06/24 21:42:19
できますがスレ違いですね。
汎用化でも目指しているんですか?
それともコーディング能力不足ですか。

286:デフォルトの名無しさん
07/06/24 22:07:41
printf使いたいってのはコーディングする側の問題だろ
sprintfした文字列をエディットコントロールに追加すればいいじゃん

287:デフォルトの名無しさん
07/06/24 22:15:44
printfの出力先を変えられればコンソール・ウィンドウ両対応が簡単かなと思ったんですが
やっぱりそこまでは無理ですか…

288:デフォルトの名無しさん
07/06/24 22:30:17
だから無理じゃないってば
API以前に言語の勉強をしなさい。

289:デフォルトの名無しさん
07/06/24 22:35:08
その(頭の)現状では無理だな

290:デフォルトの名無しさん
07/06/24 22:49:46
>>288
stdoutをAllocConsole使う時見たく変えるってことですか?

何を指定すればエディットに流せるか分からないのはやっぱ知識不足なのかorz

291:デフォルトの名無しさん
07/06/24 22:56:41
もしかしてEM_STREAMOUTが関係ありですか?

292:デフォルトの名無しさん
07/06/24 23:06:08
Windowsプログラミングなんてバッドノウハウの数が技量に直結するから
「これかっ?」っと思ったことは片っ端から試してみるのも自分のためになると思うぜ

293:デフォルトの名無しさん
07/06/24 23:19:11
と言ってもfreopen以外に変える方法知らないんですけど…

294:デフォルトの名無しさん
07/06/24 23:21:37
メモリマップファイルは使いにくいね。

1つは、
SetProcessWorkingSetSize()で最大ワーキングセットサイズを設定しても、多量にメモリを食って、他のプロセスに優しくない。
かといって、SetProcessWorkingSetSize(,-1,-1)を頻繁に呼ぶのも美しくなく、
かといって、リンカに/WS:AGGRESSIVE付けても、なんだかなぁ、と。

もう1つは、
いまどきのハードディスクはシーケンシャルにアクセスしないと速度が出ないため、
メモリマップして任意にメモリアクセスすると、ランダムアクセスになってしまうこと。
結局、シーケンシャルスキャンのヒント付けて、各ページの先頭を触って、
予めメモリに読みこんでおくという作業が必要になってしまう。


295:デフォルトの名無しさん
07/06/24 23:22:26
>>293
知らなければ調べろよ。

296:デフォルトの名無しさん
07/06/24 23:31:46
今時メモリの消費量とかHDDの消費量を考えるのは不毛な気がする

リークで不安定になるとかだったら分かるが

297:デフォルトの名無しさん
07/06/24 23:35:49
勘違いしてる人がもう一人

298:デフォルトの名無しさん
07/06/24 23:44:15
>>294
とりあえずそのあたりを調べてみます

299:デフォルトの名無しさん
07/06/24 23:51:42
ぐぐっても6件…
MSDN引くか…


俺のチラ裏にしちゃってもいいけどAPI一つでできることならそれだけ教えてくれるとありがたい

300:デフォルトの名無しさん
07/06/24 23:55:11
誰お前

301:デフォルトの名無しさん
07/06/25 00:02:02
SetStdHandleか!

302:デフォルトの名無しさん
07/06/25 00:57:11
>>299
ここは、お前のための、チャット会議室じゃないんだぞ。


303:デフォルトの名無しさん
07/06/25 01:04:56
>>296
> 今時メモリの消費量とかHDDの消費量を考えるのは不毛な気がする

そう思っていた時期も(AA略

パフォーマンスに無頓着なプログラムは、ハードウェアがどんどん速くなっても、その恩恵を受けられないことが多い。
というのも、ハードウェアの速くならない部分の性能に依存してるから。



304:デフォルトの名無しさん
07/06/25 05:57:13
MSDNにVistaのAPIが続々追加されてる
ほとんどVista専用で邪魔だ
言語フィルタみたいにOSでフィルタリングしてくれないかな

305:デフォルトの名無しさん
07/06/25 05:57:59
Vista以前のOSにしがみついてる奴らをフィルタリングすればいいんじゃね?

306:デフォルトの名無しさん
07/06/25 07:15:15
そんな子としたら儲からない

307:デフォルトの名無しさん
07/06/25 08:27:20
SetWindowsHookExでとれるHHOOKをGetWindowsHookExみたいなのでとれないですか。
ThreadIdから自分にかけられているHOOKとか人にかかっているHOOKとかを知りたいです。

308:デフォルトの名無しさん
07/06/25 08:38:26
SetWindowssHookExをAPI-Hookしろ

309:デフォルトの名無しさん
07/06/25 09:17:51
お前ら、フック大好きなんだな。



310:デフォルトの名無しさん
07/06/25 11:00:23
彼女フック出来ないからAPIフックして憂さ晴らしてると思われ。

311:デフォルトの名無しさん
07/06/25 11:50:00
>>310
彼女とするのはファックだろ

312:デフォルトの名無しさん
07/06/25 12:49:05
>>311
鼻フックの間違いじゃね?

313:デフォルトの名無しさん
07/06/25 12:53:51
何この流れ。これが月曜の流れか

314:229
07/06/25 16:40:07
229です。
ちなみに240は僕じゃありませんがそれはさておき。

ご意見参考になりました、ありがとうございます。
グローバルフックでWH_MOUSEとWH_KEYBOARDを定期的にチェックし、
システムタイマを取得して更新するみたいな感じですかね。

OSがスクリーンセーバを起動するのには同様の処理をしてるのかな。
それに使ってる「最終操作時刻」みたいのがどっかから取得できれば、
グローバルフック使わなくて済むんですが。
無いかなあ。。。

315:デフォルトの名無しさん
07/06/25 16:52:10
だから「最終操作時刻」を提供する側になれ
それとは別に、試しにスクリーンセーバー作ってみ

316:229
07/06/25 16:57:01
>>315
なんか勝手に初心者扱いされてますが、システムフックを書こうと思えば書けますよ。
ただ、OSが知ってるはずの「最終操作時刻」をとる方法、
もしくは無操作タイムアウトイベントみたいのを取得する方法が無かろうかと思って
最初に書いたようなプリミティヴな質問をしたわけです。

317:デフォルトの名無しさん
07/06/25 16:57:48
>>314
GetLastInputInfo

318:デフォルトの名無しさん
07/06/25 17:09:48
>>316
初心者ではないのなら、
最初から適切な質問のしかたをしろよ!


319:デフォルトの名無しさん
07/06/25 17:10:28
相変わらずノイズの多いスレだな。
初心者は回答しなくていいんだぞ。

320:デフォルトの名無しさん
07/06/25 17:15:50
ていうかさ、MSDNライブラリ(またはPlatformSDK)のヘルプ見てから質問してるんか?

ちょっと古い版で恐縮だが、
Platform SDKドキュメント
→User Interface Services
→Windows User Interface
→User Input
→Keyboard Input
→Keyboard Input Reference
→Keyboard Input Functions
→GetLastInputInfo
ここまで、迷うところは、ないぞ。


321:デフォルトの名無しさん
07/06/25 17:17:01
途中で俺が229の振りしてなごませたのに
やっぱりこうなったか
まさかアッパーなんて専門用語があるとは思わなかったがw

322:229
07/06/25 17:18:22
>>317
>>320

探してたのはそれです。僕が初心者でしたすいませんでした。
本当にありがとうございます。

323:デフォルトの名無しさん
07/06/25 17:35:02
これにて一件落着めでたしめでたし。
なんか逆転裁判おもいだした

324:デフォルトの名無しさん
07/06/25 17:37:13
アッパーワロタ

325:デフォルトの名無しさん
07/06/25 21:18:16
>>316システムフックなんか書けて当たり前
>>322初心者なんじゃんw

326:デフォルトの名無しさん
07/06/25 22:25:16
鬼の首を取ったかの様に

327:デフォルトの名無しさん
07/06/25 23:34:54
しかしおまえら、
ママンとフックが好きだなw

328:デフォルトの名無しさん
07/06/25 23:39:39
初歩的な質問させてください。
クライアント領域のサイズが640*480のウィンドウを作る場合、
WindowCreate関数の第6、第7引数を

640 + GetSystemMetrics(SM_CXDLGFRAME)*2
480 + GetSystemMetrics(SM_CYDLGFRAME)*2 + GetSystemMetrics(CYCAPTION)

とすればいいんですか?(メニューやステータスバーはないものとする)

というか、GetSystemMetricsの引数に
SM_CXBORDERをいれた場合とSM_CXEDGEを入れた場合とSM_CXDLGFRAMEを入れた場合で
ウィンドウのどの部分のサイズを指しているのかよくわかりません。
MSDNみても違いがわかりません。教えてください・・・

329:デフォルトの名無しさん
07/06/25 23:41:43
そういう用途では、AdjustWindowRectを使え、と昔
どっかで誰かが言ってたのを聞いた希ガス

330:デフォルトの名無しさん
07/06/26 00:19:57
状況によってサイズが異なるので、適正なサイズになるまでリサイズを繰り返すしかない。
一発で計算するのは無理。

331:デフォルトの名無しさん
07/06/26 00:21:43
いや普通にAdjustWindowRect使えよ

332:デフォルトの名無しさん
07/06/26 00:36:14
AdjustWindowRectはメニューが2段になると縦のサイズが
合わなくなるが、縦を調節し直せば無問題。

333:デフォルトの名無しさん
07/06/26 00:37:09
AdjustWindowRectを使っても、メニューバーの折り返しの分までは
面倒を見てくれないとかそういう話かな?

334:328
07/06/26 01:16:09
なるほど、素直にAdjustWindowRect使えばよかったんですね。
無理してGetSystemMetrics関数を使うのはやめます。

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

335:デフォルトの名無しさん
07/06/26 01:43:07
>>322
調節し直す必要があるかどうか判断できないんとちゃう?
判断するにはメニューに表示される文字列が必要だけどAdjustWindowRectは
MENUの有無をBOOL型で渡すだけでHMENUを渡す設計になってない

336:デフォルトの名無しさん
07/06/26 03:28:12
>>335
AdjustWindowRectで使ったクライアント領域(A)
サイズ調整後にGetClientRectで取得したクライアント領域(B)

A>Bならメニューが複数行って判定できるんじゃね?
思いつきだが

337:307
07/06/26 08:21:21
>>308
回答、ありがとうございます。
SetWindowsHookExとSetWindowsHookにAPIHOOKをかける方法だとすでにフックがかけられている場合、みつけられないです。

338:デフォルトの名無しさん
07/06/26 09:39:02
フックを見つけてどうするの?

339:307
07/06/26 10:42:24
UnHookするとか情報を表示するとか。。。etc。
勉強中です。具体的には、dwThreadId = 0でフックをかけて、仕込んだHookDLLのアタッチで別のDLLを呼んで、
呼んだDLLにフックした処理を渡したりしてるんですが、
UnHookしてもなんでかデタッチが実行されておらず、デスクトップをフリーズみたいな状態にしてしまうんで、
Hookを仕掛けた状態とかを見たいとかいろいろです。
dwThreadIdに特定のスレッドを渡すとデタッチが起こるんで、調べる参考にしたいと。

340:デフォルトの名無しさん
07/06/26 12:24:25
グローバルフック登録時に
SetWindowHookEx完了時から帰り値のHHOOKを共有メモリに格納する一瞬の間に
コンテクストスイッチが発生しHHOOK格納前にフック関数が呼び出されるという可能性に対して
とういった対策が可能でしょうか
現在のPSDKのドキュメントだとCallNextHookExの第一引数は無視される仕様に変わったようなので気にしなくてもいいのでしょうか?

341:デフォルトの名無しさん
07/06/26 14:22:47
ハンドルからリストボックスなのかコンボボックスなのか
判断するには、、どうやるのですか?

342:デフォルトの名無しさん
07/06/26 14:27:38
GetClassName

343:デフォルトの名無しさん
07/06/26 14:46:01
>>340
Mutexで排他制御。


344:デフォルトの名無しさん
07/06/26 14:56:41
>>342
ありがとうございました。

345:デフォルトの名無しさん
07/06/26 16:20:24
>>340>>343
そのタイミングって排他制御する必要があるほどのものなのかね?

346:デフォルトの名無しさん
07/06/26 17:00:22
>>345みたいな馬鹿は迷惑だからプログラムを書くな。

347:デフォルトの名無しさん
07/06/26 17:57:00
>>340
第一引数が無視になってるとは知らなかった・・・
確かに
>>Windows NT/XP/2003: Ignored.
となってる。

ってことはNT系限定なら別に共有領域にハンドル置いといたりしなくてもいいのか?

348:デフォルトの名無しさん
07/06/26 18:08:52
>>345-346
「そんな事態は滅多に起こらないから無視していい」とかいうなら論外だが、実際MSの
ドキュメントやサンプルでもそのような排他制御を組み込んでいないから、「そのタイミ
ングでフック割り込みが発生することはない」という仕様になっているということは?

SetWindowsHookExでWH_CALLWNDPROCをインストールした次の行でSendMessage
してもフックは呼ばれるから、ほんとに一瞬しか待たないとは思うけど。

349:デフォルトの名無しさん
07/06/26 18:15:40
サンプルなんて手抜きに決まっているだろうに

350:デフォルトの名無しさん
07/06/26 18:25:05
じゃあ発生させてみろよm9(´Д`)プギャー

351:デフォルトの名無しさん
07/06/26 18:58:52
>>347
2000が抜けてるのが謎だな、どういう分類なんだろう

352:デフォルトの名無しさん
07/06/26 18:59:16
HHOOKを、無視されるCallNextHookExに渡すためだけなら
むーてっくす張るコストが限りなく無駄じゃあないの?

353:デフォルトの名無しさん
07/06/26 21:45:08
>>348
> SetWindowsHookExでWH_CALLWNDPROCをインストールした次の行でSendMessage
> してもフックは呼ばれる

それは当たり前だと思う。
SendMessageなんだから。

354:デフォルトの名無しさん
07/06/26 21:49:56
>>353
地味にワロタ

355:デフォルトの名無しさん
07/06/26 21:50:32
ところでさ、

SendNotifyMessage
URLリンク(msdn2.microsoft.com)
に、
WM_USERより下のメッセージを送るときはスタック上のポインタを渡すな
OSが引数のマーシャリングしてやるのは0~WM_USERだけだぞ
というようなことが書いてあって、矛盾してるぞ! と思ったのだが・・・

WM_USERより下というのは、

0~WM_USER-1
WM_USER~0x7FFF
WM_APP~0xBFFF
0xC000~0xFFFF

という並びで書いたときの、下、っていう意味なんだな・・・orz

356:デフォルトの名無しさん
07/06/26 21:57:01
winsockを利用してチャットの様に通信するソフトを試したのですが
自分のPC内で通信は成功したのですが
ネットにでようとするとつながりません

プロバイダから割り当てられているのが
プライベートIPなので
WAN側のIPを指定してみましたが
これが問題でしょうか?
(ルータ等は使っていません)

ソースほぼここのサンプルまんまと考えてください
URLリンク(www.geekpage.jp)
よろしくお願いします

357:デフォルトの名無しさん
07/06/26 22:08:36
>>356
プログラム書く前にネットワークの勉強をしろ。
話はそれからだ。

358:デフォルトの名無しさん
07/06/26 22:27:31
>>356
ネットワークプログラミング相談室に来たら相手してもらえるかも

359:デフォルトの名無しさん
07/06/26 22:37:15
どっちかというと>>357

360:デフォルトの名無しさん
07/06/26 22:43:33
いまさら聞けないインターネット入門とかみましたが
SMTP,POPの仕組みとか広すぎてわけがわかりません><

361:デフォルトの名無しさん
07/06/26 22:45:42
>>360
結論だけ言ってしまうとグローバルIPが手に入らないと外部との通信は無理

362:デフォルトの名無しさん
07/06/26 22:56:55
やっぱりそうなんですか・・・orz
入門のとこ読んでるうちに
WAN側のIPはグローバルらしいのでいけるかもって思ったのですが

363:デフォルトの名無しさん
07/06/26 22:58:57
WAN側ってISPのIPだろ。つーかスレ違い

364:デフォルトの名無しさん
07/06/26 23:00:41
>>357
いやいや、日本語の勉強をしたほうがいいと思う。

> winsockを利用してチャットの様に通信するソフトを試したのですが

ソフト?
何か不安になる言い方。

> ソースほぼここのサンプルまんまと考えてください

ソースはほぼここのサンプルのまま
と言わないのは、
ソースはほぼここのサンプルのまま
ではないからなんだろうか。

もしや、他人が作ったソフトの話をしているのではあるまいな?

ちなみに、
サンプルから変えた場所に問題があることも考えうるので、
普通は、どこをどう変えたのか書くか、
短いのだから全部をコピペして示したほうがいいことが多い。

365:デフォルトの名無しさん
07/06/26 23:03:18
>>356
> 自分のPC内で通信は成功したのですが
> ネットにでようとするとつながりません

ネットって何だ。
インターネットのことか? なら、インターネットと書け。

切り分けとして、
同一PC上
同一LAN上
インターネット越し
の3段階があるわけで、
まずは同一LAN上を試したのかな、と。

366:デフォルトの名無しさん
07/06/26 23:04:42
>>356
> WAN側のIPを指定してみましたが

何の「WAN側のIP」なんだ?
通信する相手は、どこにいるんだ?

367:デフォルトの名無しさん
07/06/26 23:06:55
止めろお前らwwww

368:デフォルトの名無しさん
07/06/26 23:08:24
最後まで責任持つつもりで弄ってるのか

369:デフォルトの名無しさん
07/06/26 23:18:28
通信相手というか
IPなどを確認できるHPから入手した自分のIPをいれて
自分のPC→インターネット→自分のPCといった経路を試したかっただけです

確かに読み直すとわかりにくかったですね。
日本は世界でも一番難しい言語なのでお許しください
>>363さんの意見が正解みたいですね
ありがとうございました

370:デフォルトの名無しさん
07/06/26 23:19:30
>日本は世界でも一番難しい言語なので

なるほど、あんたにとっては日本語さえまともに使えないと言うわけだ。

371:デフォルトの名無しさん
07/06/26 23:24:19
絡むなよ。長くなるだろ

372:デフォルトの名無しさん
07/06/26 23:28:24
>>369
つ推敲

373:デフォルトの名無しさん
07/06/26 23:33:22
>>369
君、香ばしいね。結構気に入ったよ、チュッ。またおいでね。

374:デフォルトの名無しさん
07/06/26 23:33:22
>>369
ルーターはそういう処理はしないよ

375:デフォルトの名無しさん
07/06/26 23:38:27
NATループバックとかいう、御節介をしてくれるルーターもあるけど、まぁあれだ。

376:デフォルトの名無しさん
07/06/26 23:44:17
>>369
本当にインターネットを介した通信のテストが必要なのかと小一時間。

その程度のプログラムなら、
LAN上の2台のPC(VirtualPC等でもいいよ)でテストすれば十分だ。

ていうか、場合によっては人様に迷惑をかけることにもなるので、
よくわからないうちはインターネットでテストしちゃいかん!

本当にインターネットでテストしないといけない場合は、
NTTのフレッツ系と、異なる2つのプロバイダを契約するとかしてだな・・・(以下略

377:デフォルトの名無しさん
07/06/26 23:44:56
>>364-366
まぁ普通に読めば分かるし、これは屁理屈というかうざいなw

378:デフォルトの名無しさん
07/06/26 23:45:21
育ってきた環境が違うから~スレ違いはしょうがない~♪

379:デフォルトの名無しさん
07/06/26 23:50:05
>>377
トラブルシューティング系の質問の基本を叩き込んでおかないと。


380:デフォルトの名無しさん
07/06/26 23:52:18
>ソフト?
>何か不安になる言い方。

これはないだろこれはw

381:デフォルトの名無しさん
07/06/27 00:46:21
EM_STREAMIN メッセージをリッチエディットに送信するときに
GetStdHandleを渡してもコンソールの内容を読めないのはなんでだろ(´・ω・`)

382:デフォルトの名無しさん
07/06/27 01:10:48
EM_STREAMINは標準ストリームから入力するわけじゃないから

383:デフォルトの名無しさん
07/06/27 01:14:51
もう少し詳しく書くと
EM_STREAMINってのはリッチエディットコントロールのウィンドウプロシージャから
アプリケーション定義の関数をコールさせてデータをストリーム入力するメッセージ
入力データはアプリケーション定義の関数内で自分で用意しなければならない

標準入力は全然関係ないよ

384:デフォルトの名無しさん
07/06/27 01:20:50
IStream と FILE *が混ざってるのだろうか?

385:デフォルトの名無しさん
07/06/27 08:44:39
ウインドウハンドルからスレッドIDとプロセスIDはGetWindow~で取得できるのですが、
スレッドIDから作成したウインドウハンドルを取得するAPIはありますか?
今はプロセスIDから取得したスレッドID、または、スレッドIDをEnumWindowで取得したスレッドIDと比較して
該当がないかどうか探しています。

386:デフォルトの名無しさん
07/06/27 08:56:56
GetWindowHandle

387:デフォルトの名無しさん
07/06/27 08:58:10
ああスレッドIDからか。じゃあシラネ

388:デフォルトの名無しさん
07/06/27 09:07:29
>>386
お前、それ楽しいか?

389:デフォルトの名無しさん
07/06/27 09:19:55
EnumThreadWindows?

390:デフォルトの名無しさん
07/06/27 09:25:57
GetGUIThreadInfo?

391:デフォルトの名無しさん
07/06/27 09:30:19
そのものズバリ、が無いのは1つとは限らないからだ

392:デフォルトの名無しさん
07/06/27 09:55:53
>>389
これですよこれ。
そのものずばりですね。ありがとうございました。

393:デフォルトの名無しさん
07/06/27 09:58:48
Enumは自分でもあげてるじゃん

394:デフォルトの名無しさん
07/06/27 10:00:12
EnumWindowがわかってて気がつかないってことは、
EnumWindowも人に聞いたんだろ。

395:デフォルトの名無しさん
07/06/27 10:09:54
IMEコンポジションウィンドウは使いたいが、IMEパッドは
使わせたくないという場合、パッドの起動を抑制する手段は
あるでしょうか?

396:デフォルトの名無しさん
07/06/27 12:08:20
>>343
Mutexなどで待機した場合
SetWindowsHookExの内部実装次第でデッドロックしますよね?

397:デフォルトの名無しさん
07/06/27 12:14:01
>>394
はエスパー

398:デフォルトの名無しさん
07/06/27 12:16:52
いや、Windowsの開発関係者だろう

399:デフォルトの名無しさん
07/06/27 12:36:51
そんなことより396

400:デフォルトの名無しさん
07/06/27 12:39:52
そんなことより400(σ・∀・)σゲッツ

401:デフォルトの名無しさん
07/06/27 12:46:05
目くそ鼻くそを洗う

402:デフォルトの名無しさん
07/06/27 12:48:50
いいことじゃん

403:デフォルトの名無しさん
07/06/27 12:51:48
>>394
すぐ隣に並んでいるんだから、普通は、気がつくよな。


404:デフォルトの名無しさん
07/06/27 13:04:07
俺はすぐ隣に並んでいるあいつの気持ちさえ気がつかなかったよ

405:デフォルトの名無しさん
07/06/27 13:18:16
>>394
おっしゃるとおり、EnumWindowsもGoogle先生に聞きました。
以後はMSDNの周辺等も調べてみます。

406:デフォルトの名無しさん
07/06/27 14:58:12
プロセスIDからそのプログラムが
どのような引数(CommandLine?)で動いてるか知る方法はありますか?

WMIの「Win32_Process」で取れるのですが
この方法だと「CommandLine」プロパティを見るのですが
Windows Server 2000ではサポートされてないんです。
(Windows Server 2003以降、Windows XP以降でサポートらしいです)

諦めかけてたんですが「ProcessExplorer」ってソフトで
CommandLineが見れるのでAPIで何とかなるのかと思い
質問しました。

よろしくお願いします。

407:デフォルトの名無しさん
07/06/27 15:02:26
フックで進入してGetCommandLineすればいいんじゃまいか?

408:デフォルトの名無しさん
07/06/27 15:27:15
>>406
ProcessExplorerはドライバまで使って色々やってるようだから、真似するのは大変よ。

プロセスのコマンドライン引数などの情報は、
プロセスのメモリ空間の決まった場所に格納されているので、
それをReadProcessMemoryで読んでしまうのがいいと思う。

どのアドレスに格納されているのかは、覚えてない。

409:デフォルトの名無しさん
07/06/27 15:29:16
NT系限定ならフックよりCreateRemoteThreadでのDLL注入のほうがローコストかもね
対象プロセスにウィンドウ無くてもいいし

410:デフォルトの名無しさん
07/06/28 12:00:47
>395 もお願いしますよ

411:デフォルトの名無しさん
07/06/28 12:12:07
コンポジションウィンドウって何だ?

412:デフォルトの名無しさん
07/06/28 12:21:09
>>396
例えば、どんな内部実装だとデッドロックすると思うの?

413:デフォルトの名無しさん
07/06/28 12:57:02
X Window SystemのLeaveNotifyイベントみたいな
マウスカーソルがウィンドウから出た
というのは、WM_* でいうと何に当たるんでしょうか?

414:デフォルトの名無しさん
07/06/28 13:25:29
>>413
WM_MOUSELEAVE
詳細はググって調べてくれ。普通は飛んでこないメッセージだから。

415:デフォルトの名無しさん
07/06/28 13:46:27
>>414
サンクス。流し読みした感じでは、自力で座標取得した方がいいかなこれは。

416:デフォルトの名無しさん
07/06/28 13:49:04
自力って、、、スレッドでループでもさせんのか

マウスキャプチャーしてるなら、こんな質問しないだろうしなあ

417:デフォルトの名無しさん
07/06/28 13:59:54
>>416
いや、古い環境では無理なんじゃないか?って意味。

418:デフォルトの名無しさん
07/06/28 14:07:19
95とかNT3.1とか相手にしてるの?
大変だね

419:デフォルトの名無しさん
07/06/28 14:18:47
>>417
そういう意味か。
気にするほど最近の話でも無いみたいだけど、
昔はそういう目的にはキャプチャーだったなあ

>>418
それは古すぎw
95はともかく、NTは3.51あたりで

420:デフォルトの名無しさん
07/06/28 14:28:39
変動する数値をアイコンに反映させたい場合どうすればいいでしょうか?
HBITMAPをHICON型に変換すればできそうなんですが、
方法も分からずもっと簡単な方法がありましたら教えて下さい。

421:デフォルトの名無しさん
07/06/28 15:24:21
>>420
そもそもそのアイコンはどこにどんな状態で表示するもの?

422:デフォルトの名無しさん
07/06/28 15:32:12
>>420
CreateIconで作るしかないんでない?

423:デフォルトの名無しさん
07/06/28 16:08:13
ありがとうございます。
>>421
タスクトレイのアイコンに数値でCPU使用率とか表示してるアプリがありますよね?
あんな感じで変動する数値を表示できたら便利だと思ったのです。
>>423
その方法も調べたのですがビットパターンがよく分からなくて一度諦めました。

424:デフォルトの名無しさん
07/06/28 16:17:16
CreateIconIndirectするか、イメージリストに追加してImageList_ExtractIcon

425:デフォルトの名無しさん
07/06/28 16:21:15
>>411
IME使った時に文字がフロートする部分ね。

要はIMEは使いたいがその時MEパッドは起動してほしくないと。

426:デフォルトの名無しさん
07/06/28 17:20:56
>>424
ありがとうございました。

427:デフォルトの名無しさん
07/06/28 23:08:03
ちょっとお舞ら
win32アピを利用して丸を描くプログラムを作ったんですよ
ほかのウインドウが被ってしまったんだけど
そしたらその部分が空白になっちゃったんだよ
ウインドウの状態も保持しないてどんな仕様してんだよ
不良品じゃね?

428:デフォルトの名無しさん
07/06/28 23:10:01
おまえが描画したい状態を保存しとけばいいんじゃね?
んでWM_PAINTが来たらまた描けばいいんじゃね?

429:デフォルトの名無しさん
07/06/28 23:16:16
ちょっとお舞ら
>>427って
不良品じゃね?

430:427
07/06/28 23:28:00
>>428
おれ記憶力わるいんで無理

431:デフォルトの名無しさん
07/06/28 23:28:37
諦める
これで解決

432:デフォルトの名無しさん
07/06/28 23:31:10
>>430
お前が記憶するわけではないのだからお前の記憶力などどうでもいい。
そのためのコンピュータではないか。メモリはたんまりとある。

433:デフォルトの名無しさん
07/06/28 23:51:56
>>430
おまえ頭わるいんで無理

434:デフォルトの名無しさん
07/06/29 00:03:53
>>423
ビットパターンって、普通にビットマップのはずだが
ANDマスクは透過部分が1、透過しない部分が0のピクセルあたり1ビットのモノクロビットマップ
XORマスクは透過部分が0、他は普通になカラービットマップ

435:デフォルトの名無しさん
07/06/29 00:29:57
>>433
うるせぇボケ死ね

436:デフォルトの名無しさん
07/06/29 07:28:45
このスレ的に一人前とはどの程度?
ヴぁかにされたくない。

437:デフォルトの名無しさん
07/06/29 07:47:24
>>436
馬鹿にされても怯まず開き直れたら君も立派な一人前だ

438:デフォルトの名無しさん
07/06/29 09:33:48
>>434
カラーはDDBなんでそう単純には行かないのだよ

439:デフォルトの名無しさん
07/06/29 09:34:33
>>434
つーか>>424で解決してるのになんで蒸し返す

440:デフォルトの名無しさん
07/06/29 10:12:04
>>436
コンパイルに成功したらもう一人前

441:デフォルトの名無しさん
07/06/29 10:27:02
>>439
すまんね、アンカーなかったから気付かなかったよ
まぁ参考ってことで

442:デフォルトの名無しさん
07/06/29 13:04:54
開き直りたくないんです。
ヤラレル前にヤラレナイような一人前はどの程度?

443:デフォルトの名無しさん
07/06/29 13:10:14
>>442
お前以外の程度

444:デフォルトの名無しさん
07/06/29 14:36:20
>>442
442と443以外の程度


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch