Win32API質問箱 Build25

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
- 過去スレ
Build24:http://pc5.2ch.net/test/read.cgi/tech/1098967135/
Build23:http://pc5.2ch.net/test/read.cgi/tech/1095534704/
Build22:http://pc5.2ch.net/test/read.cgi/tech/1092524669/
Build21:http://pc5.2ch.net/test/read.cgi/tech/1090422324/
Build20:http://pc5.2ch.net/test/read.cgi/tech/1088140233/
Build19:http://pc5.2ch.net/test/read.cgi/tech/1084697545/
Build18:http://pc5.2ch.net/test/read.cgi/tech/1081702990/
Build17:http://pc5.2ch.net/test/read.cgi/tech/1077470361/
Build16:http://pc2.2ch.net/test/read.cgi/tech/1073830065/
Build15:http://pc2.2ch.net/test/read.cgi/tech/1069339866/
Build14:http://pc5.2ch.net/tech/kako/1065/10653/1065328397.html
Build13:http://pc5.2ch.net/tech/kako/1059/10595/1059549320.html
Build12:http://pc5.2ch.net/tech/kako/1056/10560/1056033645.html
Build11:http://pc5.2ch.net/tech/kako/1052/10526/1052651750.html
Build10:http://pc5.2ch.net/tech/kako/1047/10478/1047819779.html
Build9:http://pc5.2ch.net/tech/kako/1044/10449/1044929160.html
Build8:http://pc5.2ch.net/tech/kako/1040/10409/1040964626.html
Build7:http://pc3.2ch.net/tech/kako/1036/10366/1036654893.html
Build6:http://pc3.2ch.net/tech/kako/1032/10325/1032548635.html
Build5:http://pc3.2ch.net/tech/kako/1028/10285/1028580373.html
Build4:http://pc3.2ch.net/tech/kako/1023/10233/1023361418.html
Build3:http://pc.2ch.net/tech/kako/1017/10170/1017072275.html
Build2:http://pc.2ch.net/tech/kako/1006/10067/1006783012.html
Build1:http://pc.2ch.net/tech/kako/991/991576947.html
(★は「いやー ごめんなさい。」に巻き込まれた模様
2デフォルトの名無しさん:04/11/25 23:33:14
3デフォルトの名無しさん:04/11/25 23:50:33
4デフォルトの名無しさん:04/11/26 00:00:00
乙です。本スレでも、ペゾルドとともにあらんことを。
5前スレ6:04/11/26 12:35:58

エラー発生アプリケーション MyApp.exe、バージョン 1.0.1.4、
エラー発生モジュール ntdll.dll、バージョン 5.1.2600.1217、エラー発生アドレス 0x00008e22

はどうやって解決するの?
6デフォルトの名無しさん:04/11/26 12:44:28
治して。
7デフォルトの名無しさん:04/11/26 13:02:31
sp1かsp2をあててみる。
8デフォルトの名無しさん:04/11/26 19:24:51
>>前スレ992
∀・)<すまん、良く読んでなかった、お詫びにリストボックスのオーナードローの仕方を

[WM_DRAWITEMが来たときの処理]
DRAWITEMSTRUCT* dis = (LPDRAWITEMSTRUCT)lparam;
if( dis->CtlType == ODT_LISTBOX && dis->CtlID == IDC_LIST1 ){ //IDC_LIST1:リストボックスのID
    FillRect( dis->hDC, &dis->rcItem, WHITE_BRUSH ); //白でクリア

    if( dis->itemState & ODS_SELECTED ){ //選択されている場合に枠を表示してみる
        HBRUSH hBrush, hBrushOld;
        HPEN hPen, hPenOld;

        hBrush = CreateSolidBrush( RGB(255, 192, 192) ); //枠の背景は薄赤
        hBrushOld = (HBRUSH)SelectObject( dis->hDC, hBrush );
        hPen = CreatePen( PS_SOLID, 1, RGB( 255, 0, 0) ); //枠は赤
        hPenOld = (HPEN)SelectObject( dis->hDC, hPen );

        Rectangle( dis->hDC, dis->rcItem.left, dis->rcItem.top, dis->rcItem.right, dis->rcItem.bottom );

        SelectObject( dis->hDC, hPenOld );
        SelectObject( dis->hDC, hBrushOld );
        DeleteObject( hPen );
        DeleteObject( hBrushOld );
    }
    SetBkMode(dis->hDC, TRANSPARENT);
    SetTextColor(dis->hDC, RGB(255, 0, 255)); //好きな文字色に
    char* text = (char*)dis->itemData; //LB_SETITEMDATA使ってたらこれじゃ駄目よ
    DrawText( dis->hDC, text, strlen(text), &dis->rcItem, DT_VCENTER );
}
9デフォルトの名無しさん:04/11/26 19:32:24
∀・)<リストボックスのリソースをオーナードローにしておくのも忘れないでね
10デフォルトの名無しさん:04/11/26 19:46:16
ファイルアクセスを監視するAPIってありますか?
(ファイル名や更新日時の監視ではなく)

当方、Win2KSP4です。
11デフォルトの名無しさん:04/11/26 19:51:02
ReadDirectoryChangesWとかだっけか?
12デフォルトの名無しさん:04/11/26 19:51:30
FindFirstChangeNotificationとか?
13デフォルトの名無しさん:04/11/26 20:33:59
↓これなに?
(★は「いやー ごめんなさい。」に巻き込まれた模様
14デフォルトの名無しさん:04/11/26 22:12:31
>>1
ちょっとあなた誰?次スレはいらないって住民の総意で決めたでしょ?
15デフォルトの名無しさん:04/11/26 22:15:21
なければないで単発質問スレが立つだろうし。
16デフォルトの名無しさん:04/11/26 22:23:07
>>15
駄目だな。そういう時は
  /⌒ ⌒ヽ、
 // ノノノヽヽ
〃σ--(-)-(-)
 || ;ミ  ω 彡  < ニョガーン
 ヽ;ミミミ⌒彡         
    ゙゙゙゙゙""  メンセキ メンセキ メンセキ

って答えるんだ
17デフォルトの名無しさん:04/11/26 23:12:31
>>13
pc3鯖が丸ごとあぼーんしたときに行方不明になった。
18デフォルトの名無しさん:04/11/27 14:34:58
windowsで以下のコードが期待通りに動きません。どうすればよいでしょうか。
std::string to_string(const std::wstring& str)
{
std::vector<char> buf(::WideCharToMultiByte(CP_ACP, 0, str.c_str(), str.length(), NULL, 0, NULL, NULL));
::WideCharToMultiByte(CP_ACP, 0, str.c_str(), str.length(), &buf[0], buf.size(), NULL, NULL);
return std::string(buf.begin(), buf.end());
}
int main()
{
std::cout << to_string(L"こんにちは、世界!") << std::endl;
}
1918:04/11/27 14:47:28
すみません、VCTK2003で動きました。MetrowerksCodeWarrior8.3のバグのようです。
20デフォルトの名無しさん:04/11/27 14:57:10
こんにちは
WinSockで、HTTPS通信をしたい場合なんですが、

getservbyname("https","tcp");

で問題ないでしょうか?
httpをhttpsに変えただけですが
21デフォルトの名無しさん:04/11/27 17:55:48
>>20
さすがにHTTPSを知ってる奴はおらんとおもう
ほかのスレッドで聞いたほうがいいかもな
22デフォルトの名無しさん:04/11/27 18:13:55
>>20
何がやりたいのかわからんが、ポート番号を知りたいだけなら、それでいい。
2320:04/11/27 18:20:24
>>22
HTTPS通信をするにあたり、何か通常のHTTP通信で行う処理以外に何か付け加える必要があるのかどうかを知りたいのです。

誰かご存知ではないでしょうか?
24デフォルトの名無しさん:04/11/27 18:23:41
>>23
環境依存でよければAPIもあったと思うが、
そうでないならOpenSSL使うとかする必要があったと思う。
25デフォルトの名無しさん:04/11/27 18:40:29
根本的に間違っているぞ
26デフォルトの名無しさん:04/11/27 19:10:32
>>23
通信自体なら、ソケット通信のままでいいが、SSL通信するなら
そのパケット自体の解析が面倒。自前でhttpsなんて実装しない方がいい。
証明書の問題もあるし、そもそもサーバーサイドで認証するのか、クライアントサイドで認証するのか
によっても異なる。素直に、OpenSSLとかRSAのSDKとかを使ったほうがいい。
2720:04/11/27 19:28:16
ご返答、ありがとうございます。

OpenSSLを使おうと思います。
もちろん、勉強中ですが。

助かりました。
28デフォルトの名無しさん:04/11/27 19:42:48
デバイスコンテキストの概念が分からないのですが
何か理解を増やす説法ありませんか?
29デフォルトの名無しさん:04/11/27 19:52:58
描画する場所がプリンタでもウィンドウでもメモリでも
同じAPIで描画できるようにするためのクッション的な役割
ってペゾルド本か何かの本に書いてた気がする。
30デフォルトの名無しさん:04/11/27 19:59:42
>>28
windowsを作る側になって考えてみたら?
どうやってアプリ開発者に描画する方法を提供する?
31デフォルトの名無しさん:04/11/27 20:18:55
HDCととは
ディスプレイやプリンタにハンドルである

例えば
ディスプレイが0001番
プリンタが0002番

文字を書きたくなったとき0001番を指定して書けば
ディスプレイ上に文字が書ける
と私は勝手に解釈してるのですが

HDC hdc;


DrawText(hdc, ・・・・)
このhdcは番号も何も指定していないのに
ディスプレイに文字がかけてしまう

多分根本が間違っていると思うのですが
まだWin32APIをはじめたばかりなのでつまずいてしまいまして
32デフォルトの名無しさん:04/11/27 20:46:37
>>31
〜の部分でhdcに何も代入していなければたまたま動いているだけだ、忘れろ。
33デフォルトの名無しさん:04/11/27 20:47:15
>>31
番号は指定しないけど、GetDC()とかで特定のハンドルは取得する必要があるじゃん?
だから何も指定してないわけじゃないよ。
34デフォルトの名無しさん:04/11/27 21:01:55
>HDCととは
>HDCととは
>HDCととは

>ディスプレイやプリンタにハンドルである
>ディスプレイやプリンタにハンドルである
>ディスプレイやプリンタにハンドルである

35デフォルトの名無しさん:04/11/27 21:03:24
他のプロセスの環境変数を調べるには
どういう方法がありますか?
36デフォルトの名無しさん:04/11/27 21:05:34
>>35
そのプロセスに教えてもらう。
37デフォルトの名無しさん:04/11/27 21:12:44
リッチエディット中の指定行のテキストを取得したいのですが、
EM_GETLINEは使えないのでしょうか?
通常のエディットでは取得できたのですが、リッチエディットでは上手くいきませんでした。
何か特別な処理が必要になるのでしょうか?
3837:04/11/27 21:32:04
すいません、できました。凡ミスでした…。
39デフォルトの名無しさん:04/11/27 23:07:17
>>27
ここはAPIスレだからWinInetやWinHTTPでもできると書いておく
40デフォルトの名無しさん:04/11/28 05:36:49
エディットコントロール内にあるキャレット(Iの形でチカチカしているやつ)を
最初の文字の前や最後の文字の後ろへ移動させるには
どうするのでしょうか
41デフォルトの名無しさん:04/11/28 08:43:04
>>40
EM_SETSEL
42:04/11/28 08:57:34
あふぁ
43デフォルトの名無しさん:04/11/28 12:49:30
質問です

URLEncoder.encode("書き込む","Shift_JIS")と同等の働きをするWin32APIはありますか?
もしなければ、Windowsアプリケーションではどのようにすればいいのでしょうか?(文字列のShift_JIS化)

ご返答いただけると助かります。
4443:04/11/28 12:54:22
ちなみに、今抱えている問題は
http://kage.monazilla.org/system_DOLIB100.htmlの認証方法の仕様です

●を使って書き込みたいので、https://2chv.tora3.net/futen.cgiからセッションIDを受け取り
POSTの際、セッションIDを使ってログインし書き込みます。

セッションID→Monazilla/1.00:!mCIuG#RzAP61Y6n7peOor/1〜(省略)

でもその際、Javaアプリだとうまくログインできるのですが、Win32アプリだとログインがされないのです。
エンコード関係に問題があると思いまして、ご質問したまでです。
45デフォルトの名無しさん:04/11/28 13:04:33

InternetCanonicalizeUrl
46デフォルトの名無しさん:04/11/28 16:07:56
OleLoadPictureでGIFが読み込めるようなのですが、プログラムの事情でフルカラーで取得したいです。
普通に読み込ませてみると256色で記録されるようですが、フルカラーで取得する事は出来ますか?

・・・自分で変換プログラム組まないとダメかな・・・
47デフォルトの名無しさん:04/11/28 16:14:58
>>46
CompuServeGIFはそもそもフルカラーではない。256パレットカラーが上限。
48デフォルトの名無しさん:04/11/28 16:16:36
>>46
256色のBITMAPとしてロードされてるならBitBltで24bitか32bitのBITMAPにコピーすればいいんじゃないか?

かなり当てずっぽうだが。
49デフォルトの名無しさん:04/11/28 17:26:37
>>47
GIFの仕様(というか、元の色数)は関係なく、メモリ上でフルカラーの画像として読み込みたいんですよ
無駄にメモリを食いますが、色数関係なく画像処理をしたいもので……
一度256色やそれ以下で読み込んでから、フルカラーに変換すれば確実なんですが…

>>48
HDCにコピーしてから、HDC→HBITMAP→BITMAP→ピクセルデータって感じですかね
考えたんですが、どうも強引な感じがして…
HBITMAPとして取得出来ているので、SelectObject→BitBltでフルカラーのコピー→コピー先からHBITMAPを取得、って感じですかね
今試してみて、どうも上手く行かない感じです…これはプログラムのミスっぽいので、もうちょっとやってみます
(たしか、SelectObjectで選択したままだと、HBITMAPからピクセルデータが取得出来なかったと思うので、その辺でミスったかも…)
5040:04/11/28 17:56:02
>>41

選択しないままで移動させるには?
51デフォルトの名無しさん:04/11/28 18:08:19
>>50
開始位置と終了位置を同じにすればいい。
52デフォルトの名無しさん:04/11/28 18:10:57
>>49
「HDCにコピーする」とかの表現が怪しいな。
機会があったらHBITMAP,HDC関係を
勉強し直す事を薦める。

とりあえず今回はGetDIBitsを使ったらどうかな。
5340:04/11/28 18:22:18
>>51
ありがとう

SendMessage(hwnd, EM_SETSEL, 0, 0);
これで先頭に移動したよ

でも
SendMessage(hwnd, EM_SETSEL, -1, -1);
これで最後に移動させるつもりだったけど、ダメだった

最後に移動させるには、
あらかじめ文字列の長さを調べてから
SendMessage(hwnd, EM_SETSEL, len, len);
こうするの?
長さを調べなくても、特別な値の引数で移動できるかと思ったけど
54デフォルトの名無しさん:04/11/28 18:26:39
>>53
MFCだとこんな感じ。
int pos = mEdit.LineIndex(mEdit.GetLineCount() - 1);
mEdit.SetSel(pos, pos);
MSDN見ればそれぞれの関数がどんなメッセージ投げてるかはわかると思う。
EM_SETSELにおける-1には確かに特殊な意味があるけど、
LastPositionではなくてCurrentPositionじゃなかったかな?
55デフォルトの名無しさん:04/11/28 18:33:03
>54は改行で終わってるマルチライン限定だね。
5640:04/11/28 18:43:01
>>54
やはり長さを調べる必要があるみたいですね

>EM_SETSELにおける-1には確かに特殊な意味が
SendMessage(hwnd, EM_SETSEL, 0, -1)
全部選択する

SendMessage(hwnd, EM_SETSEL, -1, any_n)
未選択にする

これくらいで、どちらも、最後に移動させる目的には使えないみたい


何度もありがとう
57デフォルトの名無しさん:04/11/28 18:48:49
>>52
おかしな表現使ってましたね。
GetDIBitsをさっき見つけて弄ってる所です……上手く行って無いですけどね…
5857:04/11/28 20:20:57
出来ない…どこが問題があるか分かりますか?
というか、GetDIBits自体の使い方か、引数だと思いますが


hBitmapはGIFを読み込んだもの


//BITMAP構造体を取得…ここは問題なし
GetObject(hBitmap,sizeof(BITMAP),&bitmap);

dwSize=bitmap.bmWidth*bitmap.bmHeight*3;//24ビットフルカラー
//エラー・例外処理は省いているが、エラーは出ていない
lpBuf=(LPBYTE)GlobalAlloc(GMEM_FIXED,sizeof(BYTE)*dwSize);
memset(&bmpInfo,0,sizeof(BITMAPINFO));
//BITMAPINFOHEADERを返す関数。幅・高さ・プレーン数・色数を指定…biXPelsPerMeterやbiClrUsedなどは0固定
bmpInfo.bmiHeader=CreateBitmapInfoHeader(bitmap.bmWidth,bitmap.bmHeight,1,24);

hdc=GetDC(NULL);
hdcBuf=CreateCompatibleDC(hdc);
//HBITMAPも作って、BitBltをしてみたが、正しくカラー表示された
//それを下で選択しても同じ結果だった

if(!GetDIBits(hdcBuf,hBitmap,0,bitmap.bmHeight,lpBuf,(LPBITMAPINFO)&bmpInfo,DIB_RGB_COLORS)){
 //画像が真っ黒(初期値のまま)

}
ReleaseDC(NULL,hdc);
59デフォルトの名無しさん:04/11/28 20:43:29
>>58
hBitmap が256色のビットマップだから
24ビットカラーを指定した GetDIBits が失敗するのでは?
(NT系なら GetLastError の値を確認してみて)

俺は >>52 じゃないけど
256色で GetDIBits して、自前で24ビットカラーに変換しろ、
と言ってるんじゃないかな。
60デフォルトの名無しさん:04/11/28 21:52:33
>>59
すいません、出来ました。
間抜けなミスしてました。
GetDIBitsは失敗で0、成功で0以外なのに、!付けてて判定が逆になってた…
最初の頃に上手く動かなくて、試しに!つけたの忘れてました…
(エラーで0が返ってた時期があったので)


因みに、自前で変換するなら、GetObjectでパレットも含めて取得出来るみたいです


レスくれた方、ありがとうございました。
(お騒がせしました)
61デフォルトの名無しさん:04/11/29 20:42:46
起動後、5カウント後にフォーカスを戻すプログラムなのですが、
タスクバーが点滅するのみです。(win2k)
何が悪いのか判らないのでおながいします。

static int x=0;
switch (msg) {
case WM_CREATE:
SetTimer(hWnd,NULL,1000,NULL);
break;
case WM_TIMER:
x++;
if(x==5){
SetForegroundWindow(hWnd);
SetWindowPos(hWnd,HWND_TOP,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);
SetFocus(hWnd);
InvalidateRect(hWnd, NULL, true);
}
break;
62デフォルトの名無しさん:04/11/29 20:56:39
63デフォルトの名無しさん:04/11/29 20:59:20
フォオオオ。そのものズバリって感じです。
ありがとうございます&試してみます。
……検索能力が足りないのかorz
64デフォルトの名無しさん:04/11/29 21:22:03
フォオオオオオオオオオオオ。
VCが古すぎてSystemParametersInfoの設定に
SPI_SETFOREGROUND〜がない。

(自機では)AttachThreadInputだけでも動作しました。
ありがとうございました。
65デフォルトの名無しさん:04/11/29 21:24:57
>>64
PlatformSDKとしてきてヘッダとインポートライブラリ差し替えれ
66デフォルトの名無しさん:04/11/29 21:49:15
ムフォオオ。良い情報 thanx です。
しかし、ヘタレは自分にはよく判りません。

とりあえずXPSP2 PlatformSDK落として、中身みて、
差し替えれそうならやってみます。
67モウモウ:04/11/29 22:20:44
>>66
差し替える (ファイルを入れ替える) んじゃなくて、
IDE の設定で、検索パスを変えるだけのほうが無難だよ。
68デフォルトの名無しさん:04/11/29 23:03:23
あんまし自己主張の強いソフト作んなや
69デフォルトの名無しさん:04/11/30 00:20:08
>68
お前には全く関係ない。
70デフォルトの名無しさん:04/11/30 01:49:35
おしとやか系好き。
71デフォルトの名無しさん:04/11/30 01:52:12
>>69
おいおい、そういう考え方はいただけないよ。
>>68を一ユーザとしての意見として捉えた方が良い。
もし、それを公開するつもりなら、ユーザインタフェースについてもちゃんと
考えないといけない。
72デフォルトの名無しさん:04/11/30 01:59:14
>>71
黙れ
73デフォルトの名無しさん:04/11/30 02:31:16
誰に作るにしても、インターフェースはちゃんと考えるのが普通だな
(プログラムを組む上での勉強は、この辺も含めてやらないとダメだ)
74デフォルトの名無しさん:04/11/30 09:28:49
>71
いや、お前には関係ない。
75デフォルトの名無しさん:04/11/30 11:19:03
複数のウィンドウを持つものとかかも知れんし、
あとは作者と使う人の問題でしょ。
「関係ない」もそれに対する反論もここでは蛇足。
76デフォルトの名無しさん:04/11/30 13:22:14
ターミナルソフト、teraterm内のlogテキストを、自分が作ったアプリケーションから
取り出すことはできるのでしょうか?

SetMessageで、teraterm内にテキスト(文字)を送信することは(WM_CHARを使い)できましたが、その逆で、teraterm内のlogテキストを取り出したいのです。

Win32APIを用いてできる方法をご存知なかたはいますか?
いましたら、申し訳ございませんが、教えていただきたいです。

宜しくお願いします。
77デフォルトの名無しさん:04/11/30 13:24:21
クリップボードを壊してもいいならWM_COPYを送ってみるとか
78デフォルトの名無しさん:04/11/30 13:41:31
TeraTermのソース読めヴォケ
79デフォルトの名無しさん:04/11/30 13:42:17
24bitのDIBを、1bit(白黒画像)DIBに変換して表示したいのですが
どのようにしたらいいでしょうか?
80デフォルトの名無しさん:04/11/30 14:22:41
>>79
メモリDCと1bitビットマップ作ってSelectObjectして
そこに24bitビットマップをBitBlt。
81デフォルトの名無しさん:04/11/30 14:24:10
そんなんでいいのか?
82デフォルトの名無しさん:04/11/30 14:27:51
APIスレ的な回答はそんなもんじゃないかな・・・

画像処理スレなら、別だろうけど
83デフォルトの名無しさん:04/11/30 14:41:24
転送先がモノクロの場合にStretchBlt/HALFTONEは効くんだっけ?
効けば、とりあえずこれで一発な気が。

SRCとDSTが同じ大きさだとディザ処理省略されるっつー困った仕様があった気もするが。
84デフォルトの名無しさん:04/11/30 16:56:17
>>76
TeraTermなら、Log出力機能を含めて結構強力なマクロ言語を搭載している。
それを利用するのが手っ取り早いのではないかと。
#いや、APIでなきゃいけなり理由があるなら話は別だが。
85デフォルトの名無しさん:04/11/30 19:44:59
WS_EX_TOPMOSTを付けて起動し、後で外す。
86デフォルトの名無しさん:04/11/30 19:49:23
>85
解雇
87デフォルトの名無しさん:04/11/30 23:20:50
再雇用
88デフォルトの名無しさん:04/11/30 23:43:05
再解雇
89デフォルトの名無しさん:04/12/01 00:32:40
過去のスレッドで

880 名前:デフォルトの名無しさん :03/05/06 22:29
質問。
MCIのテストプログラムなのですが、ビルドを行うと、
--------------------構成: mci - Win32 Debug--------------------
コンパイル中...
main.c
リンク中...
main.obj : error LNK2001: 外部シンボル "__imp__mciGetErrorStringA@12" は未解決です
main.obj : error LNK2001: 外部シンボル "__imp__mciSendCommandA@16" は未解決です
Debug/mci.exe : fatal error LNK1120: 外部参照 2 が未解決です。
link.exe の実行エラー
ブラウザ データベースを作成中...

mci.exe - エラー 3、警告 0
と、エラーが出ます。<windows.h>はいれてあります。
ほかのリンクか何かに必要なものってありますか?


881 名前:デフォルトの名無しさん :03/05/06 22:31
そのAPIをMSDNで調べれば必要なヘッダとライブラリが書いてあるが

とのやりとりがあったのですが、このエラーが解決できませんでした。
どなたか対処法教えていただけませんか?
90デフォルトの名無しさん:04/12/01 00:59:17
DirectXでフルスクリーン化されてもアプリでキー入力などの情報を受け取るには
システムフックするしかないですか?SetActiveWindowを使ってるけど
フルスクリーンされるとウィンドウがアクティブにならないんです。だけど
GetDC(HWND_DESKTOP)で描画をしてやるとフルスクリーンの上から描けてはいるんだけど
なぜキー入力が受け取れないか疑問なんです。
91デフォルトの名無しさん:04/12/01 01:16:02
>>89
>そのAPIをMSDNで調べれば必要なヘッダとライブラリが書いてあるが

必要なヘッダと"ライブラリ"
92デフォルトの名無しさん:04/12/01 01:38:11
>>89
どのライブラリをリンクしたのか書いてみそ。
93デフォルトの名無しさん:04/12/01 01:46:44
ライブラリはwinmm.libをインクルードしました。
他にもなにか必要なのでしょうか
9493:04/12/01 01:49:04
あと、ヘッダファイルのmmsystem.hをインクルードしています。
連続ですいません
95デフォルトの名無しさん:04/12/01 01:50:20
>>93
コンパイラのバージョンと、
ヘッダーおよびライブラリをどこから入手したかを教えて。
9693:04/12/01 01:56:48
コンパイルはVC++6.0です。
初心者なので質問の意味がよくわからないのですが、ダイアログベースでDlg.hのほうに
mmsystem.hをインクルードしました。
97デフォルトの名無しさん:04/12/01 01:58:23
> 初心者なので
もしかしてさ、Debug ビルドと Release ビルドの両方に
ちゃんとライブラリを指定した?

たとえば、Debug ビルドだけにライブラリを指定しても、
Release ビルドにするとリンカエラーになるよ。
98デフォルトの名無しさん:04/12/01 02:06:23
あーほんとだ!すいません解決しました!!
どうやらReleaseビルドのほうには設定されていなかったみたいです。
ご迷惑をおかけしました。
99デフォルトの名無しさん:04/12/01 12:46:44
初歩的な質問になりますが、

WM_LBUTTONDOWNのLPARAMは、マウスクリックのxy座標の位置になりますが、
下位ワードがx座標、上位ワードがy座標ですよね。

このLPARAM(Unsigned Int)をこちら側で、座標入力する場合、どのようにすればいいのですか?

たとえば、x値が110で、y値が200だとして、
unsigned int ppp;とあるとして、
このpppの下位ワードに110、上位ワードに200を入れる方法(やりかた)を教えて欲しいのですが。

宜しくお願いします。
また、そのようなことを簡単にできる関数はありますか?
100デフォルトの名無しさん:04/12/01 13:02:36
このスレ的にはMAKELPARAMマクロだけど。
101デフォルトの名無しさん:04/12/01 13:03:23
MAKELPARAM
10299:04/12/01 14:05:48
>>100-101
ご返答ありがとうございました。
103デフォルトの名無しさん:04/12/01 14:49:50
LOWORD(SendMessage(hEdit, EM_GETSEL, NULL, NULL))や
HOWORD(SendMessage(hEdit, EM_GETSEL, NULL, NULL))
で、マウスで範囲指定した位置が取得できるのはわかるのですが、
位置ではなく、「その範囲の文字列」を取得するにはどうすれば良いのでしょうか?
(GetWindowTextを使わずに)
104デフォルトの名無しさん:04/12/01 15:02:46
>>103
EM_GETSELTEXT
105103:04/12/01 15:29:29
>>104
ありがとうございます!早速やってみます。
106デフォルトの名無しさん:04/12/01 23:18:38
Delphiスレで聞いたのですがレスがつかなかったのでこちらで教えてください。

モデムの設定を削除する方法はないでしょうか?
今はキーボードで模擬しているのですが、スマートに削除したいと思いまして。

ネットカフェでの使用を想定しています。
107デフォルトの名無しさん:04/12/01 23:31:32
前の人が片付いていないのに質問すみません

円や四角形を描画する関数を使用していて、
プログラムを開始してからしばらくすると図形の中の色が
透明になってしまいます
これは何か特定の原因があるのでしょうか?
どなたか回答おねがいします
108デフォルトの名無しさん:04/12/01 23:39:42
>>107
DeleteObject サボってねえか?
109107:04/12/01 23:47:09
>>108さん、レスありがとうございます
DeleteObjectは大丈夫でした
110デフォルトの名無しさん:04/12/01 23:50:29
放置してもそうなるの?リフレッシュ速度が異常に早くて半透明に見えるとか
そういう強烈なオチだったりする?
111デフォルトの名無しさん:04/12/01 23:53:05
放置といいますか・・・途中まではちゃんと描画されるんです
あるときを超えると急に中の色が消えてしまいます

それと関係ないかもしれないですが、同じ関数を1ループ中に
呼び出す回数を増やすと消えるまでの時間が延びました・・・なぜ・・・
112デフォルトの名無しさん:04/12/02 00:18:20
DeleteObjectをしたつもりでされていないとか
113デフォルトの名無しさん:04/12/02 01:51:58
ループの外でまとめてDeleteObjectしてるとか
114107:04/12/02 06:54:47
自己解決しました
よくわかりませんが、四角形の周りを描画する関数(中身も描画する関数とは別)のブラシに
色を指定したあと、GetStockObject(NULL_BRUSH)していたのがまずかったようです
レスしてくださったみなさん、ありがとうございました

//ブラシの設定
☆//hBrush=CreateSolidBrush(crCOLOR);
//中身は描画しない
hBrush=(HBRUSH)GetStockObject(NULL_BRUSH);
SelectObject(hdc,hBrush);


☆の行をコメントにすると動きました
115デフォルトの名無しさん:04/12/02 08:42:45
(−_−) ‥‥。
116デフォルトの名無しさん:04/12/02 09:56:19
>>114
そのコメントにした行で作成したブラシをDeleteObjectしたのかと小一時間・・・
117デフォルトの名無しさん:04/12/02 10:28:24
DeleteObjectはしてるがその前にSelectObejctでDCから解除してないとかだったら死なす。
118デフォルトの名無しさん:04/12/02 11:05:26
てゆうかコメント化前だと、DeleteObject出来ないのが歴然
119デフォルトの名無しさん:04/12/02 11:06:06
質問ですが、
ファイル名を変更したい場合、どのWin32APIを使えばいいのでしょうか?
120デフォルトの名無しさん:04/12/02 11:08:44
>>119
MoveFile
121デフォルトの名無しさん:04/12/02 12:39:52
>>114
色々言われてるが、事後報告があるのは偉い
122デフォルトの名無しさん:04/12/02 18:16:41
>>121
本人という保証はない
123デフォルトの名無しさん:04/12/02 19:44:53
>>122
疑い深いな
なりすます意味が無いだろ
124デフォルトの名無しさん:04/12/02 19:51:12
>>122
本当に偉いと思っている保証はない
125デフォルトの名無しさん:04/12/02 20:21:33
>>123
なりすます意味が無い保証はない
126デフォルトの名無しさん:04/12/02 20:51:52
自作自演という保障も無いな
127デフォルトの名無しさん:04/12/02 20:52:11
>>126
逆だった。
128106:04/12/02 23:26:38
相手してください。。。
129デフォルトの名無しさん:04/12/02 23:33:21
>>128
モデム関連操作のCPLアプレットを逆アセしなされ。
多分適当なレジストリをいじってるだけだからregmonで追いかければいいと思うけどね。
130デフォルトの名無しさん:04/12/02 23:34:19
そもそもモデムの設定というのがなんなのかわからない。
それの何をどう削除したいのかがわからない。
最後にネットカフェでの使用というのがもうどう対応していいかわからない。

俺に理解能力が無いのだろう。それは認めよう。
だから俺にも回答できるように質問を1から教えてください。
131デフォルトの名無しさん:04/12/02 23:36:26
>>130
129を見習え!
132129:04/12/02 23:39:24
>>130
多分こういうことだと思う。
ネカフェで自前の携帯/PHS(京ぽんとか)をUSBケーブル経由で接続(&インストール)することで
パケットを拾われないよう通信し、用が済んだらモデム設定(アカウント情報なんかも含まれるし)を
抹消したいと。

んでとりあえずそれらしいキーを捜してみた。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Fax\Devices
この下にモデム一覧がある。多分アカウント設定は他所にあると思うけど、もう何年も
ダイアルアップなんてやってない(当然設定も残ってない)ので分からない。
レジストリ内を接続名で検索してみれば分かると思う。

キーが分かったらお決まりのレジストリ操作で多分OK
133129:04/12/02 23:52:40
あー、デバイス情報は>>132に挙げたキー以外にも
HKLMSOFTWARE\Microsoft\Ras\Tapi Devices\Unimodem
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\UNIMODEM\DeviceSpecific
HKLM\SYSTEM\ControlSet001\Control\Class\{4D36E96D-E325-11CE-BFC1-08002BE10318}
HKLM\SYSTEM\ControlSet001\Enum\Root\MODEM
HKLM\SYSTEM\ControlSet002\Control\Class\{4D36E96D-E325-11CE-BFC1-08002BE10318}
HKLM\SYSTEM\ControlSet002\Enum\Root\MODEM
HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E96D-E325-11CE-BFC1-08002BE10318}
HKLM\SYSTEM\CurrentControlSet\Enum\Root\MODEM
にあった。ControlSetxxxの値は環境によって変わると思う。頑張って消しまくってくれ。
Windowsって意外とタフだから適当に消しても辻褄合わせてくれるよ、多分。
134130:04/12/03 00:04:44
スゲーや。テレパスだ。

ダイヤルアップの設定ねぇ・・・
HKEY_CURRENT_USER\RemoteAccessとか
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Connections
なんてのも関連はありそうだがなんか違う感じだしねぇ。
135106:04/12/03 02:18:15
う〜ん、APIでさくさくっとできるわけじゃないんですね。
仰るようにレジストリ解析ソフトを使って削除前と削除後を比較して実行することにします。
ありがとうございますた。
136デフォルトの名無しさん:04/12/03 03:28:57
>>135
よくわからんけどPBKファイルとかRasDeleteEntryとか
関係あるかな?
137デフォルトの名無しさん:04/12/03 15:37:37
他のアプリのウインドウをフォアグラウンドにするために、お馴染みの
AttachThreadInputしてSystemParametersInfoで0に設定して、
SetForegroundWindowしました。通常は正常に動作しています。

ただし、ターミナルサービスのリモートデスクトップでセッションが切れている
間だとフォアグラウンドにならないようです。これはリモートデスクトップの
制限でしょうか?

138デフォルトの名無しさん:04/12/03 15:40:55
あげ忘れ
139デフォルトの名無しさん:04/12/03 18:05:47
別のアプリにOpenProcessされたかどうか判定する方法ってありますか?
140デフォルトの名無しさん:04/12/03 18:26:46
>>139
たいていのアプリは別のアプリにOpenProcessされている
141デフォルトの名無しさん:04/12/03 20:36:06
Editコントロールへの入力で
0-9 A-Fのキー(16進数)、及び
BS、Delete、Home、End、矢印キー以外のキー入力を
無効にしたいのですが、どうすれば良いのでしょうか

Editコントロールをサブクラス化してみたものの、この先がいまいち分かりません
142デフォルトの名無しさん:04/12/03 20:47:50
何がやりたいのかにもよるがES_NUMBERつけるだけじゃ不足なのか?
143デフォルトの名無しさん:04/12/03 21:26:24
普通アプリケーション上でAlt+Spaceを押すとシステムメニューが表示されますよね。
でも自分で書いてみたプログラム(親ウィンドウ+子ウィンドウ*1)ではなぜか表示されないんです。
Altを押せばちゃんとメニューを開くのですが、Alt+Spaceみたいに同時に押してもうまく反応してくれません。
どうすればよいのか知っている方いましたら、教えていただけないでしょうか。
144141:04/12/03 21:26:50
>>142
すいません、ES_NUMBERだと16進数で扱えなくなってしまうので・・・
ES_NUMBERでも、A-Fとは言わず、せめてコンマが通れば良いのですが
145デフォルトの名無しさん:04/12/03 21:33:53
>>143
TranslateMessageが無いとか?
146デフォルトの名無しさん:04/12/03 21:42:29
>>145
それでした…。なぜ今まで気づかなかったんだろう…。
それにしても素早いお答えありがとうございました。
147デフォルトの名無しさん:04/12/03 22:07:53
>146
まあまあ。解決してよかったじゃないの。
148デフォルトの名無しさん:04/12/03 22:24:05
>>144
全部入力して、変化した時に弾く
149デフォルトの名無しさん:04/12/03 22:27:15
>>141
サブクラス化したウィンドウプロシージャでWM_CHARが来た時、入力されて欲しくない文字だったらreturnし、それ以外の場合はCallWindowProcへ通す。
150141:04/12/03 22:31:36
>>148
つまりOKボタンが押されたり、あるいはフォーカスが
他に移ったとき等に弾くと言うことでしょうか?

またもやすいません、それなら簡単なのですが、
出来れば入力の段階でフィルターかけたいという主旨でして
151141:04/12/03 22:36:10
>>149
やった!見事に出来ました
ありがとうございました、おかげで今日は安らかに眠れそうです

他の皆さんもお付き合い感謝です
152デフォルトの名無しさん:04/12/03 22:53:37
>>151
因みに、148のは、エディットからのWM_COMMANDメッセージを調べて、テキストが変化した時に弾くって意味
(文字が入力されたり、削除された時に調べる)
サブクラス化まで進んでるなら、149の方が良いと思う
153106:04/12/03 23:38:10
やってみました。
色々といじらないといけないところが多すぎて危険なので現状のままで行くことにします。
154デフォルトの名無しさん:04/12/03 23:39:56
いっそのことKNOPPIXをネカフェに持ち込んだほうがいいかもね
155デフォルトの名無しさん:04/12/04 06:18:05
ダイアログボックスのウィンドウサイズをソースから変更する方法を教えてください。お願いします
156デフォルトの名無しさん:04/12/04 08:06:26
>>155
実行時に変更するならMoveWindowとかSetWindowPosとか。
157デフォルトの名無しさん:04/12/04 15:54:53
メインウィンドウを起動時にフルスクリーンで表示する方法を教えてください。お願いします
158デフォルトの名無しさん:04/12/04 15:55:50
すいません、フルスクリーンというか最大化です
159デフォルトの名無しさん:04/12/04 16:12:11
枠を消しまくってウィンドウサイズをデスクトップサイズに合わせ、最前面表示
160デフォルトの名無しさん:04/12/04 16:43:10
HDC hDC = GetDC(NULL);
161デフォルトの名無しさん:04/12/04 16:51:10
ReleaseDC(hDC);
162デフォルトの名無しさん:04/12/04 17:13:59
>>157
ShowWindow(hwnd, SW_SHOWMAXIMIZED);
163デフォルトの名無しさん:04/12/04 17:14:00
「猫でもわかる」を参考にしてツールバーにテキストを付けたのですが、
ボタンの幅が一番長いテキストが入っている幅で統一されてしまい、
短いテキストのボタンに無駄なスペースができてしまいます。
これを、IEのツールバーのように可変長にすることはできますか?
よろしくお願いします。
164デフォルトの名無しさん:04/12/04 17:58:55
> できますか?
できます。

> よろしくお願いします。
いやです。
165163:04/12/04 18:23:07
>>164
ヒ、ヒントだけでも…
166デフォルトの名無しさん:04/12/04 18:24:21
マントヒヒ
167デフォルトの名無しさん:04/12/04 18:42:12
ヒントでピンポン
168デフォルトの名無しさん:04/12/04 18:48:02
IEのツールバー使えよ
169デフォルトの名無しさん:04/12/04 18:49:17
170デフォルトの名無しさん:04/12/04 20:39:56
>164
死ねば?
171デフォルトの名無しさん:04/12/04 21:13:22
メインウィンドウの色を起動時にまたは最初から変更する方法を教えてください。お願いします
172デフォルトの名無しさん:04/12/04 21:44:03
ウィンドウクラス構造体のメンバhbrBackgroundをいぢる
173163:04/12/04 22:00:36
自己解決しました。ご迷惑をおかけしました。
174デフォルトの名無しさん:04/12/05 02:35:59
ポートスキャナを作っているのですが、もっと速度を出したいと思います。

やり方としては一番稚拙な、堂々とTCPでconnectしてみる方法なのですが、
listenしていないポートにconnectしようとしてWSAECONNREFUSEDになる場合で、
LAN上のリモートホストで1200回/秒、ローカルホストで1700回/秒くらいです。
CPU使用率が100%になっており、CPUがネックのようです。

socketで作ったソケットに対して、
WSAAsyncSelectでFD_CONNECTを指定し、
connectしています。

メッセージは、MFCのウィンドウプロシージャで受けとって、
MFCのメッセージディスパッチで結果をチェックする関数を呼んでいます。

もっと速い方法はあるでしょうか。
175174:04/12/05 02:38:41
WSAECONNREFUSEDになる場合、connectしてからメッセージが飛んでくるまで1秒かかります。
(これは、非同期ではなく、同期でやった場合も同じです。)
なので、メッセージループに余裕がある限り、結果を待たずにどんどん次のconnectをしています。
176デフォルトの名無しさん:04/12/05 08:07:05
>>174
回線切って首吊って氏んでおけ
177デフォルトの名無しさん:04/12/05 08:37:12
>176
分からないからってそういう書き込みはしないように。
運営に通報しておきました。
178デフォルトの名無しさん:04/12/05 09:03:57
最近、妙に悪意のある書き込みが目立ちますね。そろそろ自制してほしいものです。
179デフォルトの名無しさん:04/12/05 13:36:58
自演自己弁護乙!
180デフォルトの名無しさん:04/12/05 13:46:34
ウィルス作者が来た場合は通報した方が良いのか?
181174:04/12/05 15:07:38
ウィルスじゃないですよ。
安全確認のためのツールですよ。
182デフォルトの名無しさん:04/12/05 19:16:50
ウィルスでなくてもこの手の質問は叩かれて当然だろうが
183デフォルトの名無しさん:04/12/05 19:17:33
>>182 そんなことないと思うぞ。ポートスキャナなんてネットワーク管理に絶対必要だろ。
184デフォルトの名無しさん:04/12/05 19:26:01
>183
絶対ではない。
185デフォルトの名無しさん:04/12/05 20:05:23
>>183
単なるポートスキャナはまあ必要だと思うけど、「もっと速度をだしたい」ってところはどう言い訳するんだ ?
186デフォルトの名無しさん:04/12/05 20:12:25
何か物を作るなら、できるだけよいものを作ろうとするのは、
技術者として自然ではないかと。
187デフォルトの名無しさん:04/12/05 20:41:41
>186
うむ
188デフォルトの名無しさん:04/12/05 20:55:32
悪用する可能性があるものを公的な場で質問したり回答しないのは、社会人としての常識ではないかと。
189デフォルトの名無しさん:04/12/05 21:02:11
>>188
それは技術者としての堕落。
190デフォルトの名無しさん:04/12/05 21:04:31
悪用しようと思えばカッターナイフ一本でも可能。
191デフォルトの名無しさん:04/12/05 21:11:05
>189
うむ
192デフォルトの名無しさん:04/12/05 21:12:01
>>188
君は「基礎からわかるTCP/IPネットワーク実験プログラミング」の
「はじめに」を読みなさい。
193デフォルトの名無しさん:04/12/05 21:13:16
>188
どんな技術も使いようによっては悪用できます。
194デフォルトの名無しさん:04/12/05 21:16:56
>>189
誰も作るなと言ってないが ?
そもそも、人に聞いて楽しようと言うところから「堕落」は始まってるぞ。

>>190
> 悪用しようと思えばカッターナイフ一本でも可能。

だから、たとえば空港の手荷物検査でのカッターナイフの隠し方について公的な場で議論するのはあまり勧められない。

別に犯罪でもなんでもないけど、お馬鹿な厨が実行する可能性があるからな。
195デフォルトの名無しさん:04/12/05 21:19:14
>>192
> 君は「基礎からわかるTCP/IPネットワーク実験プログラミング」の
> 「はじめに」を読みなさい。

本の宣伝か ?

そうじゃないなら、何が書いてあるか要約を書いてくれ。
196デフォルトの名無しさん:04/12/05 21:22:06
そんなこと言い出したら2ch自体もいらない
197デフォルトの名無しさん:04/12/05 21:37:10
>194
何が言いたいのか結論をはっきりさせる
癖を付けた方がいいですよ。
198デフォルトの名無しさん:04/12/05 21:38:06
>195
人に聞いて楽しようと言うところから堕落が始まってるんじゃなかったのか?
199デフォルトの名無しさん:04/12/05 21:38:51
>194
どうでもいいが気に入らなきゃお前が参加しなきゃいいだけのこと。
発言するな。ここを読むな。立ち去れ。
200デフォルトの名無しさん:04/12/05 21:42:33
>199
御意。普段人に相手されないからかまってほしいんだろうけど。
201デフォルトの名無しさん:04/12/05 21:42:58
>196
まあまあ。まともに相手する必要はないよ。
202デフォルトの名無しさん:04/12/05 21:46:43
>>196
> そんなこと言い出したら2ch自体もいらない

?? 別に普通の議論をすればいいだけだと思うけど ?

>>197
理解できないならそう言えば ? (藁

>>198
そうだよ、別にいまさら TCP/IP について精進しようと思ってないから。
(やっぱり、宣伝か...。)

>>199
何いきり立ってるの ?
なんか図星でも突かれたのか ?
203デフォルトの名無しさん:04/12/05 21:47:09
>194
>193はさりげなく無視した?
どんな技術も使いようによっては悪用できます。
あなたがポートスキャンに特に食いつく理由は何ですか?

選択肢
1. 実はよく分かっていない。
2. ポートスキャンって何か悪いことだって誰かが言ってた。

ちなみにMP3やP2Pといった単語にも同様に反応しているのですか?
そうだとしたら大変ですねぇ。
204デフォルトの名無しさん:04/12/05 21:47:56
ふぅ・・・202はまたいつもの奴か。
205デフォルトの名無しさん:04/12/05 21:48:01
>>199-201
あらあら、援軍ですか ?
よかったな、ID 強制表示じゃなくて。(藁
206デフォルトの名無しさん:04/12/05 21:48:43
>202
う・・・・ここまで的外れな反論されるとどうしようもないわ。
俺の負け。
207デフォルトの名無しさん:04/12/05 21:50:22
ああ、今週はこのスレを潰すんですか。結構、結構。
208デフォルトの名無しさん:04/12/05 21:50:36
>205
ID強制表示?今時何を言ってるんだ、こいつは。
まさかお前以外の人間にもIDが見えてないとは思ってないよな、
ID:ID:yn+Vu/R9 君。
209デフォルトの名無しさん:04/12/05 21:55:04
ふぅ、アホがいなくなったところで平常営業に戻しますか。
210202:04/12/05 21:55:58
いまさら TCP/IP について精進しようと思ってない!!!
211 ◆8val0mbQPk :04/12/05 21:57:16
>>203
まあ、サーバの穴見つけるには必要だろうけど、そんなに「高速化が重要」とは思えないだけのことだが。

>>206
で、どこが的外れかも書けないんだよね。
潔く負けを認めてる点は、賞賛に値するけどな。

>>208
ププッ、今時こんなことでビビルとでも思ってるの ?
もしかして、ネットワーク/2ch 初心者なの ?

>>210
偽もんはいらんよ。
212デフォルトの名無しさん:04/12/05 21:58:18
>202
うちに来てる協力会社の奴で、マジでこの手の受け答え
する奴がいてさー、その会社の営業と本人にボロクソ
言った上で解約してやったけど、はたして本人は少し
でも分かってくれたのだろうか。
213デフォルトの名無しさん:04/12/05 21:58:44
>203は?
214 ◆8val0mbQPk :04/12/05 21:59:03
ちなみに、今日はこのトリップつけるから、興味のない人は NG ワードに指定な。
スルーできない奴アフォがはっきりするから。
215デフォルトの名無しさん:04/12/05 21:59:43
またかよ
216デフォルトの名無しさん:04/12/05 22:00:21
>214
助かる。お前以外にいい奴だな。今日だけじゃなくて永遠にその
トリップ付けたらもっといい奴として崇め奉るよ。
217デフォルトの名無しさん:04/12/05 22:03:09
トリップ君と>188は同じ人?
218デフォルトの名無しさん:04/12/05 22:03:34
>216
以外に→意外に
すまん
219 ◆8val0mbQPk :04/12/05 22:03:57
>>212
ハイハイ、よかったな。

>>213
リロードぐらいできないのか ?

>>217
同じだよ。
だから、気に入らん人は NG ワードよろしく。
220デフォルトの名無しさん:04/12/05 22:08:32
うぉぉぉぉ、やっぱ日本語通じてなかったのか・・・
泣けてくるな。

↓これ君の発言だよね?
悪用する可能性があるものを公的な場で質問したり回答しないのは、社会人としての常識ではないかと。

↓これが俺の質問
どんな技術も使いようによっては悪用できます。
あなたがポートスキャンに特に食いつく理由は何ですか?

↓これがあなたの回答でいいの?
そんなに「高速化が重要」とは思えないだけ

つまり、あなたが重要と思えないから、公的な場で質問したり回答したりするなってことになっちゃいますけど。

いいのであればこれ以上特に聞くことはないですが。
221デフォルトの名無しさん:04/12/05 22:09:59
>220
今必死こいてどう開き直ろうか考えてるはず。
そして誰もが相手をしたくなくなるようなビックリするような
開き直りを見せてくれるはず。

さあ期待してるぜ!
222デフォルトの名無しさん:04/12/05 22:18:29
>220
>いいのであればこれ以上特に聞くことはないですが。
あのな、それ気付くの遅すぎ。お前みたいのが相手すっから
この手のバカを図に乗らすんだろうが。
223デフォルトの名無しさん:04/12/05 22:33:19
>>216 さんじゃないけど、トリップ付けてくれてほんと助かる。
半角の"?"をNGに指定するだけじゃ不完全で困ってたところなのよ。
できれば今日だけとはいわずずっと付けてて欲しい…
224デフォルトの名無しさん:04/12/05 22:33:22
>>220
> つまり、あなたが重要と思えないから、公的な場で質問したり回答したりするなってことになっちゃいますけど。

論理が飛躍しすぎ。

俺が言いたいのは、>>194

> 別に犯罪でもなんでもないけど、お馬鹿な厨が実行する可能性があるからな。

に尽きるよ。

ポートスキャナは、鯖管が自鯖に使うツールとしては基本的なもんだけど、それには 1200回/秒 ぐらいの性能ならまずまず十分じゃないか ?
まあ、0〜65535 のスキャンに約1分もかかるのは困ると言う用途があるのかもしれないけど、そうなら >>174 はその用途を書いたほうが意見が得られやすいと思う。

「どんな技術も使いようによっては悪用できます。」って言うのは正しいし、「技術屋としてより高性能なものを作りたい」と言うのもまた正しい。
でも、高性能なメールサーバーが Spam メール製造器になるご時世だから、ちょっとそこらへんも考えてみてねと言うだけのこと。

>>221-222
> スルーできないアフォがはっきりするから。
(よく見たら、>>214 Typo してたよ。)
225デフォルトの名無しさん:04/12/05 22:36:48
犯罪に使えるうんぬんって話があったけど、ウィルスなりそれに順ずるものって作ったりするだけで犯罪じゃなかった?
226デフォルトの名無しさん:04/12/05 22:44:09
ポートスキャンはオフホワイト
227デフォルトの名無しさん:04/12/05 22:45:56
>224
なんだこりゃ。まったく期待にそぐわない成果物だ。
もういいよ、お前は。
228デフォルトの名無しさん:04/12/05 22:46:55
>224
>論理が飛躍しすぎ。
うーん、飛躍してないけどその一言を書けば解決すると思ってるねw
229デフォルトの名無しさん:04/12/05 22:47:52
>224
お前何トリップやめてんの?せっかくNG指定してたのに。
230デフォルトの名無しさん:04/12/05 22:48:58
>223
同意。今後こいつがどこに噛み付いてくるのか興味がある。
231 ◆8val0mbQPk :04/12/05 22:55:23
>>225
今のところは無いようだ。
http://www.ipa.go.jp/security/virus/faq/qa_a.html#7-2

>>226
まあ、とりようによってはそれぐらいだな。

>>228
ぷぷっ、君もそうしか書けないだよね。

>>229
悪い、トリップ付け忘れたよ。
232デフォルトの名無しさん:04/12/05 23:01:55
>231
いや、俺のは飛躍してないからこう書けば十分なんだけど。
アホだなぁ
233デフォルトの名無しさん:04/12/05 23:03:11
>>232
相手してる君もアホだなぁ
234デフォルトの名無しさん:04/12/05 23:04:42
>233
いや、分かってはいるんだけど、自分のレス番号引用して書いてくるから、
なんか反応してあげないと悪い気がして・・・もうやめますけど。
235デフォルトの名無しさん:04/12/05 23:06:02
>231
「付け忘れたよ」で済むか、タコ。自分の有害さをもっと考えて
慎重に投稿してくれよ。
236デフォルトの名無しさん:04/12/05 23:09:29
トリップ付け忘れたのは悪いが、そのあとに絡んでる >>232-235 は、

> スルーできないアフォがはっきりするから。

と言うことでいいよな。(藁

>>232
> 俺のは飛躍してないから

君の脳内だけな。
237デフォルトの名無しさん:04/12/05 23:10:47
>236
トリップ付けてください。
238デフォルトの名無しさん:04/12/05 23:12:38
こりゃ今後も事ある毎にトリップはずしてくるな…
239デフォルトの名無しさん:04/12/05 23:15:17
質問しようと思ったけど、そんな雰囲気じゃなさそうですね…
240デフォルトの名無しさん:04/12/05 23:21:06
>239
いや、質問すべき
241デフォルトの名無しさん:04/12/05 23:21:42
>>239
むしろ運が良いかも
242デフォルトの名無しさん:04/12/05 23:22:25
いまさらだけど質問見てみたら
>>174は質問じゃなくて自慢話だろ
早く気が付いてやれよ
243デフォルトの名無しさん:04/12/05 23:23:12
>>242
なんの自慢だか。
244デフォルトの名無しさん:04/12/05 23:28:03
バカ自慢
245デフォルトの名無しさん:04/12/05 23:29:44
んじゃあ遠慮なく…。

初歩的なデバッグ方法としてメッセージボックスを表示させているのですが、
一度しか通らないはずの関数の中で、メッセージボックスが無限に表示されてしまいます。

これはメモリ領域の破壊が原因なのでしょうか?
WM_COMMAND内にある関数ですので、それが関係しているのでしょうか?
246デフォルトの名無しさん:04/12/05 23:32:12
>>245
コードみせて。
247デフォルトの名無しさん:04/12/05 23:38:28
>>245
自前のログファイルに出力するとか
OutputDebugStringでデバッガに出力するとか
PCが2台あるならリモートデバッグするとか
メッセージボックス以外の代替手段もあるよ
248245:04/12/05 23:44:27
>>246
すいません、かなり長いので貼れません…。
が、もしかしたらコレじゃないかってのがあるので、簡単に載せてみます。

/* プロトタイプ */
char* Kansu01(void);
〜略〜

char buff[100];

WM_COMMAND:
strcpy( buff, Kansu01 );

}

char* Kansu01(){
char buf[100];
char *ret;

strcpy( buf, "あああ");
ret = buf;

return ret;
}

かなりアホなやり方かと思います…。
これで致命的なバグが出ることはあるのでしょうか?

>>247
レスありがとうございます。
デバッガの使い方から勉強することになります…。
将来的には必要になってくるので、勉強しておいて損はないですよね。
249245:04/12/05 23:48:00
↑別にWM_COMMANDの中でやる必要はないです。
ただ、この使い方が正しいのか、おかしいのかが知りたいです。
250デフォルトの名無しさん:04/12/05 23:53:08
>>181
いいから首釣って氏ねよ
ポートスキャンで安全確認?そんなの寝てる間にでもやれ
自分に対してならそれで十分だろ
251デフォルトの名無しさん:04/12/05 23:54:32
>>248
case WM_COMMAND: の前の case 句で break してないとか。
252デフォルトの名無しさん:04/12/05 23:56:16
Kansu01 の戻り値がオート変数へのポインタというのはどうかと…
せめて、static char buf にしとかないか。
253デフォルトの名無しさん:04/12/05 23:57:26
>>252
void Kansu01(char *buf) {
    strcpy( buf, "あああ");
}
とかにして、
Kansu01(buff);
と呼び出すとかね。
254デフォルトの名無しさん:04/12/05 23:57:35
Kansu01は呼ばれてないじゃんか。
255デフォルトの名無しさん:04/12/06 00:00:36
> WM_COMMAND:
> strcpy( buff, Kansu01 );

case WM_COMMAND:
strcpy( buff, Kansu01( ) );
のことかと補完して読んだんだけど、
本当に case や ( ) が抜けているのかも?
256245:04/12/06 00:08:20
皆さんレスありがとうございます。
上のソースは「こんな感じ」的に書いたので省略しすぎました。
…が、>>255さんがおっしゃるように、本当に抜けている部分があるかもしれないので、
よく確認してみようと思います。
その後、>>253さんのような手法に変更したいと思います。

最後にもう一つ聞かせてください。

char buff01[100];
char *buff02 = "いいい";

strcpy(buff01, buff02);

のように、非ポインタ型の文字列(?)と、ポインタ型の文字列を混同させてしまっても問題ないのでしょうか?
257デフォルトの名無しさん:04/12/06 00:08:34
省略するのは良いが、省略の仕方が悪いよな。意味が分からなくなってる
258デフォルトの名無しさん:04/12/06 00:09:39
>>256
問題ない。それぞれの意味を考えれば分かるよ。
(それから buff01 とかいう命名法はやめたほうが。。。)
259245:04/12/06 00:14:01
>>257
すいませんでした。確かに読み返してみたら意味わからなくなってました。
以後、気をつけます。

>>258
ありがとうございます。もう一度基礎の部分を勉強しなおしてみようと思います。
260デフォルトの名無しさん:04/12/06 00:14:05
>258
why?
261デフォルトの名無しさん:04/12/06 00:18:50
>>260
命名のこと?そりゃ意味が分かりにくいからさ。
すぐに意味がとれるちょっとした変数なら別にいいんだけど、
01 とか書いてあると2桁までこの変数名が続くのかなと、恐ろしく思ったよ。
262デフォルトの名無しさん:04/12/06 07:22:07
>261
へー
263デフォルトの名無しさん:04/12/06 07:22:35
>256
サンプルコードの命名までうだうだ言われるのかー
264デフォルトの名無しさん:04/12/06 09:52:16
人目につくものはうだうだいわれる宿命。
265デフォルトの名無しさん:04/12/06 10:39:42
メッセージボックスのボタンを押す → WM_COMMAND の無限再入ってことはないか
266デフォルトの名無しさん:04/12/06 12:01:24
>>261
ハンガリー記法?
ソースだと分かるけど、あれ位の質問用なら良いと思う

そもそも、数字が2桁って事より、ポインタと配列が同じ命名規則って方が気になったけど
(引数を逆にして使ってしまったりして・・・)
267デフォルトの名無しさん:04/12/06 13:07:49
WM_KEYDOWNについて質問なのですが、
ウィンドウ(ダイアログではない)上にあるチェックボックスを操作した後に、メインウィンドウのプロシージャにメッセージが来ません
チェックボックスやボタンなどの子ウィンドウにフォーカスが移ってもキーメッセージが来るように出来ませんか?
キーを押したタイミングさえ分かれば、WM_COMMANDなどでも良いのですが・・・これも来ません・・・

調べた限り、MFCなら簡単に出来そうでしたがbccなので使えません
フック関数やプロシージャの変更はプログラムが複雑になりそうで、出来れば避けたいです
他にも方法を考えているのですが、通常はどのように対処しているのでしょうか
268デフォルトの名無しさん:04/12/06 17:27:24
アプリからスクリーンセーバを起動して、アプリがスクリーンセーバを止めるまで
起動させ続けたいのですがどうしたら良いでしょうか?

OpenDesktopで取ってきた"Screen-Saver"のDeskハンドルを使って、EnumDesktopWindowsを
呼び出してWindowハンドルを取得。
このWindowのプロシージャを、WM_CLOSEを無視するプロシージャにSetWindowLongで置き換え
たのですが上手くいきませんでした。
269デフォルトの名無しさん:04/12/06 19:01:29
ValidateRect関数って何に使うんですか?
使い道がよく分からない。
270デフォルトの名無しさん:04/12/06 20:05:42
>>269
その関数名はどこで見た情報で得た?
271デフォルトの名無しさん:04/12/06 20:13:47
>>268
マウスやキーボードメッセージを捨ててみては?
272270:04/12/06 20:24:12
すいません。270を訂正します。

その関数名はどこで見た情報から知ったか教えてください。
273デフォルトの名無しさん:04/12/06 22:57:20
>>269
最近ValidateRectを使った例から。
自分のウィンドウにスクロールバーをつけたとき、スクロールバーがドラッグされている間は画面は変化せず、
マウスボタンが離されてから、一気にその位置までスクロールするようにした。
するとスクロールバーのドラッグ中は勝手に再描画されるらしく、ウィンドウ内がちらつくようになった。
そこでスクロールバーのドラッグされている間はValidateRectを呼ぶようにした。
これで見事ちらつきはなくなったとさ。めでたし、めでたし。
274デフォルトの名無しさん:04/12/07 00:20:28
COLORREFは、符号有りか無しのどちらでしょうか。
調べると32ビットとは書いてあるのですが。教えてください。

用途としては、文字を表示する関数で、背景色の引数に負を渡した時、
透過して表示とかに使いたいのです。
符号無しだった時は、0xffffffを超えた値を渡した時にする予定です。
275デフォルトの名無しさん:04/12/07 00:30:10
typedef unsigned long DWORD;
typedef DWORD COLORREF;
276デフォルトの名無しさん:04/12/07 00:32:47
>>274
CLR_INVALIDとかなんとかいう定数もあった気がする。
277274:04/12/07 00:33:36
>>275
分かりました。ありがとうございました。
278274:04/12/07 00:43:45
>>276
ありました。ありがとうございます。
279デフォルトの名無しさん:04/12/07 12:03:30
ProcessIDが判明している状態でProcessにWM_CLOSEとかのメッセージを送るには
どうしたらいいの?
280デフォルトの名無しさん:04/12/07 12:16:02
EnumWindowsしてGetWindowThreadProcessIdでプロセスIDが一致するウィンドウ全てにメッセージ送付。
281デフォルトの名無しさん:04/12/07 12:36:07
インスタンスハンドルというものがあるのですが

インスタンスは メモリ上のプログラム
これを識別するための番号がインスタンスハンドルだそうなのですが

メモリ上のプログラムとはいったいどんな物なのでしょうか?
282デフォルトの名無しさん:04/12/07 12:47:39
>>281
ようするに大雑把に言うとメモリにロードされたEXEファイルの中身
283デフォルトの名無しさん:04/12/07 12:54:27
大雑把にもなっていない
284デフォルトの名無しさん:04/12/07 13:12:47
>283
じゃあ君が教えてあげれば?
285デフォルトの名無しさん:04/12/07 21:12:21
マウスの左ボタンを連打してると
WM_LBUTTONDOWN
WM_LBUTTONUP
WM_LBUTTONDOWN
WM_LBUTTONUP
WM_LBUTTONUP
WM_LBUTTONDOWN
…みたいな感じでWM_LBUTTONUPが
複数回連続して送られてくる事があるのですが
WM_LBUTTONUPの後にWM_LBUTTONUPは
ありえないと思うのですが、これは、仕様なのでしょうか?
286デフォルトの名無しさん:04/12/07 21:18:26
>>285
クライアントへドロップしたときはどんなだっけ?
287デフォルトの名無しさん:04/12/07 21:53:30
HINSTANCEってNULLを指定するとどういう意味になるの?
HWNDはデスクトップのハンドルと同じ意味になるけど
288デフォルトの名無しさん:04/12/07 23:08:39
DLL
289デフォルトの名無しさん:04/12/07 23:21:42
DLL内でWH_KEYBOARDを指定したフックの有効範囲ってSASを除いたSYSTEM全体に及ぶの?
それともDeskTop単位止まり?
290デフォルトの名無しさん:04/12/07 23:58:17
ドラッグアンドドロップを設定したのですが。
子ウィンドウすべてにドラッグアンドドロップ属性みたいなのがついてしまいます。
特定のウィンドウにのみドラックアンドドロップ属性を設定したいときはどうすればいいのでしょうか?
291デフォルトの名無しさん:04/12/08 00:00:13
>>290
前スレに解決方法が書いてあった
292デフォルトの名無しさん:04/12/08 01:02:15
>>291
すみません。ドラッグで検索かけたところみつからないです。
293285:04/12/08 02:33:50
>>286
「クライアントへドロップ」とは?
試してみれば、わかりますがマウスは移動させてません。
同じ場所で連打していても、WM_LBUTTONUPが複数回
連続して送られてくるのです…。
色々と試してみたのですが、条件がわかりませんが
WM_LBUTTONDOWNを取りこぼす時があるらしいです。
294デフォルトの名無しさん:04/12/08 02:47:21
連打しすぎてマウスボタンが壊れたとか
295285:04/12/08 03:23:48
原因がわかりました。
WM_LBUTTONDBCLKがきてました。

WM_LBUTTONDOWN
WM_LBUTTONUP
(WM_LBUTTONDBCLK)
WM_LBUTTONUP
WM_LBUTTONDOWN

という感じでした。WM_LBUTTONDBCLKの時は
WM_LBUTTONDOWNは来ないんですね…。
お騒がせしました。
296デフォルトの名無しさん:04/12/08 03:27:33
>>290
IDropTargetを使ってきめ細かく制御すればいいんじゃない?
297デフォルトの名無しさん:04/12/08 07:04:25
アクティブでないウィンドウにキーボードイベントを送ろうとしています

SPY++を使ってNOTEPADのEditを監視しつつキーボードのAを叩くと
P WM_KEYDOWN wParam:00000041 lParam:001E0001
P WM_CHAR wParam:00000061 lParam:001E0001
P WM_KEYUP wParam:00000041 lParam:001E0001

とありましたので、
PostMessage(hWnd,0x0100,0x41,0x1E0001); /*hWndはEditのウィンドウハンドル*/
PostMessage(hWnd,0x0102,0x61,0x1E0001);
PostMessage(hWnd,0x0101,0x41,0x1E0001);
とした所、Post毎にWM_IME_NOTIFYが発生してaが三回入力されてしまいました
キーボードを叩いたときと同じ動作をさせたい場合はどうしたらよいのでしょうか?
勘違い、知識不足があったらご指摘いただけると幸いです
よろしくお願いします
298デフォルトの名無しさん:04/12/08 10:31:22
なんでkeybd_eventを使わないの?
299デフォルトの名無しさん:04/12/08 10:33:16
>298
知らなかったから。
300デフォルトの名無しさん:04/12/08 10:44:13
>>298
アクティブでないウィンドウにキーボードイベントを送ろうとしています
keybd_eventはアクティブでないウィンドウにも送れるのでしょうか?
>この関数は SendInput 関数に取って代わられました。
という記述も見ましたが、SendInputでも非アクティブのウィンドウには送れない様なので
SendMessageを使いました
keybd_eventでもウィンドウをアクティブにすることなく仮想キーを送れるのでしたら
ご教授いただけませんでしょうか?
ここ4日間Googleの検索結果と戯れましたが自分には検索できませんでした
301297=300:04/12/08 10:59:18
この板はID出ないのですね
>>300>>297です
失礼しました
302デフォルトの名無しさん:04/12/08 11:31:44
フックについて質問があります。
サービスからキーボードの入力をブロックするプログラムを作成しているのですが、
上手くいかず困っています。お知恵をお貸しください。
行なった事は以下の通りです。ServiceはSystemLocalAccountで動作しています。

1)LogonUserのトークンを取得
2)<http://support.microsoft.com/default.aspx?scid=kb;ja;173687>のサンプル
コードを参考にして、ApplicationDesktopと接続
3)1のトークンを使ってImpersonatLoggedOnUser()で偽装(*1)
4)DLL内に作成した関数で、WH_KEYBOARD(*2)とWH_MOUSEを指定してHOOKをかける
5)RevertToSelf()で偽装解除(*1)
6)2を参考にしてApplicationDesktopとの接続を終了

上記の処理で概ねキー入力のブロックは出来ているのですが、コマンドプロンプトが
起動していると、コマンドプロンプト内でキー入力可能な状態になってしまいます。
上記、4のみを行なう通常のApplicationを作成してLogon中のUserAccount上で実行す
ると上記の不具合は、発生しませんでした。
私としては、Logon中のUserAccount上でHookApplicationを実行するのと同じ事をして
いるつもりなのですが、どうにも腑に落ちません。何か間違った事をしてますでしょ
うか?

(*1)元は無かったのですが、UserContextの問題なのかと思い追加しました
(*2)WH_KEYBOARD_LLも試してみましたが、結果はかわりませんでした
303302:04/12/08 11:40:29
>>302
開発環境が抜けていました。申し訳ありません。

"Win2KPro + VC++6"

です。よろしくお願いします。
304デフォルトの名無しさん:04/12/08 12:35:15
WinSockで取得した文字列をTextOutで表示したいのですができません。
何も表示されないんです。
なぜでしょうか?

同じ位置に、TextOutで文字列を直接指定して表示しようとしたらできました。
また、WinSockで取得した文字列をMessageBoxで表示したらちゃんと表示されました。

WinSockで取得した文字列の描画だけが上手くいかないようです。
305デフォルトの名無しさん:04/12/08 12:38:56
>>304
しばらく休んで病院行け
306305:04/12/08 12:41:55
すいません。精神科に通院中なので変な書き込みをしてしまいました。
無視してください。
307デフォルトの名無しさん:04/12/08 12:42:33
>304
ソースを抜粋して見せられませんか?
308デフォルトの名無しさん:04/12/08 12:44:49
SendMessage(hWnd,0x0100,0x41,0x1E0001); /*hWndはEditのウィンドウハンドル*/
SendMessage(hWnd,0x0102,0x61,0x1E0001);
SendMessage(hWnd,0x0101,0x41,0x1E0001);
309デフォルトの名無しさん:04/12/08 12:47:19
>308
これはどれへのレスだ?
310デフォルトの名無しさん:04/12/08 12:47:37
>>304
UNICODE?
311デフォルトの名無しさん:04/12/08 12:48:15
312デフォルトの名無しさん:04/12/08 12:51:58
>311
おお。スマン
313デフォルトの名無しさん:04/12/08 12:56:43
>>312
家々
314デフォルトの名無しさん:04/12/08 13:05:46
なんで数値直接?
315デフォルトの名無しさん:04/12/08 13:12:35
>>297
単にWM_KEYDOWNがTranslateされて、2回WM_CHARが行っただけな気が
その目的ならスキャンコードもいらないでしょ
SendMessageは通らなかった気がする

PostMessage( hWnd, WM_KEYDOWN, 'A', 0 );
PostMessage( hWnd, WM_KEYUP, 'A', 0 );
31669式フリーPG ◆hND3Lufios :04/12/08 13:15:08
だね。WM_CHARはいらない。
317304:04/12/08 13:15:55
>>307
これです。
メニューの項目を選択したときにこの関数が呼ばれます。

>>310
すいません、わかりません。

BOOL MySock(HWND hWnd){
    WORD WinSockVersion=MAKEWORD(2,2);
    WSADATA wsa;
    char *SendData="GET /mytest/My.fj HTTP/1.0\r\nUser-Agent:My\r\n\r\n";
    char MyBuf[1024];
    char Myip[]="IPアドレス"; //アクセス先のIPアドレス、ローカル鯖でテストしています。
    unsigned long ip;
    
    //WinSockの初期化
    WSAStartup(WinSockVersion,&wsa);
    
    //ホスト情報の作成
    ip=inet_addr(Myip);
    LPHOSTENT hostent=gethostbyaddr((const char *)&ip,4,AF_INET);
    
    //ソケットの作成
    SOCKET hMySock=socket(AF_INET,SOCK_STREAM,0);
    
318304:04/12/08 13:16:44
    //ソケットアドレスの作成
    SOCKADDR_IN sockaddr;
    sockaddr.sin_family=AF_INET;
    sockaddr.sin_port=htons(80);
    sockaddr.sin_addr=*((LPIN_ADDR)*hostent->h_addr_list);
    
    //接続
    connect(hMySock,(LPSOCKADDR)&sockaddr,sizeof(SOCKADDR_IN));
    //送信
    send(hMySock,SendData,strlen(SendData),0);
    //受信
    recv(hMySock,MyBuf,sizeof(MyBuf)-1,0);
    MessageBox(hWnd,MyBuf,"OKです",MB_OK);

    //表示
//問題の箇所です
    PAINTSTRUCT ps;
    HDC hdc;
    hdc=BeginPaint(hWnd,&ps);
    SetTextColor(hdc,RGB(255,100,200));
    TextOut(hdc,0,0,MyBuf,strlen(MyBuf));
    EndPaint(hWnd,&ps);
    
    //ソケットを閉じる
    closesocket(hMySock);
    WSACleanup();
    return TRUE;
}
319デフォルトの名無しさん:04/12/08 13:22:18
BeginPaintを何だと思ってやがる。
320デフォルトの名無しさん:04/12/08 13:27:04
>319
おまじないでしょ?
32169式フリーPG ◆hND3Lufios :04/12/08 13:27:50
>>318
問題の箇所はWM_PAINTで呼ばれるんだよね?
322デフォルトの名無しさん:04/12/08 13:29:53
HDC hdc;
hdc=GetDC(NULL);
SetTextColor(hdc,RGB(255,100,200));
TextOut(hdc,0,0,MyBuf,strlen(MyBuf));
ReleaseDC(hdc);
323デフォルトの名無しさん:04/12/08 13:31:27
「同じ位置に、TextOutで文字列を直接指定して表示しようとしたらできました。」
とある。
324デフォルトの名無しさん:04/12/08 13:33:23
MyBufの中に'\0'が入ってるんじゃないの?
325デフォルトの名無しさん:04/12/08 13:34:48
「また、WinSockで取得した文字列をMessageBoxで表示したらちゃんと表示されました。」
とある。
326デフォルトの名無しさん:04/12/08 13:35:05
>>324
俺もそう思ったけど、それだとMessageBoxでも表示されないと思う
327デフォルトの名無しさん:04/12/08 13:35:23
MuBufはオート変数だが、実は//問題の箇所です以下は別関数ってこたないだろうなw
328デフォルトの名無しさん:04/12/08 13:35:52
とりあえず MyBuf の内容をファイルに出力して
あとでダンプ見てみれば
329304:04/12/08 13:36:49
>>319
クライアント領域に描画するときのあれです。

>>321
>>317-318の関数内で呼ばれるんです。

>>322
試してみます。

>>323
はい。
TextOut(hdc,0,0,MyBuf,strlen(MyBuf)); を
TextOut(hdc,0,0,"テスト",6); と置き換えると、これはちゃんと表示されるんです。

>>324
えっと・・・

>>325
はい。
MessageBox(hWnd,MyBuf,"結果",MB_OK); で取得した文字列の表示はできました。
330304:04/12/08 13:41:17
>>322
ReleaseDC(hdc)のところでエラーが出ました。
HWND型のを指定しなければならないとか。
パラメータが足りないとも出ます。

>>327


>>328
なるほど。
それをやってみます。
33169式フリーPG ◆hND3Lufios :04/12/08 13:43:25
いまいちよく分からんが。

static char MyBuf[1024];

ZeroMemory(MyBuf, sizeof(MyBuf));
332デフォルトの名無しさん:04/12/08 13:45:03
>>322
ReleaseDC(hWnd, hdc);
>>330
これくらい自分で調べろ
333304:04/12/08 13:50:39
>>322,>>332
表示されました!
何が悪かったのでしょうか?
334一星 ◆Cppn/.YI3. :04/12/08 13:51:48
BeginPaint・EndPaintはWM_PAINTが送られた時にしか使ってはいけなかったのでは。
33569式フリーPG ◆hND3Lufios :04/12/08 13:53:52
そういうことか。。。w
336デフォルトの名無しさん:04/12/08 13:54:29
やっぱりな
337デフォルトの名無しさん:04/12/08 13:55:17
おいおい
> TextOut(hdc,0,0,"テスト",6); と置き換えると、これはちゃんと表示されるんです。
じゃなかったのかよ
338デフォルトの名無しさん:04/12/08 13:55:28
「同じ位置に、TextOutで文字列を直接指定して表示しようとしたらできました。」
これはウソなのか?
339デフォルトの名無しさん:04/12/08 13:56:32
>>333 は釣り
340一星 ◆Cppn/.YI3. :04/12/08 13:57:51
>>338
うーん……。
偶然なんじゃないか?
WM_PAINTが送られた時以外でBeginPaint・EndPaintを使っても
うまくいく保障はないが、偶然にうまくいく可能性はあるとか。
341304:04/12/08 14:00:46
>>334
なるほど。
これから気をつけます。

>>337-338
・・・今やったらできませんでしたorz
でも、さっきは4回確認して4回とも表示されたんですけど・・・。

回等してくださった皆様、ありがとうございました。
342デフォルトの名無しさん:04/12/08 14:02:07
つまんね
343デフォルトの名無しさん:04/12/08 14:02:21
結論:アレゲなやつの質問では、ソース以外信用してはならない。
344デフォルトの名無しさん:04/12/08 14:04:13
もっとすごい落とし穴があるのかと思ってたよ
345デフォルトの名無しさん:04/12/08 14:14:06
アレゲなんてアイタタ語を使ってしまうやつの言葉は何一つ信用してはいけない
346デフォルトの名無しさん:04/12/08 14:23:53
347デフォルトの名無しさん:04/12/08 14:35:32
>346
根拠は?
348デフォルトの名無しさん:04/12/08 14:37:38
>>346
残念ながら、巡回時にキモい単語が目に付いたから脊髄反射しただけですよ。
349デフォルトの名無しさん:04/12/08 14:51:42
アレゲは駄目でキモいとかアイタタはいいのか。
何一つ信用できない感性だな。
350デフォルトの名無しさん:04/12/08 14:57:55
アレゲってなに?
351デフォルトの名無しさん:04/12/08 15:06:23
352デフォルトの名無しさん:04/12/08 15:14:03
>>349
郷に入りては郷に従え、って言葉知ってます?
353デフォルトの名無しさん:04/12/08 15:15:06
だから、脊髄反射なんかゆーてるキテガイを相手にすんなって。
354デフォルトの名無しさん:04/12/08 15:27:35
そうだよな脊椎反射だよな。
355デフォルトの名無しさん:04/12/08 15:35:54
>>341
スレ荒れて面倒だから答える。
recv は、
・もうデータがないとき 0 を返す
・まだデータがある場合は、1以上指定したバッファサイズ以下だけ読み込んで、読み込んだサイズを返す
 一回の recv で実際に何バイト読まれるかは状況しだい。recvしてみないとわからない。
っていう仕様だよ。

データを全部読むなら、0を返すまでループでまわしてバッファの後ろに連結する必要がある。
んで MessageBox に渡すなら、最後にNULLキャラクタ( '\0' )を付加する。
356デフォルトの名無しさん:04/12/08 16:20:09
クライアント(描画領域)サイズを 640x480 にしたい場合
ウインドウスタイル(枠線やらメニューやら)によって
ウインドウ生成時のサイズが変わりますよね 650x510(←てきとう)みたいに大きめに。

クライアントサイズをw*hにしたい場合は、(このウインドウスタイルなら)W*Hで作れるよ。
って数値を逆算してくれるAPIってありますか?
無いなら、それを計算する方法を説明したサイトってありませんか?

357デフォルトの名無しさん:04/12/08 16:23:17
>>356
AdjustWindowRect

って、前スレにも同じ質問があったような・・・
358デフォルトの名無しさん:04/12/08 16:23:19
AdjustWindowRectEx
359デフォルトの名無しさん:04/12/08 16:25:32
大変、申し訳ございませんが、ひとつ教えていただきたいことがあります。

ローカルマシンでなく、ネットワークのマシンで、
プロセスを列挙するようなAPIってないでしょうか?
また、そのプロセスがどのユーザで動いているか
わかることができればより助かります。

WTSEnumerateProcessesとLookupAccountSidを
組み合わせれば可能であることを確認したのですが、
ターミナルサービスに対応していないと駄目なようなのです。

WinNT Server、Win2000 Server、Win2003上で確実に動作する。
そんな素敵なプロセス列挙APIをご存知ないでしょうか?

教えてくださいこのやろうども。
360デフォルトの名無しさん:04/12/08 16:27:02
>>357,358
すげー。
ありがとう。
361297:04/12/08 16:46:43
>>308
>>314
>>315
>>316

レスありがとうございます
>>314
環境がPerlでWin32-APIを使っているもので、変数が定義されていないからです
環境の記入漏れがあって申し訳ありません

>>315
実際は3回行っていました
仰る通りPostMessageにしたら期待通りの動作が出来ました
ありがとうございました

実際のキーボードもこのようにリターンを待っているのでしょうか
>指定したウィンドウのウィンドウプロシージャが処理を終了するまで制御を返しません
と言う記述を見て、キーボードは返り値を待たないのではと勝手に思い込み
この関数は試していませんでした
勝手な思い込みはダメですね、気をつけます
362297:04/12/08 17:35:21
三回入力されていた原因は、WM_KEYUPのlParamを0xC01E0001にしていなかった
ミスによるものでした
lParamを0xC01E0001にしたところ、二回入力となりました

SendMessageではWM_CHARを送らなければ文字は入力されませんでした
363デフォルトの名無しさん:04/12/08 17:37:21
そりゃTranslateされないからだべ
364デフォルトの名無しさん:04/12/08 18:36:19
>>359
質問の意味が良くわからん。
WTSEnumerateProcessesとLookupAccountSidの使い方が分からんという意味なのか?
365デフォルトの名無しさん:04/12/08 18:49:02
>>364
WTSEnumerateProcessesとLookupAccountSidを使って目的は果たせたのですが、
この方法はNTではできないので、NTでもできて欲しいのです。

NTサーバでも動くものもあるのですが、
Windows NT4.0 Terminal Server Edition SP4でないと動かないみたいなので。

無視されるかと思ってたのですがレスありがとう。
366デフォルトの名無しさん:04/12/08 19:45:36
ちょっと興味があったんだが、>>302の質問って誰も答えられないのか?
367デフォルトの名無しさん:04/12/08 19:50:08
うん
368デフォルトの名無しさん:04/12/08 19:51:25
>366
このスレのレベルじゃ当然。
369デフォルトの名無しさん:04/12/08 20:25:06
>>341
sendのあとで、すぐにrecvすんなよ。
select使えよ。
370デフォルトの名無しさん:04/12/08 20:35:27
>>302
漏れは全然この辺知らないので、基本的なところの確認。
・ImpersonatLoggedOnUser はサーバOSでしかサポートされていない。
・CSRSS.EXE は、SeDebugPrivilege privilege が無いとHookできない。
・SetWindowsHookEx は User32.dll とリンクしていないプロセスや、システムサービスをHookできない。

なんとなく上の2つが引っかかってるような気が・・・
371デフォルトの名無しさん:04/12/08 20:39:22
>369
理由は?
372デフォルトの名無しさん:04/12/08 21:00:13
固まるからじゃねーの?真意は知らんが。
373デフォルトの名無しさん:04/12/08 21:02:49
374デフォルトの名無しさん:04/12/08 22:17:20
2つのビットマップを異なるパレットで表示したいのですが、
どうしたらよいでしょうか?

パレットをあらかじめ2つCreatePalette()で作っておいて、

SelectPalette(hDC, hPalette1, FALSE);
RealizePalette(hDC);
SetDIBitsToDevice(); /* 1つめのビットマップ */

UnrealizeObject(hPalette1);
SelectPalette(hDC, hPalette2, FALSE);
RealizePalette(hDC);
SetDIBitsToDevice(); /* 1つめのビットマップ */

ではだめでしょうか?
375デフォルトの名無しさん:04/12/08 22:26:03
>>374
やってみたら?
376デフォルトの名無しさん:04/12/08 23:03:49
>>289
デスクトップの数だけスレッドを作ってSetThreadDesktopすればいい
377デフォルトの名無しさん:04/12/08 23:24:05
>>374
パレット弄ってもビデオモードによっては意味無いんじゃないの?
378デフォルトの名無しさん:04/12/08 23:27:36
>>374
SetDIBitsToDevice に渡している Bitmapinfo に色情報が入っていればちゃんと出るはず。
379デフォルトの名無しさん:04/12/09 02:23:54
モーダルダイアログボックスのタイトルバーの文字をGetWindowText関数で取得して
それをSendMessage関数でメインウィンドウに送ってるのですが
なぜかモーダルダイアログボックスのタイトル文字が変化してしまいます。

 GetWindowText(mod,buf,300);
 SendMessage(hwnd,WM_SETTEXT,0,(LPARAM)buf);

modがダイアログボックスです。原因を教えてくださいお願いします
380デフォルトの名無しさん:04/12/09 02:25:53
>>379
 SendMessage(hwnd,WM_SETTEXT,0,(LPARAM)TEXT("タイトル"));
でも、モーダルダイアログの方が変わるのか?
hwndの値は間違ってないか?
381379:04/12/09 02:28:26
>>380
いまためしたのですがダイアログの方が変わります。値とはなんでしょうか?変数名は間違ってません
382379:04/12/09 02:37:23
ちなみにこれを記述してる場所はダイアログボックスのプロシージャの中です
383デフォルトの名無しさん:04/12/09 02:39:11
だからさ、hwndの値がダイアログのものになってるんだろ?
384デフォルトの名無しさん:04/12/09 02:40:00
なんでしょうかじゃねえだろ値をもたない変数などねーんだよ
385379:04/12/09 02:43:05
なるほど、知りませんでした。では値を変える方法を教えてください。お願いします
386デフォルトの名無しさん:04/12/09 02:45:52
すれ違い
387379:04/12/09 02:47:20
>>386
(゚Д゚)ハァ?、いきなりスレ違いはねぇだろカス。

では引き続き値を変える方法を教えてください。お願いします
388デフォルトの名無しさん:04/12/09 03:09:04
君には無理
389379:04/12/09 03:14:50
わからない方の低脳なレスはいりませんので
引き続き値を変える方法を教えてください。お願いします
390デフォルトの名無しさん:04/12/09 03:53:05
>379
念じろ。念じるんだ。値が変わるまでこのスレくんな。
391379:04/12/09 03:56:47
調べてみるとウィンドウハンドルの値はすべて同一の値をとっている
ようなのでIDとして有効なのはそのウィンドウが存在する間だけのようです。
どうやら、みなさん低脳なようなので自分で模索することにします
392デフォルトの名無しさん:04/12/09 04:00:10
>>391
ここの人は丁脳なので、あなたの言ってる事が理解できませんでした。
レスを強制終了します。
393デフォルトの名無しさん:04/12/09 05:20:46
変数を知らないでプログラム組めるなんて凄い。
394379:04/12/09 05:28:35
>>393
( ゚,_ゝ゚)真性の馬鹿はとっとと死ねよww
395デフォルトの名無しさん:04/12/09 07:03:31
だからさ、hwndの値がダイアログのものになってるんだろ?
396デフォルトの名無しさん:04/12/09 07:20:13
いままでダメな奴いろいろ見てきたけど
変数の値の変え方聞く奴は始めて見た。
397デフォルトの名無しさん:04/12/09 07:25:29
>396
お前分かるの?
398デフォルトの名無しさん:04/12/09 07:27:07
みんな釣られすぎ
399デフォルトの名無しさん:04/12/09 07:28:17
>>379
hwndにメインウィンドウのハンドルを代入(変数の値を変える)してください。
それで解決です。
400399:04/12/09 07:31:03
>399
代入ってどうやるんですか?
401379:04/12/09 07:31:35
すいません。>400は399じゃなくて379でした。
ご迷惑おかけして本当に申し訳ありません。
402379:04/12/09 07:41:10
>>396
言ってる意味全然わかってないでしょボクちゃん?ww
変数の値とかじゃないの。わかる?w
403379:04/12/09 07:46:18
>>399
( ゚,_ゝ゚)おめーもとっとと死ねよww
404379:04/12/09 08:40:41
解決しました。マジですいませんでした。数々の暴言と無礼をどうかお許しください
405デフォルトの名無しさん:04/12/09 08:45:03
許すわけないだろ
406359:04/12/09 10:26:35
>>404
許してほしいと思うなら、なんで解決したか言ってから帰れよ。

>>372
それは逆だス。recvしないから固まるはず。
全部recvし終えてから、sendしないと固まる可能性あり。


ところで漏れの質問はやっぱり無理ッス化。
407デフォルトの名無しさん:04/12/09 12:00:59
EXEやDLLを作り出すアプリを作るために必要な情報ご存知ありませんか?
408デフォルトの名無しさん:04/12/09 12:15:37
PEフォーマットの話か?
409デフォルトの名無しさん:04/12/09 12:37:31
コンパイラ作るのか?
それともジェネレータ(だっけ?)作るのか?
同じ挙動で数値(色とか大きさとか)だけ変えるなら、バイナリ操作だけでいけるだろ
410407:04/12/09 12:56:37
>>408,409 アドバイスありがとうございます。説明不足ですみませんでした。
ActiveScriptで制御可能なエンジン部があってそれを単一のEXEなりDLLにしたいと
思っているのですが、その後いろいろ調べてみて、以下の方法で行けそうな気が
するのですがいかがなものでしょう?それはダメだとか、普通はこうするだろなど突っ込み
いただけるとありがたいです。

1 .ダミーのリソース(スクリプトやそれが必要なリソースをパッケージしたもの)を含んだ
EXEあるいはDLLのファイルをあらかじめ用意しておく。
2. BeginUpdateResource、UpdateResource、EndUpdateResourceを使って、それを
書き換えるて、新しいEXEあるいはDLLのファイルを作成する。
3. 作ったEXEあるいはDLLのファイルの実行時、FindResource、LoadResource、LockResource
を使ってリソースからスクリプトなどを取得して実行。
411デフォルトの名無しさん:04/12/09 12:59:23
>>406
だって、そんなAPIはないから。
412デフォルトの名無しさん:04/12/09 13:06:52
>>410
exeファイルに関しては単純にランタイムのexeの後ろにゴミ(スクリプト)くっつけただけってのはよく見る
413359:04/12/09 13:07:31
>>411
ありがとう(涙
414デフォルトの名無しさん:04/12/09 14:08:04
>>413
WMIのWin32_Processクラス辺りじゃダメかな

ローカルマシンでしかやったことないけど、
WMI自体はリモートマシンにも対応してるはず・・・
415407:04/12/09 15:46:50
リソースに組み込む方法、単純にEXEの後ろに追加する方法、両方で実現できました。
ありがとうございます
416デフォルトの名無しさん:04/12/09 16:56:18
メインウィンドウをオーナーウィンドウとしたダイアログボックスで
ダイアログボックスを最小化してからメインウィンドウを最小化し
再びメインウィンドウを元にもどすとダイアログボックスも元に戻ってしまいます。
なぜでしょうか?原因を教えてくださいお願いします
417デフォルトの名無しさん:04/12/09 17:44:15
HSPでRPG作りたいんですが、正直難しいと思います。
でもやりたいんです!!僕はHSPでブロック崩し(アルカノイド)
ぐらいなら作ったことあります。
今のところ、オープニングまで作ったのですが、どなたか僕に
HSPの基礎からすべてを叩き込んでくれませんか??
お願いします。
418デフォルトの名無しさん:04/12/09 17:51:38
419デフォルトの名無しさん:04/12/09 17:52:05
1 :HSP :04/04/25 23:19 ID:FQRAx6j0
HSPでRPG作りたいんですが、正直難しいと思います。
でもやりたいんです!!僕はHSPでブロック崩し(アルカノイド)
ぐらいなら作ったことあります。
今のところ、オープニングまで作ったのですが、どなたか僕に
HSPの基礎からすべてを叩き込んでくれませんか??
お願いします。


2 :名前は開発中のものです。 :04/04/26 00:06 ID:Y28g2c6L
ぐふっ・・・おまえには・・・すべてをおしえた・・・みんなをまもってくれ・・・・・・・・・


3 :名前は開発中のものです。 :04/04/26 02:19 ID:PFEeis3S
ネタスレですか? 釣られませんよ。
420デフォルトの名無しさん:04/12/09 20:12:39
現在以下の処理をし、ネットワーク共有フォルダのファイルへ
書き込む処理を行っています。

1.WNetAddConnection2
2.ファイル書き込み
3.WNetCancelConnection2

書き込むPCが起動しているときは、問題なく処理できるのですが、
例えばPCの電源が入っていないときは、ネットワークを検索しているのか、
WNetAddConnection2 がエラーを返すのにすごく時間がかかってしまいます。

対策として、秒数を指定しタイムアウトしたいのですが、
設定する方法はあるのでしょうか?
421デフォルトの名無しさん:04/12/09 20:40:20
>>378
アドバイスありがとうございます。

Bitmapinfoの色情報がちゃんと入っていませんでした。
(まだ修正して試してませんが)

これから試してみます…
422デフォルトの名無しさん:04/12/09 22:25:43
DLL内の関数からCreateThread APIでスレッドを起動するプログラムを
書いているのですが、グローバル変数に保存したはずの値の一部が
消えてしまいます。

まず、以下のような構造体を定義し、グローバル変数としてこの
構造体のインスタンスを1つ用意しました。

// パラメータ
struct TEST_PARAM
{
  const char *aaa;
  const char *bbb;
  int ccc;
  const char *ddd;
  const char *eee;
  int fff;
  int ggg;
  const char *hhh;
  const char *iii;
};

// パラメータ
TEST_PARAM *g_pTestParam = new TEST_PARAM();
423422:04/12/09 22:28:45
外部プログラムからはExecTestという関数が呼ばれるようになっており、
この引数にTEST_PARAMへのポインタを受け取っています。
これをグローバル変数pTestParamに保存した後、CreateThread API
でスレッドを起動しています。

// 外部から呼ばれる関数
void _stdcall ExecTest(TEST_PARAM *pTestParam)
{
  DWORD dwTestThreadId;

  // パラメータを保存
  *g_pTestParam = *pTestParam;

  // テストスレッドを起動
  g_hTestThread =
    CreateThread(NULL, 0, TestThread, NULL, NULL, &dwTestThreadId);
}

// テストスレッド
DWORD WINAPI TestThread(LPVOID lpParam)
{
// ★★★この位置でg_pTestParamのメンバを参照すると、一部の文字列メンバが
// ★★★空っぽになっている。

  // 履歴検索実行スレッド終了
  ExitThread(0);

  // 履歴検索実行スレッド用ハンドル解放
  CloseHandle(g_hTestThread);
}
424422:04/12/09 22:31:00
ExecTest内でパラメータを保存した直後にg_pTestParamのメンバを
参照すると全て正しい値が入っていたので保存できたかに見えた
のですが、TestThread内の★★★の位置でg_pTestParamのメンバを
参照すると、一部の文字列メンバが空っぽになっていました。

そもそも*g_pTestParam = *pTestParam; という書き方がまずいのでしょうか。
メンバは整数とポインタだけなのでOKかなと思ったのですが。
おかしいところがありましたらご教授お願いします。
425422:04/12/09 22:32:17
すいません。訂正します。

誤)グローバル変数pTestParam
正)グローバル変数g_pTestParam
426デフォルトの名無しさん:04/12/09 22:49:20
>>422
aaa とかの指してる中身もコピーして保存しておけ。
strdup とか使う場合には _beginthreadex を使え。
Cライブラリを一切使わないならCreateProcess で良いけど。
427422:04/12/09 22:57:17
>426
ありがとうございます。やってみます。
428422:04/12/09 23:04:05
お騒がせしました。動きました!ありがとうございました。
429デフォルトの名無しさん:04/12/10 09:50:34
現在のOSのバージョン・SPの適用状況はGetVersionExで取得できますが、
ほかにインストールされているOSやCD-ROMのバージョン・SPの適用状況を取得するには
どのようにしたらよいでしょうか?
430デフォルトの名無しさん:04/12/10 10:05:13
CD-ROMのバージョン?
431デフォルトの名無しさん:04/12/10 11:01:19
現在起動してるOSではなく、ドライブ上にただ存在しているだけのOSの
種類やバージョンを知りたいって事?
432デフォルトの名無しさん:04/12/10 11:14:54
ext2やext3(その他色々)も読まなきゃならんのか?
433デフォルトの名無しさん:04/12/10 11:15:52
VMwareとかがインストールされていて
その中にOSがあったらそのバージョンを
知りたいんです。
434デフォルトの名無しさん:04/12/10 11:33:01
( ´_ゝ`)フーン
435デフォルトの名無しさん:04/12/10 11:34:37
何にせよ、「Win32API」の範疇の話では無いな。
436デフォルトの名無しさん:04/12/10 11:55:42
よくしらんがVMwareってディスクイメージをWindows上の単一ファイルとして
イメージ作ってたりすんじゃないの?
そうでないものはひたすらファイル読みまくってDLLのバージョンリソースでも
チェックしたら?
437429:04/12/10 14:51:41
すいません、OSというのはWindowsのことで、CD-ROMとはインストールCDのことです。
IEは特定のファイルからバージョンを取得できるのですが、
Windowsそのものについてはそのような方法を見つけられませんでした。
GetVersionEXも何らかのファイルのバージョンを返していると思うのですが、わかる方いませんか?
438デフォルトの名無しさん:04/12/10 15:19:12
version.dllとか?
439デフォルトの名無しさん:04/12/10 16:00:51
>>437
MSIとかそっち方面?
44069式フリーPG ◆hND3Lufios :04/12/10 18:59:32
>>437
これのことかいな。
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/programmersguide/versions.asp

ちょっと文章が分かりにくい。>>429を読んで、
「OSのバージョンやSPをAPI以外に、ファイルのバージョン等から取得する方法は
ありませんか?」という意味に解釈するのは無理があるぞな。
441デフォルトの名無しさん:04/12/10 19:00:17
Windowsのバージョンって、プロンプトでverって打ったら出てくる文字列でOKか?
取得する関数があったり、レジストリからチェック出来たり、色々方法があった気がするけど
442デフォルトの名無しさん:04/12/10 19:05:46
>>441
OKじゃないよ。
443デフォルトの名無しさん:04/12/10 20:51:09
CDのディスクラベルじゃないのか?
444デフォルトの名無しさん:04/12/10 20:51:41
↑ボリュームラベル
445デフォルトの名無しさん:04/12/10 21:04:05
細かいこと言い出すと DLL のサイズだの CRC あたりまでチェックせにゃならんなw
446429:04/12/11 00:19:38
またまたすいません。
>>429ではAPIがあるかもと思って書いたのですが、
レスを見てなさそうだったので>>437で言い直しました。

>>438
>>440
ありがとうございます。でもSPの取得までは無理そうですね・・・

>>439
MSIというのがよくわかりませんが、たぶん違うと思います。

>>441
それならGetVersionExでできるのですが・・・

>>443
ボリュームラベルならGetVolumeInformationで取得できてます。

スレ違いになってきたので逝ってきます。スレ汚しすいません。
447デフォルトの名無しさん:04/12/11 04:16:18
カレントディレクトリを移動する方法を教えてください。
448デフォルトの名無しさん:04/12/11 04:23:19
>>446
サービスパックとかの情報か。レジストリに検索かけてみたら、
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Updates\Windows XP
に、サービスパックとホットフィックス情報があるっぽい
449デフォルトの名無しさん:04/12/11 11:06:24
>>447
_chdir()
ワイド文字版がよければ
_wchdir()
450デフォルトの名無しさん:04/12/11 11:23:29
>>447
SetCurrentDirectory() もよろしく
451デフォルトの名無しさん:04/12/11 11:49:54
日本語を含む文字列の中から日本語を検索するときは
strstrじゃなくて_mbsstrじゃないとまずい?
452デフォルトの名無しさん:04/12/11 12:10:07
まずい
strstrでは予期せぬ物がヒットする可能性がある。
453デフォルトの名無しさん:04/12/11 12:11:04
せっかくだから _tcsstr にしたほうが。
454デフォルトの名無しさん:04/12/11 12:25:35
>>416を教えてください。お願いします
45569式フリーPG ◆hND3Lufios :04/12/11 12:30:02
Shell APIのStrStrではどうだろう。
(IE4以降が必要になるけど)
456デフォルトの名無しさん:04/12/11 12:30:18
>452
そうなんですか。どういう場合にNGになるんでしょうか。
457デフォルトの名無しさん:04/12/11 12:44:06
2バイト文字を含む場合
45869式フリーPG ◆hND3Lufios :04/12/11 12:45:05
char *p = strstr("予約", "\\");
45969式フリーPG ◆hND3Lufios :04/12/11 12:46:47
あ、日本語を検索する時の話か。スマソ。>>458は忘れて。
460デフォルトの名無しさん:04/12/11 13:00:39
>457
試しに "aaaaaaあいうえおbbbbb" の中から "あいうえお" を
検索してみたら問題なかったのですが、例えば特定の文字コードを
含む文字が含まれているときはうまくいかないことがある、
みたいなことなんでしょうか。
461デフォルトの名無しさん:04/12/11 13:20:50
>>460
char *p = strstr("例文", "癜");
たとえばこんなのがヒットしてしまう。
462461:04/12/11 13:21:58
おっと補足。
>>461は文字コードがShift_JISの場合だからな。
463デフォルトの名無しさん:04/12/11 13:23:20
>461
おお、ありがとうございます。文字コードで見ると
97 E1 95 B6 から
E1 95 を
探すからヒットしちゃうってことですね。
464デフォルトの名無しさん:04/12/11 13:24:37
>463
この辺の問題が_mbsstrにすれば解決するんですかね。
ちなみに>453さんの_tcsstrはどういうときに使うのでしょうか。
465477:04/12/11 13:28:26
>449>450
ありがとうございました。
46669式フリーPG ◆hND3Lufios :04/12/11 14:21:30
>>464
_tcsstrだと、_MBCSが定義されていれば_mbsstrに_UNICODEが定義されていれば
wcsstrにプリプロセッサが置換する。

http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vccore/html/_core_generic.2d.text_mappings_in_tchar..h.asp
467デフォルトの名無しさん:04/12/11 16:33:15
そういえば、Win32プログラムを作ってて
カレントディレクトリを気にすることってあまりないよね。
468デフォルトの名無しさん:04/12/11 17:24:41
>>467
カレントディレクトリをリネームとか
削除しようとすると問題になるよ
469デフォルトの名無しさん:04/12/11 17:26:11
>468
>467が言っているのはそういうことじゃないと思う。
470デフォルトの名無しさん:04/12/11 17:58:11
>>468
そもそもそんなどんなときにそんな事態が発生するというのか
471デフォルトの名無しさん:04/12/11 18:19:49
フルパスで指定しなければ、ファイルを開くのもディレクトリを操作するのも
カレントディレクトリを対象にするんじゃないか?
472デフォルトの名無しさん:04/12/11 18:22:14
>>416 >>454
自信ないけど、たぶん仕様だと思うよ。
俺も昔、同じ現象に悩まされたことがあって、結局オーナーをNULLにすることで解決したような…
473デフォルトの名無しさん:04/12/11 18:28:52
>>471
そうだよ。でもたいていフルパスで指定するよねって話だと思う。
474デフォルトの名無しさん:04/12/11 18:41:13
フルパスじゃないと基準がないしな。
一度ファイルオープンダイアログ開いた時点でカレントはそのフォルダにチェンジされちゃうしな。

ところでアプリケーションがある位置をアプリ起動時にカレントのフルパスを保存することで
とっといてるけどこれってまずい?
475デフォルトの名無しさん:04/12/11 18:58:09
Win32プログラムというかGUIプログラムってことなんだろう。きっと。
Win32だったとしてもコンソールアプリは普通カレントディレクトリを基準にするっしょ
476デフォルトの名無しさん:04/12/11 19:08:12
>>474
まずい
477デフォルトの名無しさん:04/12/11 19:19:20
>476
なんで?
478デフォルトの名無しさん:04/12/11 19:43:38
ダイアログはレジストリを見てる
カレントではない
479デフォルトの名無しさん:04/12/11 19:57:11
>>477
アプリが存在するディレクトリとカレントディレクトリは一致しないから。

簡単に試せる方法としては、アプリのショートカットファイルをつくって
そのプロパティで作業フォルダを変更してみること。
480デフォルトの名無しさん:04/12/11 19:59:40
>479
なるほど
481デフォルトの名無しさん:04/12/11 20:20:34
>>479
じゃあ、アプリケーションの位置ってどうやって特定すればいいですか?
482デフォルトの名無しさん:04/12/11 20:37:25
>>481
GetModuleFileName(NULL, filename, length)
483デフォルトの名無しさん:04/12/11 20:47:31
>482
さすが!
484481:04/12/11 20:53:39
>>482
おお!
ありがとうございます!
485デフォルトの名無しさん:04/12/11 22:39:40
>474etc
それって恥ずかしくないか?
486デフォルトの名無しさん:04/12/11 23:05:03
BOOL GetOpenFileName(LPOPENFILENAME lpofn);
みたいに、ポインタをダイアログに渡して、そのポインタ先にデータを取得するダイアログってどうやって作ってるんですか?
int DialogBox(HINSTANCE hInstance , LPCTSTR lpTemplate ,HWND hWndParent , DLGPROC lpDialogFunc);
には、ポインタを渡せるような引数は無いのですが…
487デフォルトの名無しさん:04/12/11 23:08:25
DialogBoxParam()
488デフォルトの名無しさん:04/12/11 23:15:44
>>486
487 の提案が順当な線だが、
WM_INITDIALOG でオーナーに SendMessage という手もある
489デフォルトの名無しさん:04/12/11 23:26:28
>>487
おお、こんなのがあったのか。DialogBox使ってどうやるのかずっと考えてた
ありがとうございます。

>>488
モーダルダイアログって、親ウィンドウはキー入力とか受け付けなくなるけど、SendMessageは受け付けるんですか?

自分では、GetWindowLongのGWL_USERDATAとかみたいに、関数使って無理やり保持させる方法とか考えてた…
490デフォルトの名無しさん:04/12/11 23:28:04
>>489
逆にダイアログから親ウィンドウへSendMessageするっていうこと。
491デフォルトの名無しさん:04/12/11 23:33:11
>>489
DialogBox() とか DialogBoxParam() は、内部に独自のメッセージループを持っているので、
親ウィンドウのプロシージャもずっとメッセージを受け取れる状態になってるよ。
492359:04/12/12 01:22:03
>>414
↓のコードでWMIを使ってやってみたらローカルマシンでは動作しました。

ServerName = "\\Optiplex-Gx1"
Set ServiceSet = GetObject("winmgmts:" & ServerName).ExecQuery("select * from Win32_Process")
for each Service in ServiceSet
  Call Service.GetOwner(strOwner, strDomain)
  WScript.Echo Service.Name & "," & strDomain & "\" & strOwner
Next
Set Service = Nothing
Set ServiceSet = Nothing

これをリモートマシンでも試してみます!
ありがとうございます!
493デフォルトの名無しさん:04/12/12 02:27:08
>>490
それは分かってたんですが…

>>491
メッセージ自体はOKなんですね。参考になりました。
(たぶん大丈夫だけど、メッセージは一切受け付けないつもりで実装してたんで、特定の動作で不都合が出てきてりするかも…調べてみます…)
RasHangupで回線を切断させるのに15秒くらいかかってしまうのですが、
これってもっと時間短縮できないのでしょうかねぇ。
接続元の環境はWinXPマシンにINSボード突っ込んで、ISDN回線使ってます。
接続先はYAMAHAのルータです。
495デフォルトの名無しさん:04/12/12 05:20:40
それはわざと時間掛かるようになってます。
496494:04/12/12 08:53:09
>>495
あー、そうなんですかぁ。残念。
レス、さんくすです。
497デフォルトの名無しさん:04/12/12 10:23:12
すいません初歩的な質問です。
ネットワークコマンドでnbtstatがありますよね。
このコマンドの中で動いてるAPI関数を知りたいのです。
Pingなどの中身は自力でわかったのですが
どうしてもわかりません。
498デフォルトの名無しさん:04/12/12 10:41:08
>497
>Pingなどの中身は自力でわかったのですが
すげー。よければ教えてください。
499デフォルトの名無しさん:04/12/12 11:07:46
>>498
パケットキャプチャーすれば、わかるだろ。
50069式フリーPG ◆hND3Lufios :04/12/12 11:15:01
IP Helper APIの組み合わせでできるんじゃないかな。
arpもつくれるはず。
501デフォルトの名無しさん:04/12/12 11:22:43
>499
え?パケットキャプチャーでAPI関数の名前が分かるんですか?
502デフォルトの名無しさん:04/12/12 11:29:20
>>501
分からない。
デバッガか逆アセンブラを使うとよい。
デバッガではOllyDBGがオススメ。
逆アセンブラではdiswinやdispeが主流。
どれもフリーソフトなので試してみれ。

ま、APIの名前が知りたいだけならメモ帳で開いたら分かるけど。
503デフォルトの名無しさん:04/12/12 11:30:50
最近のパケットキャプチャーは使ってる API まで表示してくれるのか、すげーな。

>>497
とりあえず、nbtstat.exe の中からそれっぽい文字列をひらってみた。

WSOCK32.dll ws2_32.DLL MSWSOCK.DLL USER32.dll ntdll.dll MSVCRT.dll ADVAPI32.dll KERNEL32.dll
HrLanConnectionNameFromGuidOrPath netman.dll system\currentcontrolset\services\netbt\parameters
\Device\NetBt_Wins_Export WSOCK32.dll OemToCharBuffA USER32.dll vsprintf NtClose sprintf atoi
isprint memmove RtlUpcaseUnicodeStringToOemString RtlInitUnicodeString RtlFreeAnsiString strncpy
RtlUnicodeStringToAnsiString RtlFreeUnicodeString NtCreateFile RtlAnsiStringToUnicodeString
RtlInitString NtWaitForSingleObject NtDeviceIoControlFile RtlExtendedLargeIntegerDivide ntdll.dll
exit _write _exit _XcptFilter __p___initenv __getmainargs _initterm __setusermatherr _adjust_fdiv
__p__commode __p__fmode __set_app_type _except_handler3 MSVCRT.dll _controlfp RegCloseKey
RegQueryValueExA RegOpenKeyExA ADVAPI32.dll WideCharToMultiByte MultiByteToWideChar
Sleep GetProcAddress LoadLibraryA FreeLibrary LocalFree LocalAlloc FormatMessageA
KERNEL32.dll CharToOemBuffA exe\nbtstat.dbg
504デフォルトの名無しさん:04/12/12 11:32:17
>>500
他のPCのOSの種類とユーザー名を
取得しようと思ってるのですが、
APIがまだ見つかりません・・・
505デフォルトの名無しさん:04/12/12 13:02:49
ネーヨ。
そんなもん。
506デフォルトの名無しさん:04/12/12 13:07:34
(´゚c_,゚` )まぁまぁ
507デフォルトの名無しさん:04/12/12 13:10:26
今gtk+で音声を再生させるプログラムを作成してるとこなんですけど、わかる人がいたら教えてください。フローチャートでできるだけわかりやすく書いてくれたらありがたいです。
508デフォルトの名無しさん:04/12/12 13:19:25
PlaySound()というAPIを一回呼ぶだけでOK
509デフォルトの名無しさん:04/12/12 13:29:39
>>507
>フローチャートでできるだけわかりやすく
殺意がわいたw
510デフォルトの名無しさん:04/12/12 13:41:34
>509
理由は?フローチャートで分かりやすくよろしく。
511デフォルトの名無しさん:04/12/12 14:29:31
まず本人がフローチャートで回答用テンプレを用意すべきだな
512デフォルトの名無しさん:04/12/12 14:51:20

┌───┴──┐
│PlaySound ( ) │
└───┬──┘
513デフォルトの名無しさん:04/12/12 14:52:33
釣られすぎだゾ
514デフォルトの名無しさん:04/12/12 15:19:26
>>497
デペンデンシーウォカーでも
515497:04/12/12 15:31:33
>>514
それは何でしょうか?

初心者なんで変な質問してしまいすいません。
ただたんにネットワーク上の他端末の端末名やワークグループ名を
取得したいのですけどnbtstatコマンド以外で
可能なのか知りたいのです。
516デフォルトの名無しさん:04/12/12 15:39:13
>>515
どんなDLLに依存(ディペンデント)しているか見るツール。
517デフォルトの名無しさん:04/12/12 15:40:43
518デフォルトの名無しさん:04/12/12 15:43:12
なんでdependsを真っ先に挙げないのか不思議なスレですね。

Windowsのリソースキットに、プロセスが呼び出しているAPIを調べるツールがあります。
519デフォルトの名無しさん:04/12/12 15:43:39
>>516
なんでそんな無駄にスレが伸びそうな教え方するんだ。
520デフォルトの名無しさん:04/12/12 16:01:14
アプリケーションが外部DLLのどんな関数に動的リンクしているか調べるツール
これでnbtstatを調べれば、nbtstatがどんなAPIを使用しているかすぐにわかる
521VC++:04/12/12 16:35:46
現在、VBでEXEを作成し、VC++でVBEXE用のDLLを作成。
そのDLLの中で画面の物理的なサイズを取得しようとしたのですが画面の解像度を変更するたびに物理サイズもそれに伴い色々変わってしまいます。
私が考えていた結果では解像度に関係なく物理サイズは同じ結果となるはず・・・。
私の使い方が悪いのでしょうか?
どなたか教えていただけないでしょうか?
 <コーディング>
    w_hdc = CreateIC("DISPLAY", NULL, NULL, NULL);
    w_ret = GetDeviceCaps(w_hdc, HORZSIZE);
522デフォルトの名無しさん:04/12/12 16:37:00
>>521
>私が考えていた結果では解像度に関係なく物理サイズは同じ結果となるはず・・・。

ならない。
以上。
523VC++:04/12/12 16:37:04
現在、VBでEXEを作成し、VC++でVBEXE用のDLLを作成。
そのDLLの中で画面の物理的なサイズを取得しようとしたのですが画面の解像度を変更するたびに物理サイズもそれに伴い色々変わってしまいます。
私が考えていた結果では解像度に関係なく物理サイズは同じ結果となるはず・・・。
私の使い方が悪いのでしょうか?
どなたか教えていただけないでしょうか?
 <コーディング>
    w_hdc = CreateIC("DISPLAY", NULL, NULL, NULL);
    w_ret = GetDeviceCaps(w_hdc, HORZSIZE);
524VC++:04/12/12 16:40:39
>>522
インチ当たりのピクセル数から割り出す方法を使うのでしょうか?
もっと簡単な方法は無いのでしょうか?
知っていたら教えていただけないでしょうか?
525デフォルトの名無しさん:04/12/12 17:11:04
>>515
> ただたんにネットワーク上の他端末の端末名やワークグループ名を
> 取得したいのですけどnbtstatコマンド以外で

何がしたいのか今ひとつ掴めないがnet view 相当でよければ
WNetEnumResource あたりとか。
526デフォルトの名無しさん:04/12/12 17:16:57
527デフォルトの名無しさん:04/12/12 17:18:27
Comctl32.dllやcommctrl.hなどの最新のものはどこからダウンロードできるのでしょうか?
Microsoftのサイトをかなり探したのですが、どれをインストールしても更新されませんでした。
528デフォルトの名無しさん:04/12/12 17:46:45
>>527
Comctl32.dllは最新のIEやそのパッチをあてればいい。
commctrl.hは>>2のPlatform SDKから
529デフォルトの名無しさん:04/12/12 17:47:40
>>528
ありがとうございます
早速いってみます
530デフォルトの名無しさん:04/12/12 17:48:05
>524
1ピクセルの物理的な寸法を得る手段がないので
あきらめるしか無いヌー

あるいは、ユーザーに「ディスプレイの正確なdpiを計測してください」と頼むか。
531デフォルトの名無しさん:04/12/12 18:08:34
>>530
アプリごとに実装してたらスーパー馬鹿野郎だな
そーゆーのはOSが持つべき機能
532デフォルトの名無しさん:04/12/12 18:32:21
>531
穏やかに行こうぜ。
533デフォルトの名無しさん:04/12/12 18:48:36
すいません、もう一つだけ質問させてください
Platform SDKをダウンロードして
Program FilesフォルダにMicrosoft SDKがフォルダが出来たのですが、
この中身のLib、includeを全て適当にコピーして使ってもいいものなのでしょうか?
何か正しい使い方がありましたら教えていただけませんか?
534デフォルトの名無しさん:04/12/12 18:58:55
>>533
コピーするのではなく、インクルードファイルのディレクトリ設定や
ライブラリファイルのディレクトリ設定を追加するほうがいい。
既存のディレクトリよりも優先されるように順番に注意すること。
535デフォルトの名無しさん:04/12/12 19:14:02
>>534
分かりました、本当にありがとうございました
536デフォルトの名無しさん:04/12/12 19:15:46
教えてください.

プログラムが実際に消費した時間を計測したいです.
今のところ GetProcessTimes() や GetThreadTimes() を使って
ますが,Win95系のバージョンでは使えないので困ってます.

よろしくお願いします.
537デフォルトの名無しさん:04/12/12 19:34:04
>536
「実際に消費」というのはもっと具体的に言うとどういうこと?
実際にかかった時間のこと?
538デフォルトの名無しさん:04/12/12 19:40:39
>> 537
実際に CPU を使用して計算した時間を知りたいです.
いわゆる elapsed time のほうではないっす.
539デフォルトの名無しさん:04/12/12 19:44:43
BCCで簡単な画像編集アプリを作りたいんですが
一般的なキャンバスの仕組みが分かりません。
灰色の背景に白地のキャンバスエリアだとして、ただ白の短形を描画して
その上から線を引くとしたら白の短形を再描画した時消えるし
どう作ればいいのでしょうか?
保存する時はクライアントエリア上に直接描かれた絵を1ピクセルずつ色を
キャプチャして保存するような感じでいいのですか?
リンク探しても、それっぽい内容が見当たりません。
どなたか教えてください。
540デフォルトの名無しさん:04/12/12 19:48:16
たんけい選択
541デフォルトの名無しさん:04/12/12 19:54:55
短形
542デフォルトの名無しさん:04/12/12 19:56:10
たんけいコピー
543デフォルトの名無しさん:04/12/12 19:56:30
短茎
544デフォルトの名無しさん:04/12/12 19:58:37
マジワロタ
545デフォルトの名無しさん:04/12/12 20:00:36
ググったら結構見つかったよ、短形(w
546デフォルトの名無しさん:04/12/12 20:00:53
(・∀・)タンケイ!
547デフォルトの名無しさん:04/12/12 20:05:37
>>539
ダブルバッファリング
548VC++:04/12/12 20:27:57
>>530
おっしゃる通りみたいでした。
dpiから画面の物理サイズを計測してみたんですが、やはり同じでした・・・。
実際のサイズを知る手段が無いみたいですね。
ありがとうございました。
549デフォルトの名無しさん:04/12/12 20:38:07
巨と豆の区別もつかないらしい
550デフォルトの名無しさん:04/12/12 20:41:40
ホントにたんけいだと思ってる奴は俺の周りにも
結構いる。仕方ないよ。
551デフォルトの名無しさん:04/12/12 20:46:15
巨乳と豆乳の区別はつくぞ。
552デフォルトの名無しさん:04/12/12 20:47:12
∩(・ω・ )∩ 短形 ばんじゃーい
553539:04/12/12 20:55:30
あれ? 四角形って短形って言わんのか(;´Д`)

>547
ググったけどよく分かりません。「ちらつきをなくす効果」ですよね?
白地に線を引く(Ellipseなどでマウスクリックで描画し続ける)としたら
白を再描画するとクリックした位置はユーザー任意なので線が消えてしまうって事なんですけど。
位置を記録したとしても、描くほど動作が不安定になりそうだし。
554デフォルトの名無しさん:04/12/12 21:00:57
市販のライブラリでも使っとけ。

で、四角形は矩形(くけい)だ。
555デフォルトの名無しさん:04/12/12 21:09:14
>553
>あれ? 四角形って短形って言わんのか(;´Д`)
どんまい。俺も最初読めなかったよ。
学校で習わないもんな。
556デフォルトの名無しさん:04/12/12 21:14:14
>>553
信じられん。コメントのしようがない
557デフォルトの名無しさん:04/12/12 21:22:32
>>553
CreateCompatibleDC
558デフォルトの名無しさん:04/12/12 21:29:56
>>553
線を追加するたびに、キャンバスのイメージを
バッファ(HBITMAP)に保存しといて、
WM_PAINTが来たときには、バッファの内容を描画する。
559539:04/12/12 21:38:18
>554 ドウモゴシンセツニ。
>555 もう短形でもいいじゃん。
>556 してるじゃん。
>557-558
ありがとうございます。
理屈は何となく理解できました。
560デフォルトの名無しさん:04/12/12 21:47:10
>>551
何となく頷いてしまった。君は鋭いね。
561297:04/12/12 22:06:20
BCCを使っています
SendInputとかの関数の中身(どうコーディングされているか)を見たいのですが、
WinAPIを使うときにインクルードしているファイルを見ても
SendInput(
IN UINT cInputs, // number of input in the array
IN LPINPUT pInputs, // array of inputs
IN int cbSize); // sizeof(INPUT)
としかなっていませんが、実際の動作はCではコーディングされてないのでしょうか?
どんな動作をしているのか見たいのですが、そのような時はどういう風に調べれば
よいのでしょうか
ヒントだけでもいいので教えてください
検索方法が悪いのか、たいした情報が出てきません・・・
562デフォルトの名無しさん:04/12/12 22:06:58
申し訳ありません、名前欄は無視してください (;´Д`)
563デフォルトの名無しさん:04/12/12 22:11:15
>>561
好きなの選べ。

・インターフェイスと動作が分かれば十分。MSDNで調べる。
・あきらめる。
・MSとNDA結んでソース見せてもらう。
・リバースエンジニアリングしてもいい国に行く。
・Wineみたいな互換ライブラリの実装から類推する。
564デフォルトの名無しさん:04/12/12 22:12:10
>>561
実際のコードは%WINDIR%\SYSTEMの中にDLLとして収められている。
(MSDNのSendInputの項を見ると「インポートライブラリ:user32.lib を使用」と書いてあるのでSendInputはUser32.dllにある)
当然Cのソースコードとして読むことは不可能。
せいぜい逆アセンブルするまでしかできない。
565563:04/12/12 22:27:47
すいません。どうかしてました。訂正します。

私の拙い知識で思いつく限りでは、以下の方法が考えられます。

・インターフェイスと動作が分かれば十分。MSDNで調べる。
・あきらめる。
・MSとNDA結んでソース見せてもらう。
・リバースエンジニアリングしてもいい国に行く。
・Wineみたいな互換ライブラリの実装から類推する。

566497:04/12/12 22:59:39
教えていただいたツールを使って
NBTSTATを解析して調査してみます。
すごく・・・便利なルーツですね。
567デフォルトの名無しさん:04/12/12 23:05:57
ここはマ板じゃないんだけどなぁ・・・ネタは程々に。
568デフォルトの名無しさん:04/12/12 23:11:32
>566
ルーツ?
569デフォルトの名無しさん:04/12/12 23:34:22
570デフォルトの名無しさん:04/12/12 23:45:19
くんたきんて
571デフォルトの名無しさん:04/12/12 23:53:14
572デフォルトの名無しさん:04/12/12 23:58:38
>>497
なんか出遅れちゃったけど。。。
netstat を調べたいなら、同様のフリーウェアをあたるのが一番。
ttp://www.sysinternals.com/ntw2k/source/tcpview.shtml
ソースつき。
573デフォルトの名無しさん:04/12/13 00:06:05
netstat ≠ nbtstat
574497:04/12/13 00:18:49
みなさん、いろいろすいませんね。

自分の組織にあったネットワーク管理ツールを作ってまして
VC言語の作り方忘れたので、VB6でAPI使ってます。
マルチプロセスで動かすのでちゃんと動くか怖いですけどね。
575デフォルトの名無しさん:04/12/13 00:34:40
576デフォルトの名無しさん:04/12/13 00:38:45
>>574
作るまでもないだろ
577デフォルトの名無しさん:04/12/13 00:57:15
C++板で質問しましたら誘導されたのでここで質問させてください。
http://pc5.2ch.net/test/read.cgi/tech/1101473340/359-360

内容は
>wmpの視覚エフェクトを自分で作っているのですが、
>現在再生中のファイル名と
>再生した経過時間を取得するにはどうすればいいでしょうか。。
>
>板違いだと思うのですが、どこで聞いてよいか分からなくて、、、
>どなたかご教授ください。
578497:04/12/13 01:00:09
うちの組織にあったDBで管理できるものもないし、
自分の勉強の為ででもあります。
579デフォルトの名無しさん:04/12/13 01:48:10
自分が食ってるメモリを取得する方法はあるかね
580デフォルトの名無しさん:04/12/13 02:26:30
>>577
DirectShow使ってる?もしそうなら↓へ。
DirectShowと戦うスレ
http://pc5.2ch.net/test/read.cgi/tech/1026666092/
581デフォルトの名無しさん:04/12/13 04:20:42
>>563-564
レスありがとうございます
良くわかりました
Wineっていうのを調べてみます
ありがとうございました
582デフォルトの名無しさん:04/12/13 07:12:02
ShellExecuteとCreateProcessを使って
他のプログラムを起動しているのですが、
メモ帳が「notepad」で開けるのですがこれは何故でしょうか?
IEをプログラムの名前だけで開きたいのですがどうすればいいでしょうか?
583デフォルトの名無しさん:04/12/13 07:13:53
>582
パスが通ってるから。
584デフォルトの名無しさん:04/12/13 07:36:03
>>583
それはどこかに定義してあるのでしょうか?
また、IEの場合はなんといれればよいのでしょうか?
585デフォルトの名無しさん:04/12/13 08:35:07
>>579
GlobalMemoryStatus(Ex)
586デフォルトの名無しさん:04/12/13 08:41:59
>>584
iexplore
587デフォルトの名無しさん:04/12/13 11:41:38
EnumWindowsをコールして、コールバック関数内では
GetWindowThreadProcessIdを使ってプロセスIDを求めたいんだけど、
なぜかGetWindowThreadProcessIdで異常終了してしまう

OSはWindows2000
心当たりある人いませんか?
588デフォルトの名無しさん:04/12/13 11:48:10
_beginthread(あるいは_beginthreadex)が返すハンドルに対して
SuspendThreadやResumeThreadを使うのはOKなんですか?
一応期待した挙動はしているみたいなんですが、
MSDNにはそれらしい記述が見つからないので教えてプリーズ。
589デフォルトの名無しさん:04/12/13 11:52:01
>>588
ソース読んでみたら?
590デフォルトの名無しさん:04/12/13 12:12:09
>>588
ex 付きの方は OK。
591デフォルトの名無しさん:04/12/13 12:17:13
C ランタイム ライブラリのデータ構造体へアクセス中のスレッドがあって、
それの完了を待っている複数のスレッドが存在する場合に SuspendThread を使うと、
デッドロック状態になります。
592デフォルトの名無しさん:04/12/13 13:30:34
>>591
_beginthreadexの方でも?
解決する方法はありますか?
C ランタイム ライブラリを呼ばないとか呼ぶときは排他制御するとかの泥臭い方法しかないですか?
593デフォルトの名無しさん:04/12/13 13:46:28
>>592
ISBN4-7561-1404-0
198ページ
594デフォルトの名無しさん:04/12/13 13:51:15
>>593
高いよ。
595デフォルトの名無しさん:04/12/13 13:54:02
>>592
スレッド管理する場合は、
もっと大きめの単位で待ち合わせとかするのが普通のような気が。
先方が何してるんだかわからない状況で SuspendThread は乱暴・・・
というかそんなパターンあまり便う場面なくない?
596デフォルトの名無しさん:04/12/13 13:54:21
そもそも SuspendThread() 自体が、よほどのことがない限り使っては
いけない API です。使いこなすのは難しい。

597デフォルトの名無しさん:04/12/13 14:05:56
>>>596
確かに。自分自身をSuspendThreadするってケースでしか使わないなぁ・・・
598デフォルトの名無しさん:04/12/13 15:00:40
>>587
ソース見せて。
CALLBACK キーワードがついてないとか?
599デフォルトの名無しさん:04/12/13 20:58:08
VB6.0で作った画面からVC6.0で作ったDLLを呼び出す際、
引数にVBの関数のポインタを渡し、DLLからそれを
コールするような処理を書いてみました。

問題なくコールできたのですが、DLL内でスレッドを生成し、
そのスレッド内からコールすると、「ハンドルできない例外」が
発生してしまいます。このような呼び出し方はやっては
いけないことなのでしょうか。
600デフォルトの名無しさん:04/12/13 20:58:50
>599
ちなみにデバッグで起動すると問題ないのですが、
VBでexeを作って起動すると失敗します。
601デフォルトの名無しさん:04/12/13 21:00:50
>599-600
すいません。勢い余ってここに投稿してしまいましたが、
よく考えたらスレ違いでした。>599-600は取り下げ
させてください。VBスレの方で質問しなおします。
602デフォルトの名無しさん:04/12/13 21:05:34
DLLで生成したスレッドから何をコールしたんだろう(´Д`;)
VBスレのほうではちゃんと質問内容を明確にしてね
603デフォルトの名無しさん:04/12/13 21:06:44
VBの関数かorz
60469式フリーPG ◆hND3Lufios :04/12/13 21:14:42
VB6はSTAなんだな。
605デフォルトの名無しさん:04/12/14 01:30:41
>>586
それでやったんですができませんでした。
ファイル名を指定して実行するウィンドウではそれで起動できるのですが、
ShellExecuteやCreateProcessだと起動しませんでした。
606デフォルトの名無しさん:04/12/14 02:24:44
CLSIDを"CLSID_InternetExplorer"に指定して
CoCreateInstance()を呼べばいいと思う。
607デフォルトの名無しさん:04/12/14 03:20:26
QueryPerformanceCounterについて教えてください。

Googleで検索すると、さも当たり前に使うAPIのように紹介されていますが、
MSDNライブラリの注意書にあるとおり、私のPCではサポートされていませんでした。

これが普通に使える方、どんなハードウェアを使っているのか教えてください。
608デフォルトの名無しさん:04/12/14 03:25:40
インストールされているハードウェアが高分解能パフォーマンスカウンタをサポートしている場合は、 TRUEを返します。それ以外の場合は、 FALSEを返します。拡張エラー情報を取得するには、 GetLastError関数を使います。
609デフォルトの名無しさん:04/12/14 03:42:14
>>607
RDTSC命令が使えるCPU(Pentium以降)なら大丈夫らしい
ttp://yosirin9.hp.infoseek.co.jp/tips/no1/tips_no1.htm
610デフォルトの名無しさん:04/12/14 08:48:52
サービスのことで質問があります。
メモリマップドファイルでユーザー権限で動いているEXEと通信しようとしてるのですが、
MapOfViewの段階で失敗します。
両方とも通常のアプリなら問題は発生しません。
環境はW2kPro+VS.NET2003、サービスはATLウィザードで作ったものほぼそのままで、
メモリマップドファイルを作成するロジックのみを追加しています。
よろしくお願いします。
611デフォルトの名無しさん:04/12/14 09:13:31
>>607
QueryPerformanceCounterがサポートされていない>>607
ハードウェアも教えてほしい。
612デフォルトの名無しさん:04/12/14 10:39:05
>>611
3台試しました

1台目
CPU : AthlonMP (Palominoコア)
マザーボード: TYAN TigerMP (BIOS 1.05)
HALはACPIマルチプロセッサです

2台目
CPU : Pentium3 (Coppoermineコア)
マザーボード: 不明 hp Visualize X-CLASS
HALはACPIマルチプロセッサです

3台目
CPU : Pentium4 (Northwoodコア)
マザーボード: Intel D845GERG2-LK (BIOS P12 (RG84510A.86A.0022.P12.0211151511))
HALはACPIユニプロセッサです

RDTSC命令を直接叩いてみます。
デュアルのマシンはプロセッサのアフィニティを設定しないとヤバそうですね。
613デフォルトの名無しさん:04/12/14 10:42:25
彼は寝たっぽい
614デフォルトの名無しさん:04/12/14 15:57:28
>>612
コーディングが間違ってるって事はない?
615デフォルトの名無しさん:04/12/14 20:55:42
Windowを最初から最大化した状態で起動したいのですが、
SW_SHOWMAXIMIZEDを使わずにやる方法は無いでしょうか

SW_SHOWMAXIMIZEDだと、初期化前に表示しちゃうもんで…
SW_HIDEMAXIMIZEDなんてのがあれば良かったんですが
616デフォルトの名無しさん:04/12/14 21:26:03
>>615
初期化してからShowWindowすればいいじゃない
617デフォルトの名無しさん:04/12/14 21:45:30
>>616
それが、初期化の際、最大化した状態でのWindowの情報が色々欲しかったりで。
別に初期化前に見せてしまっても良いのですが、どうにも見栄えが悪いんですよね。
618デフォルトの名無しさん:04/12/14 21:55:49
>>617
サイズが必要な初期化は WM_SIZE でやればいいのでは?
(WM_SIZE は cx = cy = 0 で呼ばれることあるから注意)
619615=617:04/12/14 22:29:40
すいません、次のようになっちゃうのがそもそもの悩みでして

初期化は絶対しなければなので初期化する
>初期化後に最大化
>WM_SIZEでまたサイズ変更処理(初期化の処理と一部かぶる)をしなければ

そんなわけで、上手く最大化して起動できれば二度やらずに
済むと思ったのですが、SW_SHOWMAXIMIZED以外には無さそうですね。

>>618
二度やるのが多少気持ちが悪い程度なので、それで行きたいと思います。
cx = cy = 0の件は初耳で全く考慮してなかったので、気をつけます。
616さん、618さん、レスありがとうございました。
620デフォルトの名無しさん:04/12/14 22:51:39
>>619
ValidateRectしてからSHOW_MAXMIZEDで誤魔化せない?
621デフォルトの名無しさん:04/12/14 22:54:02
フルパスをあるディレクトリを基準とする相対パスに変換するAPI
逆に基準ディレクトリと相対パスからフルパスを生成するAPIはないでしょうか。
例えば、c:\aaa\bbb\ccc.txt(フルパス) と c:\aaa\ddd\(基準) から ..\bbb\ccc.txt(相対パス)
とその逆の操作です。
622デフォルトの名無しさん:04/12/14 23:02:44
_beginthreadで作成したスレッドの中で、LIBCMT.LIBやMSVCRT.LIBを
リンクせずにCのランタイムライブラリを呼び出すのはNGでしょうか。
623デフォルトの名無しさん:04/12/14 23:13:13
>>620
レスありがとうございます
試して、さらにすぐ隠したりしてみたのですが、やはり表示されちゃうみたいです。
624デフォルトの名無しさん:04/12/14 23:32:24
>>622
> LIBCMT.LIBやMSVCRT.LIBを
> リンクせずにCのランタイムライブラリを呼び出すのは

どうやってやるんだ?
625デフォルトの名無しさん:04/12/14 23:32:45
>>621
Shell APIでよければ
PathRelativePathTo()
PathCanonicalize()
とか?
他にもPath〜()調べてごらん
626デフォルトの名無しさん:04/12/14 23:37:59
>624
え?普通に呼べましたよ。でもアウトプットウィンドウを見たら、
MSVCRT.LIBはロードされていました。
627デフォルトの名無しさん:04/12/14 23:44:29
>>626
リンクせずにって書いたんじゃないのかよ。
で、結局リンクされてたら世話ないわ。
628デフォルトの名無しさん:04/12/15 00:15:50
>>623
WS_MAXIMIZED
629デフォルトの名無しさん:04/12/15 00:23:49
>627
すいません。「リンクせずに」と書いたのは、
プロジェクト→設定→リンク→オブジェクト/ライブラリモジュールに
明示的に指定せずに、ということでした。
「デフォルトライブラリを全て無視」のチェックは付けて
なかったのでリンクされたんですかね。
630デフォルトの名無しさん:04/12/15 00:24:37
>>627
普通にLIBC.LIBをリンクすりゃできるだろうが。
631デフォルトの名無しさん:04/12/15 00:34:16
>>628
否定的な事ばかり言ってすいません。
しかしこのWS_MAXIMIZEがどうにも効かなくて困ったのがそもそもの始まりでした。

検索したところ、MDIの子ウィンドウにのみ意味があるという記述があって
早々に諦めてしまったのですが、なにか私が大ポカをやらかしている気もします。

WS_MAXIMIZEで普通に最大化起動できるよ?みたいなレスを頂ければ幸いです。
632デフォルトの名無しさん:04/12/15 00:43:09
>>631
その後表示するときShowWindowに渡してるフラグは?
633デフォルトの名無しさん:04/12/15 00:43:15
LIBCMT.LIBリンクしないと_beginthreadは使えないんではなかろか
634デフォルトの名無しさん:04/12/15 00:49:39
>>632
なるほどー!そういう事でしたか。
WS_MAXIMIZEの時は、起動時の引数をそのまま渡していました。

WS_MAXIMIZEで作成すれば、ShowWindowの前にちゃんと、最大化されたWindowの情報拾えますね。
お恥ずかしい限りです。しかしすっかり諦めていた所なので本当に嬉しいです。
ありがとうございました。
635621:04/12/15 01:13:15
>>625
ありがとう。それでいけそうdeath。
636607:04/12/15 01:43:46
CPUのパフォーマンスカウンタの件、アドバイスありがとうございます。

諦めて消したコードを書き直してみたら、値を取得することができました。
いったい何が原因だったのか、わからずです。

QueryPerformanceCounterを呼ぶと1000クロックくらい経過してしまうので、
RDTSC命令を直接呼ぶことにしました。これだとオーバーヘッドは60クロックくらいで済みました。

お騒がせしてすみませんでした。
637デフォルトの名無しさん:04/12/15 07:23:54
>633
すまん。出直してくる。
638デフォルトの名無しさん:04/12/15 10:51:33
 VC++でコンソールを扱うクラスを作ろうとしているのですが,
コンソールのハンドラルーチンがうまくクラス化できなくて悩んでいます.
 SetConsoleCtrlHandlerでハンドラを設定するのですが,
スタティックな関数しか指定できません.
 そこで,ウィンドウやスレッドのサブクラス化でやられるようにコンソールクラスの
thisを隠しておいてジャンプさせようとしたのですが,
SetConsoleHandlerの引数は関数のアドレスとハンドラを追加するか削除するかのブール値の二つ,
HandlerRoutineに渡されるのは信号の種類を表すDWORD値一つだけで,
このthisを隠しておく場所が見当たらないのです.
 良い方法がありましたらお願いします.
639デフォルトの名無しさん:04/12/15 11:12:51
>>638
サンクとか。
ATLのCWindowImplとか参考になるかも。
640デフォルトの名無しさん:04/12/15 11:24:14
DATETIMEPICKERコントロールからのデータの取得は
GetWindowTextで取得できたのですが、
データの設定がSetWindowTextで出来ません
何か固定のデータ形式か専用の別の設定する関数があるのでしょうか?
テキストは"2004/12/15"という感じで設定しようとしたのですが、ダメでした
641デフォルトの名無しさん:04/12/15 11:31:44
>>638
DWORD 値から、インスタンスのポインタとメンバ関数ポインタの組 or boost::function へのmapを
持てばいいんじゃない?
642638:04/12/15 11:49:36
>>639
すばやいご返事ありがとうございます.
ちょっと調べてみたところ,
サンクはWOW系の16bitのアプリケーションを32bit環境で動かすためのAPIということで
今回の,自分の目的にあうものではないようです.
ATLは結構複雑なもののようですが,かなり参考になりそうなので見てみようと思います.
ザッと見た感じだと,thisをグローバルなマップに登録しておいてそこから引いてくるようなイメージでしょうか.

プログラムは殆ど初心者でして,
コンソールで動くゲーム(NetHackみたいなキャラクタベース)を作ろうとしているのですが,
それだけの事でも大変苦労してしまいます.

勉強の糸口を頂き,ありがとうございました.
643638:04/12/15 12:02:39
>>641
DWORD値とメンバ関数へのポインタのマップもスタティックに持っておいて,
ハンドラルーチンの中からそれを呼ぶということですね.
これから書いてみますが,うまく行きそうです.

皆さん,ありがとうございました.
644デフォルトの名無しさん:04/12/15 13:42:36
>>642
そういう意味のサンクではなかったのだが。
指定したthisでメンバ関数を呼ぶような関数を動的に作成するという感じ。
645デフォルトの名無しさん:04/12/15 15:15:54
やりたいこと:特定のアプリが起動中か確認したい
環境:2003Server + MetaFrame VB.NET

他社のアプリケーションがサーバ上で起動中か確認したいんですが、 MetaFrameを使って
サーバのプロセスを取得すればいいと考えました。

1.Processクラスを使用する
 →admin権限を持ったユーザしか取得が出来ない。MetaFrameを使用するユーザにAdmin権限は
   持たせられない為×

2..psapi.dllでEnumProcessesを使用する
  →VB6からの移行はOK。しかしカレントユーザのプロセスしか取得できない。
    すべてのプロセスを取得しないと確認の意味がない。

3.Kernel.dllでCreateToolhelp32Snapshotを使用する
  →VB6での確認は出来たが、.NETへの移行がうまく出来ない。
    スナップショットの取得はできるが、次のProcess32Firstで必ず0が帰ってきてエラー。

3が実現しやすいのかと思っています。
サンプルは http://vbvbvb.com/jp/gtips/1101/gCreateToolhelp32SnapshotTh32csSnapprocess.html
を利用しています。
646645:04/12/15 15:20:30
構造体は
Public Structure PROCESSENTRY32
Public dwSize As Integer
Public cntUsage As Integer
Public th32ProcessID As Integer
Public th32DefaultHeapID As Integer
Public th32ModuleID As Integer
Public cntThreads As Integer
Public th32ParentProcessID As Integer
Public pcPriClassBase As Integer
Public dwFlags As Integer
Public szExeFile() As Byte
End Structure

lngProcessSnapHandle = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)

ReDim udtProcessEntry32.szExeFile(259)
Dim i As Integer
For i = 0 To 259
udtProcessEntry32.szExeFile(i) = 0
Next
udtProcessEntry32.dwSize = Len(udtProcessEntry32)

If Process32First(lngProcessSnapHandle, _
udtProcessEntry32) <> 0 Then

上のProcess32Firstで必ず0が帰ってきます。
長々と申し訳ありませんが、以上で状況はわかって頂けましたでしょうか?
助言をお願いします。
647デフォルトの名無しさん:04/12/15 15:47:19
>>646
VB.NETの問題のような気がするが。マーシャリングの基本とか。

・PROCESSENTRY32のszExeFileはStringで宣言。
 MarshalAsAttribute属性をつけて、UnmanagedType.ByValTStrとSizeConst=260を指定。

・dwSizeは、Marshal.SizeOf(udtProcessEntry32)で取得した値を設定する。

C#で同様にやった分には問題なかった。
648645:04/12/15 16:43:39
647様、ありがとうございます。出来ました!!
出来たものの全く意味がわかりませんので、勉強してみます。
本当にありがとうございました。
649デフォルトの名無しさん:04/12/15 17:59:48
誰か>>640もお願いします
ネット上でかなり調べましたが分かりませんでした・・・
650デフォルトの名無しさん:04/12/15 18:08:30
DTM_SETSYSTEMTIME送れば?
651デフォルトの名無しさん:04/12/15 20:08:37
ものすごく巨大な(1000万行×10フィールド)くらいの
CSVファイルを特定のフィールドをキーにソートしろ
と言われたら、普通どんな感じでやりますか?
652デフォルトの名無しさん:04/12/15 20:13:01
>>651
俺なら数万行程度のブロックに分けてそれぞれをソートしてからマージソートだな。
653デフォルトの名無しさん:04/12/15 20:16:52
特定のフィールドと行数のペアを作ってソート。
65469式フリーPG ◆hND3Lufios :04/12/15 20:18:43
OracleかSQL鯖に食わせてSQL一発かけてCSV出力
655デフォルトの名無しさん:04/12/15 21:36:00
>653
アホ
656デフォルトの名無しさん:04/12/15 21:40:47
>>655
にんにく? いまバカの煮込みつくってます
657デフォルトの名無しさん:04/12/15 21:44:47
どーゆー意味?
658デフォルトの名無しさん:04/12/15 21:55:52
>>651
アルゴリズムを選びに行く前に、元データの傾向と対策をまず調べる
659デフォルトの名無しさん:04/12/15 21:59:27
>652
やっぱそれですかね。何かいいサンプルとか転がってないですか?
660デフォルトの名無しさん:04/12/15 22:55:34
Windowsのインデックスサービスの機能を呼び出すAPIって
ありますか?
661デフォルトの名無しさん:04/12/15 23:19:19
662デフォルトの名無しさん:04/12/15 23:26:16
>>657
そこもと蘭学の心得はおありかの
663デフォルトの名無しさん:04/12/15 23:47:35
CreateEventってどういうときに使うの?
664デフォルトの名無しさん:04/12/15 23:56:55
>>663
マルチスッドレのコードかいてて、スッドレ間の同期とるのに使う
665デフォルトの名無しさん:04/12/16 00:07:00
>>659
珠玉のプログラミング―本質を見抜いたアルゴリズムとデータ構造
ttp://www.amazon.co.jp/exec/obidos/ASIN/4894712369/250-8489478-2398654
666デフォルトの名無しさん:04/12/16 00:12:32
>665
おー、面白そうだな、これ。
667デフォルトの名無しさん:04/12/16 00:13:04
>664
どうもです。ボタンクリックとかメニュー選択とかのイベントとは
別物なんですね。
668デフォルトの名無しさん:04/12/16 00:20:58
win2000にて。
GetAdaptersInfoを呼び出し取得したIP_ADAPTER_INFOの
AdapterNameに対応したFriendlyNameを知るにはどうしたらよいのでしょうか?

XPならGetAdaptersAddressesのIP_ADAPTER_ADDRESSESで一撃なのですが、
2000だとiphlpapi.dllにGetAdaptersAddressesが入っていないので・・・

ご存知のかたがいらっしゃいましたら、教えてください。
669デフォルトの名無しさん:04/12/16 01:45:27
>>651
std::list<std::vector<std::string> > に格納して std::sort() が楽ちん。
670669:04/12/16 01:48:24
std::sort()じゃなくて、listのメンバのsort() だった。 orz
671デフォルトの名無しさん:04/12/16 03:01:42
>>670
潤沢なメモリをお持ちのようで。
#1億個のstring…
672デフォルトの名無しさん:04/12/16 07:17:14
>671
>669みたいな何も考えてない奴ってかえって
ほほえましいよなw
673デフォルトの名無しさん:04/12/16 07:27:17
しかもstd::listのソートって激遅じゃん
674デフォルトの名無しさん:04/12/16 11:40:35
VB6.0、Win2000で動かしているプログラムを
VB4.0、Win95に置き換えないといけなくなってしまいました。
VB4.0、Win95での開発は経験がなく、
APIの本やネットで調べてみたのですが
サブネットマスクとデフォルトゲートウェイとワークグループ名を取得する方法がわかりません。
ご存知の方がいらっしゃれば教えていただけませんでしょうか?
675デフォルトの名無しさん:04/12/16 12:33:17
ある端末上で動作するWinサービス(SYSTEM権限で動作)で
ワークグループ上のサーバの共有ディレクトリから端末の
ローカルディレクトリにファイルをコピーしたいんだけど、
権限の問題で躓いています。ドメインは組んでいません。

サーバのディレクトリに対してアクセス権限があるユーザのIDとパスワードは
あるのですが、端末のシステムにそのユーザを作成しないでやりたいです。
ユーザ/パスワードを暗号化してレジストリに置いて使うのはOKです。

【やってみたこと】
1.SYSTEM権限のままコピーしようとすると権限エラーで失敗します。
  →サーバ側でNULLセッションとかいうのを許可にすればOK?

2.LogonUser→Impersonateだと、サーバの共有ディレクトリに
  アクセス権限のあるローカルユーザを作らないといけない。
  ユーザを作らないとLOGON32_LOGON_NETWORKでしか成功せず、コピー不可でした。
  ※LogonUserのネットワーク版みたいなの無いんでしょうか?

以上です。

動作予定環境はNT/2K/XPです。
宜しくお願いします。
676デフォルトの名無しさん:04/12/16 12:53:37
>>671->>672
貧乏人らが必死だな
677デフォルトの名無しさん:04/12/16 13:12:29
>>674
VB4で開発しないといけない理由は?
Win95でもVB6は動いたと思うが。
#メーカー保証のないOSでの開発はできないと突っぱねるのが正解。
678674:04/12/16 13:21:17
>677
ユーザーに納入しているマシンのうち、
現在その環境で動いているマシンがありまして、
新マシン(Win2000 VB6.0)で新たに追加したプログラムと
同じものを旧マシン(WIn95 VB4.0)でも追加しないといけなくなったのです。

>#メーカー保証のないOSでの開発はできないと突っぱねるのが正解。
個人的にはそうしたいくらいです・・・。
679デフォルトの名無しさん:04/12/16 21:12:47
>>678
その場合、旧マシンのリプレイスを薦めるのが営業的にもいいかと。
つーか、VB6で開発したものをWin95で動かせばいいだけじゃないの?
#なんでVB4を使いたいのかが判らん。
680デフォルトの名無しさん:04/12/16 22:21:21
無線LANを使用するアプリを作っているのですが、
ワイアレス接続の構成をアプリ側で制御することってできないんでしょうか?
環境はWindowsXPで、かつadmin権限で動かせます。

やりたいことは
「随時SSIDを検索して、条件にあったものと接続処理」
なのです。
Windows標準のワイヤレス構成が切れるし、
メルコのクライアントマネージャみたいなのもあるからできると思うのですが、
MSDNを漁ってもいまいち見つけ切れませんでした。

日本語、英語での情報とかポインタとか知ってましたら是非教えていただけないでしょうか。
よろしくお願いします。
681デフォルトの名無しさん:04/12/16 23:05:05
>677
そういうことはお前には関係ないはずなんだが。
682デフォルトの名無しさん:04/12/16 23:05:47
エディットボックス(エディットコントロール?)に
たくさん文字列を入れたいのですがあんまりたくさんの文字列を入れると
表示されなくなってしまいます。
もっとたくさんの文字列を入れるにはどうしたらよいのでしょうか?
683デフォルトの名無しさん:04/12/16 23:12:39
>>682
98?
684デフォルトの名無しさん:04/12/16 23:13:23
>>682
エディットボックスをあきらめてリッチテキストとかにする。
685デフォルトの名無しさん:04/12/16 23:29:11
>>684
ありがとうございます。
やってみます。
686デフォルトの名無しさん:04/12/16 23:30:28
たびたびすみません。

エディットボックスに値を入れて
Enterキーを押すと値が反映されるようにしたいのですが
Enterキーが降ってきません。
どうしたら取得できるのでしょうか?
687デフォルトの名無しさん:04/12/16 23:31:15
>686
KeyPressに来ないの?
688デフォルトの名無しさん:04/12/16 23:36:50
>>687
エディットボックスにフォーカスがあるときも
普通はくるものなのでしょうか?(私の組み方がまずいのかもしれないです。)
689デフォルトの名無しさん:04/12/16 23:40:32
ちなみにメッセージはエディットボックスの
親ウィンドウで捕まえようとしています。
キルフォーカスなどのメッセージは取得できます。
690デフォルトの名無しさん:04/12/16 23:50:58
>>689
Enter キーを押すことで、IDOK のボタンが押されたという
メッセージが来ているのかも。
691デフォルトの名無しさん:04/12/16 23:53:28
>688
フォームのデフォルトボタンの方に行っちゃってるとか?
692デフォルトの名無しさん:04/12/17 00:24:20
>>676
10Mレコードで10フィールドか。
1レコード512バイトとしても、5GB。

まぁメモリが足りたとしても、CPUが追いつかないでしょ。
693デフォルトの名無しさん:04/12/17 00:28:42
>692
なんで?
694デフォルトの名無しさん:04/12/17 03:05:14
ソートのアルゴリズムのオーダーの問題

クイックソートなんて使った日にゃ、O(n^2)で死ぬよ。
1kレコードならO(n^2)でも1Mの計算量で済むが、
10Mレコードだと 100Tの計算量になっちゃうんだよ。
695デフォルトの名無しさん:04/12/17 03:23:26
クイックソートは事実上n・log(n)じゃないの?
696デフォルトの名無しさん:04/12/17 04:25:29
>>692
つまりWin「32」APIのスレである以上オンメモリのソートなんてありえない解決策ってことか
697デフォルトの名無しさん:04/12/17 07:11:32
あのー、分割してマージソートって結論はとっくに
出てるんですが・・・

メモリなんかでやるわけねーだろ。
698デフォルトの名無しさん:04/12/17 10:39:19
ちょっと質問
ホイールの入力状態を取得するAPIってやっぱり無いんでしょうか?
GetAsyncKeyStateのような使い方で簡単に取得出来ないかなと思いまして。
メッセージで取得するしか方法は無いのでしょうか?
宜しくお願いします。
699デフォルトの名無しさん:04/12/17 10:46:15
              ,,,,,,,,,,,,,,,,,,,,
             /": : : : : : : : \
           /-─-,,,_: : : : : : : : :\
          /     '''-,,,: : : : : : : :i
          /、      /: : : : : : : : i     ________
         r-、 ,,,,,,,,,,、 /: : : : : : : : : :i    /
         L_, ,   、 \: : : : : : : : :i   / メッセージで取得したら
         /●) (●>   |: :__,=-、: / <   負けかなと思ってる  
        l イ  '-     |:/ tbノノ    \    
        l ,`-=-'\     `l ι';/      \  ニート(24・男性)
        ヽトェ-ェェ-:)     -r'          ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
         ヾ=-'     / /  
     ____ヽ::::...   / ::::|
  / ̄ ::::::::::::::l `──''''   :::|
700デフォルトの名無しさん:04/12/17 12:01:50
マウスホイールの仕様を考えればおのずと分かるような気がするが・・・
701デフォルトの名無しさん:04/12/17 12:09:12
仕様なんてシラネーヨ
702VC++:04/12/17 14:03:12
分からないので教えていただきたいのですが・・・(^^;
VBの実行ファイルからVC++で作成したDLLの関数を実行すると例外エラーで落ちてしまいます。
落ちる箇所が決まっており、DLLから文字列をVBの実行ファイルへ送った直後に必ず発生します。
VBはフォームのロードイベントで関数をCALLしています。
【グローバル変数の宣言↓】
LPSTRg_datasendp = NULL;// VBデータ引継ぎ用バッファポインタ
【グローバルメモリ領域の確保↓】
g_hMem = GlobalAlloc(GMEM_FIXED | GMEM_ZEROINIT, sizeof(SEI_INF_TBL)+256);
if (g_hMem == NULL)
{// メモリー不足
MessageBox(g_hWnd, ERR_MALLOC, MSG_BOX_CAP2, MB_OK | MB_ICONERROR);
return-1;
}
g_datasendp = (char*)g_hMem;
【VBへ渡す文字列をセットする関数↓】
FARM_API LPSTR __stdcall GetSeiData(SHORT i_type)
{
 switch(i_type)
 {
  case TYPE_SEINAME:    // 名設定
   strcpy(g_datasendp, g_sei_inf_tblp->sei_name);
   break;
        ・
}
 return g_datasendp;
}

DLLの宣言が間違っているのでしょうか?
分かる方、是非教えていただけないでしょうか?
よろしくお願いします。
703デフォルトの名無しさん:04/12/17 14:14:42
>>702
もしかしてVB側で戻り値の型がStringになっている?
704VC++:04/12/17 14:18:05
>>703
はい。返却値はString宣言しています。
Public Declare Function GetSeiData Lib "Farm.dll" ( _
ByVal i_type As Integer) As String ' 生産者情報取得処理
705VC++:04/12/17 14:26:37
VBのデバッカでは動作してしまうのです・・・。
(DLL・EXE共最新です)
70669式フリーPG ◆hND3Lufios :04/12/17 14:41:15
BSTR
707デフォルトの名無しさん:04/12/17 14:42:30
>>704
確かこうすればいいはず。g_datasendpは要らなくなる。
FARM_API BSTR __stdcall GetSeiData(SHORT i_type)
{
  char *p;
  switch(i_type)
  {
  case TYPE_SEINAME:    // 名設定
    p = g_sei_inf_tblp->sei_name;
   ・
  }
  return SysAllocStringByteLen(p, strlen(p));
}
70869式フリーPG ◆hND3Lufios :04/12/17 14:48:33
VBの文字列は長さ(32bit)と文字列の格納されたUnicodeの配列で、
BSTRはunicode配列のアドレス。

VBのデバッガで動作するのは、デバッガが終端のNULLを見ているか、
たまたまと思われ。
709VC++:04/12/17 14:50:13
>>707
回答ありがとうございます!!
早速試してみます!!

どうもでした。
結果はまた書き込みます。
710デフォルトの名無しさん:04/12/17 15:16:34
>>708
VBの文字列 == BSTR
文字列の長さを持っているのがBSTRの条件だよ。
711VC++:04/12/17 15:17:52
>>707-708
本当にありがとうございました!!
動きました!!
助かりました!!

これで作業を進める事が出来ます。
若輩者ではありますが、今後もよろしくお願いします。
712デフォルトの名無しさん:04/12/17 15:18:34
>>710
うん。わかってる。んなもんで、>>706を書いた。
(そんときは時間がなかったので、一言だけ書いたけど)
713デフォルトの名無しさん:04/12/17 15:21:15
BSTRなのにstrlenでいいのけ?
714デフォルトの名無しさん:04/12/17 15:22:42
715デフォルトの名無しさん:04/12/17 15:42:39
return A2BSTR(p);
でもよかったとおもうべな。
716デフォルトの名無しさん:04/12/17 16:41:49
>>713
VBはDLL関数に文字列を渡したり返したりするときに勝手にShift JISとUnicode間の変換をしてくれるから平気。
717デフォルトの名無しさん:04/12/17 16:53:52
>>713
だめだよね。
全角文字ばかりだからたまたま動いている、と想像する。
718デフォルトの名無しさん:04/12/17 16:58:37
(^( さすがVB )^)
719デフォルトの名無しさん:04/12/17 18:24:20
すみませんDLLにバージョン情報付けたいのですが
DLLリソースつかえませんよね?
どうすれば・・・
おねがいします
720デフォルトの名無しさん:04/12/17 18:25:23
>>719
普通にリソースつけられるが‥‥
721719:04/12/17 18:30:22
ごめん・ほうとうにごめん
ちょっと子一時間説教されてきます
なぜかリソース使えないつもりでした
722デフォルトの名無しさん:04/12/17 18:35:50
APIの質問じゃないと思うんですけど
コモンダイアログのGetOpenFileNameを呼び出すと
画面の左上にウインドウが表示されてしまいます・・
これを画面中央に表示させたいのですが
OPENFILENAMEに何か値を入れると直るのでしょうか?

環境はVC7でMFCは使ってません


723デフォルトの名無しさん:04/12/17 18:52:17
hwndOwnerにハンドルをセットするとそのウィンドウの左上あたりに表示されるみたい
724722:04/12/17 19:05:45
>>723
できました!
ありがとう、感謝
725デフォルトの名無しさん:04/12/17 20:44:47
エディットコントロールのフォントを変えたのですが、カーソルの大きさがそのままで変わりません。
デフォルトの文字サイズより小さくしたのですが、エディットコントロールの高さも変わりません。
高さが変わらないのはカーソルのせいではないかと思うんですけど・・・。
解決方法をお願いします。

エディットコントロールのフォント変更は、WM_CTLCOLOREDITが来たときに
wParamからhdcを取得して、あらかじめ用意しておいてフォントをSelectObjectで選択しています。
726デフォルトの名無しさん:04/12/17 20:56:09
サブクラス化してみたらどう?
727725:04/12/17 21:04:05
>>726
ありがとうございます。
やってみます。
728デフォルトの名無しさん:04/12/17 21:04:08
WM_SETFONT
729725:04/12/17 21:04:59
>>728
おっと、
ありがとうございます。
調べてみます。
730725:04/12/17 21:12:26
WM_SETFONTでできました。
ありがとうございました。
731デフォルトの名無しさん:04/12/18 12:48:51
リストボックスの選択されている項目の文字列を取得するにはどうしたらいいのでしょうか?
732デフォルトの名無しさん:04/12/18 12:59:00
MSDN眺めれば5分とかからずわかりそうな事を・・・
733デフォルトの名無しさん:04/12/18 13:04:09
>>732
知らないのなら黙ってて下さい。
734デフォルトの名無しさん:04/12/18 13:10:16
OSだけ再起動したいのですが、どうしたらよいでしょうか
(昔のOSでSHIFT押しながら再起動をしたときのように)?
735731:04/12/18 13:23:10
>>732
MSDNは異常に重いうえに分かりにくいのですが・・・。
一応見てみます。
736731:04/12/18 13:32:02
すいません、やっぱりMSDNではちょっと無理があります。
どこを調べていいのか分からない上に、検索文字列に日本語を使えないのは厳しいです。
もうちょっとまともなサイトを紹介していただけませんでしょうか?
737デフォルトの名無しさん:04/12/18 13:35:01
738デフォルトの名無しさん:04/12/18 13:41:24
>>737
リストビュー

>>736
LB_GETCURSEL
LB_GETTEXT
ググれ
739731:04/12/18 13:57:26
>>737
リストボックスです。

>>738
ありがとうございます!
LB_GETTEXTでできました!
740デフォルトの名無しさん:04/12/18 16:07:15
リッチエディットに画像を表示する方法はありますか?
Wordのように、改行されると画像も下に移動するようにしたいのです。
Borland C++ Compilerを使用しています。
741デフォルトの名無しさん:04/12/18 19:49:26
MFCとSDKって出来る事が違うのですか?
今はSDKしか勉強していないのですが、MFCも扱えた方がいいですか?
742デフォルトの名無しさん:04/12/18 19:52:34
>>741
SDKが扱えるならMFCなど要らん
743デフォルトの名無しさん:04/12/18 21:14:33
>>742
それはちょっと違うと思う
744742:04/12/18 21:25:55
>>743
そうなのか?
俺はそういうのをどこかのサイトで読んでから、それを信じてたがw
745デフォルトの名無しさん:04/12/18 21:36:05
適材適所
MFCや他のライブラリを使えば短時間で簡単に仕上げられる仕事を
SDKレベルで車輪の再開発している同じフロアのやつを見ると腹が立つ。
もちろんMFCが想定しないようなアプリケーションスタイルとか、細かい
ケアが必要なものはSDKレベルでやったほうが良い場合も多い。

746デフォルトの名無しさん:04/12/18 21:40:05
>>742
CRectTrackerなんぞ自分で作るのか?
747デフォルトの名無しさん:04/12/18 21:40:51
細かいケアが必要なものも最近じゃATL/WTLで作ってるな、俺は。
一度楽するとSDKで作る気起きん。
748デフォルトの名無しさん:04/12/18 21:48:10
ライブラリの限界にぶちあたるとそれを回避する方法を考えたり
最悪パッチ作ったりと大変だけど、基本的には圧倒的にライブラリ
使ったほうが生産的だよな
749デフォルトの名無しさん:04/12/18 22:00:27
他人のソース見たりしないんだろうか?
MFCも知らないと損だろ
750デフォルトの名無しさん:04/12/18 22:09:23
>>749
MFCは使ったことないけどMSDN見れば(特にAPIのラッパ部分は)大体理解できるから問題ない。
751デフォルトの名無しさん:04/12/18 22:23:18
MFCを知らずにソースだけ追いかけても理解できないはずだけど
752デフォルトの名無しさん:04/12/19 00:00:13
VC++についてるウィザードが使える、というだけでもMFCを使う価値はあると思う。

ただ、MFCが優れているかというと、うーん・・・
VBのC++版っていう感じがして、なんかダサいな。

Win32直叩きでも作ったことあるけど面倒だったのでMFC使ってます。
753デフォルトの名無しさん:04/12/19 00:47:45
VCTK+WTLがなんか好きだな。タダだし
754デフォルトの名無しさん:04/12/19 00:56:03
>>753
WTLってATL必須じゃないの?
んでATLは有料と。
755デフォルトの名無しさん:04/12/19 00:59:00
最近までそう思ってたけどこの書き込み見て試したら見事うまくいってうはwwwwwwwっをkwwwっうぇwww状態

http://pc5.2ch.net/test/read.cgi/tech/1086287039/914
756デフォルトの名無しさん:04/12/19 01:00:44
英語が苦手な人は、bccが良いかと。
コンパイラとしての性能は比較にならんほどvctkだけど。
757デフォルトの名無しさん:04/12/19 01:58:39
VCって1万円くらいでしょ?
なんでVCtoolkitに手を出すの?
758デフォルトの名無しさん:04/12/19 02:07:22
学生はいいよな
759デフォルトの名無しさん:04/12/19 02:56:05
MSはボリすぎ
760デフォルトの名無しさん:04/12/19 03:15:32
コンパイラで数万円ならそんなもんじゃね?
bccとかみたいに放置状態ならフリーでもいいかも。
761デフォルトの名無しさん:04/12/19 03:35:51
MFCは基本的にはなんにもしてくれないだろ。
アレ使って、なんか楽になるのか?
762デフォルトの名無しさん:04/12/19 03:36:38
使いづらいSDKのラッパーという印象しかない。
763デフォルトの名無しさん:04/12/19 06:20:13
>762
君はそれでいいんじゃないの?
764デフォルトの名無しさん:04/12/19 06:23:46
>>762
まあ、実際そうだしなw
765デフォルトの名無しさん:04/12/19 07:37:30
APIをフックすることは可能ですか?
なにかのAPIをコールしたときに自分の関数を呼ばせ、
そこで処理をしてから本物にバトンタッチするようなことを考えてるんですが。
766デフォルトの名無しさん:04/12/19 07:58:00
>>758
ごめん。
VS.NET 2002が出て、VC6が安売りされてる時の値段だった。
767デフォルトの名無しさん:04/12/19 08:20:23
>765
できる。
768デフォルトの名無しさん:04/12/19 08:25:01
>764
あなたの経験年数は?ちなみにわたしは1年。
769デフォルトの名無しさん:04/12/19 08:39:48
>665
面白い本を紹介してくださってありがとうございます。
さっそく注文して届いた本をぱらぱらめくって見ているのですが、
年末年始はこの本にどっぷりつかりそうです。
770デフォルトの名無しさん:04/12/19 10:59:26
>>768
Win32APIなら7年
MFCなら5年
771デフォルトの名無しさん:04/12/19 15:31:53
>>770
(`Д´ )9m経歴詐称で訴えてやる!!
772デフォルトの名無しさん:04/12/19 15:53:05
俺なんか
Win32API:1年
MFC:2年
まだまだだな・・
773デフォルトの名無しさん:04/12/19 16:11:31
>>772
経験年数なんて自慢するもんじゃない。
どんなに年月かけたって進歩の無い奴は無いまま。
3年もたって使いこなせないのはもう駄目だと思う。
774デフォルトの名無しさん:04/12/19 16:39:25
一年あれば充分だろ。
775デフォルトの名無しさん:04/12/19 17:00:59
半年あれば十分だろ
776デフォルトの名無しさん:04/12/19 17:10:03
一久遠あれば十分だろ。
777デフォルトの名無しさん:04/12/19 17:13:38
(・∀・)ニヤニヤ
778デフォルトの名無しさん:04/12/19 17:46:49
エディットコントロールにスクロールバーが付いている時、
WM_MOUSEWHEEL を、そのスクロールバーに感知させないようにするには
どうしたらいいのでしょうか?

プロシージャのサブクラス化をしているつもりなのですが、
まず最初にスクロールバーが感知して、それから、
サブクラス化したプロシージャに来ているようなのです…

WM_MOUSEWHEEL を、自分だけでイベントハンドリングしたいのです
スクロールバーがあっても、感知させたくないのです
779デフォルトの名無しさん:04/12/19 17:47:19
>>774
1年じゃ無理では無いにしろ難しいと思うな。
結構くる注文で
「flashやVCみたいなのにしてくれ(ドッキングツールバーのことだな)」とか
「IEのお気に入りと同じような機能を入れてくれ」
ってのがあるけどあーゆーのはホイホイ作れるまでなるのは時間かかるだろ。
まあ、Win32APIだけの話ではね。
780デフォルトの名無しさん:04/12/19 18:05:38
ライブラリ使えば数分でできる仕事を
Win32APIだけで時間をかけて作る意味があるのか?
しかも一年以上の修行期間が必要だなんて・・・
781デフォルトの名無しさん:04/12/19 18:10:39
技術屋の自慰行為
782デフォルトの名無しさん:04/12/19 18:16:42
C++知らなきゃしょうがない。
手も足もだせないだろう。
783デフォルトの名無しさん:04/12/19 18:23:03
>>780
そういうライブラリの存在を知る時間も含めて
一年でできるようになるのかと。
784デフォルトの名無しさん:04/12/19 18:59:49
誰か>>765に答えてやれよ
785デフォルトの名無しさん:04/12/19 19:13:18
78669式フリーPG ◆hND3Lufios :04/12/19 19:32:51
モノによるのでは。
数を売るパッケージで、頻繁に使うようなものならSDKで作りこむのもよい。。
短納期で開発効率重視ならライブラリに頼って少しでも工数が稼げれば。
787デフォルトの名無しさん:04/12/19 21:07:35
短納期で開発効率重視であることの方が多いよなぁ・・・
788デフォルトの名無しさん:04/12/19 22:21:23
誰か>>740に答えてやれよ
789デフォルトの名無しさん:04/12/19 22:24:17
>>788
お前が答えろ
790デフォルトの名無しさん:04/12/19 22:28:53
ahoか?
分かってたら答えてるわ
791デフォルトの名無しさん:04/12/19 22:40:57
Delスレで質問したら、こちらにとレスがあったので、質問させてください。
ドライブ名(Cとか)からハードウェア名を取得するには、どのように
したらよいのでしょうか?
ドライブを右クリックして、プロパティを開き、ハードウェアタブに
表示されるハードウェア名を取得したいのですが。
792デフォルトの名無しさん:04/12/19 22:56:09
>>740 == >>788 == >>790
793デフォルトの名無しさん:04/12/19 23:24:44
>792
仮にそうだとして何か問題でも?
794デフォルトの名無しさん:04/12/19 23:27:51
== >>793
795デフォルトの名無しさん:04/12/19 23:33:35
>>792
">>740" == ">>788" && ">>788" == ">>790"
初歩的なミスはやめろな
796デフォルトの名無しさん:04/12/19 23:48:18
もしかして、C++ が使えるんだと言う自慢なの ? (藁
797デフォルトの名無しさん:04/12/19 23:51:54
どれが?
798デフォルトの名無しさん:04/12/20 00:30:51
エディットコントロールを作成した時点でキャレットを表示したいのですがどうすればいいか教えてください。
キャレット作成して表示してもそのキャレットは移動できません。
なのでエディットコントロールをマウスでクリックしたときに初めて表示されるキャレットを最初から表示したいのです。お願いします
799デフォルトの名無しさん:04/12/20 00:35:33
>>798
SetFocusか何か。
800798:04/12/20 00:43:42
>>799
ありがとうございますありがとうございますありがとうございます

801デフォルトの名無しさん:04/12/20 04:10:41
下のようなプログラムを書いたのですがウインドウが、一番手前に来ません。
SetForegroundWindow( hWnd )ではうまくいったのですが・・・、
どうしてだか気になるので教えてください。

if( GetForegroundWindow() != hWnd ){
SetWindowPos( hWnd , HWND_TOP , 0 , 0 , 0 , 0 , SWP_NOSIZE | SWP_NOMOVE );
}
802デフォルトの名無しさん:04/12/20 05:35:34
>>791
ハードウェアタブに表示されるのは全ドライブの一覧で、
ドライブレターとの関連はないよ。たまたま一番上に表示されてフォーカスが合ってるだけだったりする。

ドライブのメーカーや型番を取得するのは、
"\\\\.\\c:"をCreateFileで開いて、
DeviceIoControl()でIOCTL_STORAGE_QUERY_PROPERTYでSTORAGE_DEVICE_DESCRIPTORを取得すればいけそうな希ガス。
サンプルやヘッダはDDKにあります。
803802:04/12/20 05:50:54
ごめん、ヘッダはDDKにあるけど、参考になるサンプルはないみたい。

たまたま自分がやろうとしていたことに近いものだけ、サンプルがあったので、他のもあると思い込んでました。
804802:04/12/20 07:17:30
たとえば、こんな感じ。
元々SCSI用なので、ATAの場合はベンダ名がプロダクト名に入ってきます。
・・・だけど、ダイナミックディスクでは取得できない・・・もっと適切なAPIがあるのだと思います。

#include <devioctl.h>
#include <ntdddisk.h>

HANDLE hFileHandle = CreateFile("\\\\.\\c:", GENERIC_READ|GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL) ;
if (INVALID_HANDLE_VALUE != hFileHandle) {
UCHAR buffer[2048] ;
ULONG returned = 0 ;

STORAGE_PROPERTY_QUERY spq ;
spq.PropertyId = StorageDeviceProperty ;
spq.QueryType= PropertyStandardQuery ;

BOOL status = DeviceIoControl(hFileHandle, IOCTL_STORAGE_QUERY_PROPERTY, &spq, sizeof(spq), buffer, sizeof(buffer), &returned, 0) ;
if (status) {
STORAGE_DEVICE_DESCRIPTOR* pSDD = (STORAGE_DEVICE_DESCRIPTOR*)buffer;
char* psz0 = pSDD->VendorIdOffset? &((char*)pSDD)[pSDD->VendorIdOffset] : NULL ;
char* psz1 = pSDD->ProductIdOffset ? &((char*)pSDD)[pSDD->ProductIdOffset] : NULL ;
char* psz2 = pSDD->ProductRevisionOffset ? &((char*)pSDD)[pSDD->ProductRevisionOffset] : NULL ;
char* psz3 = pSDD->SerialNumberOffset ? &((char*)pSDD)[pSDD->SerialNumberOffset] : NULL ;
}
}
805デフォルトの名無しさん:04/12/20 07:37:19
806デフォルトの名無しさん:04/12/20 13:52:18
>>750
LoadImage でLR_LOADMAP3DCOLORSを指定しても正しく色変換がなされないケースへの
workaround とか、MFCにもいろいろ役にたつコードが含まれてるわけで、一通りソース読んで
おくくらいのことはした方がいいと思うけど・・・
807デフォルトの名無しさん:04/12/20 16:10:56
スレをまとめてFAQ作るような勤勉な輩はいないものか。
808デフォルトの名無しさん:04/12/20 17:35:27
>>807
おまいがいるじゃないか。
809デフォルトの名無しさん:04/12/20 17:53:20
マウスカーソルが自分のウインドウ上から出た瞬間は
どうやって検出すればいいですか
810デフォルトの名無しさん:04/12/20 18:03:44
キャプチャして移動するたびに座標比較する
811デフォルトの名無しさん:04/12/20 18:11:40
>>809
WM_NCHITTEST使えばできる
812デフォルトの名無しさん:04/12/20 19:21:35
TCP/IPのIPアドレスなどのネットワーク設定(LAN設定)の切り替え(切り換え)
をワンタッチで簡単にできるTCP/IP設定変更ツールを作りたいのですが
どんなAPIを使えばよろしいでしょうか?
環境はWindows2000,XPを考えています
81369式フリーPG ◆hND3Lufios :04/12/20 19:29:50
814812:04/12/20 19:38:14
>813
リンクありがとうございます。
815デフォルトの名無しさん:04/12/20 20:07:37
音楽を再生するMMControlについて質問です。
MIDIデータを再生し、一時停止(Pause)した後、再びその位置から再生すると、何故か音色が変わってしまいます。
使った事のある方なら殆どの方がきっと「あれ?」と思うところだと思います。

どうもMMControlでは、頭から再生しようとした場合しか音色設定を読み込んでない気がするのですが、
何か解決方法は無いでしょうか。
816815:04/12/20 20:08:28
すいません、MMControl、つまりマルチメディアMCIコントロールでのMIDI再生の事です。
817デフォルトの名無しさん:04/12/20 20:16:43
ネットワークドライブの共有元フォルダ名から共有名を知る方法はありませんか?
コンピュータ名:SERVER
共有フォルダ:E:\Data
だと共有元フォルダ名は"Server:e:\Data"になりますよね?
それを別なコンピュータ上でXドライブとして設定してたとすると、
"Server:e:\Data\Tmp"を"X:\Tmp"にへんかんしたいのですが。

環境:windows2000

よろしくお願いします。
818デフォルトの名無しさん:04/12/20 20:52:49
WNetGetConnectionで一致する物を探す
819デフォルトの名無しさん:04/12/20 22:34:56
>>815
俺も同じ問題で悩んでるが、解決できてないorz

ぐぐったら出てきた。やっぱり解決できてない
http://www.takeittechies.com/vbtomo/boards/vbqanda.php?do=spread&num=2303
820デフォルトの名無しさん:04/12/20 23:18:51
>770
7年もコーディングやってるなんて化石みたいな奴だな。
一生次のステップに進めなそう。
821817:04/12/20 23:25:31
>>818さんありがとうございます。
試してみたのですが、
期待する文字列"Server:e:\Data\Tmp"にたいして
"Server:\Data\Tmp"しか取得できませんでした。
参照先の完全なローカルパスが取得したいのですが無理でしょうか?
822デフォルトの名無しさん:04/12/20 23:27:36
>>821
参照先のドライブ名は得られないと思うけど。
823812:04/12/20 23:31:08
AddIpaddressで仮想的にIPを追加できることはわかりました
できればローカルエリア接続のプロパティで設定したのと同じ設定
(再起動しても設定が消えない)方法でやりたいのですが
調べたところネットワークドライバ(NDIS?)でプログラムすることに
なるのでしょうか?
と、いってもデバイスドライバのプログラムなんて想像がつかない状態です

824デフォルトの名無しさん:04/12/20 23:46:57
>>820
管理職やりたいんならやれば?
825デフォルトの名無しさん:04/12/21 00:17:03
何この過ぎ去ったレスほじくりかえしてるスレ
826デフォルトの名無しさん:04/12/21 01:08:01
>>820
専門学校で3年、会社で4年だけど?
まともなWindowsのアプリ組める奴ってめずらしいだろ?
827デフォルトの名無しさん:04/12/21 01:55:08
>>826
掃いて捨てるほどいるけど?
828デフォルトの名無しさん:04/12/21 01:56:48
>>826
え?・・・。
829デフォルトの名無しさん:04/12/21 02:23:06
絵に描いたような胃の中の蛙でちゅね。
830デフォルトの名無しさん:04/12/21 02:26:27
VC++ Version2003ってClassWizardってないのか?

VC++6だと、メニュー→表示→ClassWizardってな感じでいけたけども。
831デフォルトの名無しさん:04/12/21 02:40:40
>>826
自分がまともなものを組めないからって、そんなことを言っちゃいけないよ。
832デフォルトの名無しさん:04/12/21 03:32:51
まとも、というのがどの程度のレベルかだね。

一見まともそうでも、画面のデザインやDPIを変更すると破綻するアプリは多いよ。
833デフォルトの名無しさん:04/12/21 05:33:24
うえみてくらすなしたみてくらせ
834デフォルトの名無しさん:04/12/21 06:21:03
>>832
作ってる本人と環境が違うと問題がでるのはどうしようもないだろ
本当におかしければユーザーから指摘されて直すだろうし
もしかして色盲とか弱視とかで非常に特殊な設定してる人ですか?
835デフォルトの名無しさん:04/12/21 06:41:43
>>830
スレ違い。
836デフォルトの名無しさん:04/12/21 07:09:35
>824
あわれよのう
837デフォルトの名無しさん:04/12/21 07:32:17
>>834
どうしょもなくないよ。まともに作ってれば問題は起きない。
たまたま自分の環境でうまく動いてるだけというのは、まともとは言わない。

決め打ちでC:\WINNT\SYSTEM32にインストールしたり、
一時ファイルのために C:\ランダムな数字 なフォルダを作ったりするアプリを、まともと言いますか?
838デフォルトの名無しさん:04/12/21 09:10:25
>>832
> DPIを変更すると破綻
それってディスプレイドライバの問題じゃん。
839デフォルトの名無しさん:04/12/21 11:50:43
まあ、なんでもいいけど。
数年来Win32の経験つんできているってことは需要がありつづけるってことでしょ。
ええなあ。
840デフォルトの名無しさん:04/12/21 12:08:18
Windowsのファイルシステムにファイル(やディレクトリ) を一意に識別する固有の
識別子のようなものはないですか?
あればそれを取得や検索するAPIも教えていただけませんか?

841デフォルトの名無しさん:04/12/21 12:11:29
>>840
パス名とファイル名を繋げると一意な識別子になります!
842デフォルトの名無しさん:04/12/21 12:24:03
Σ(゚Д゚;)ハッ
843840:04/12/21 12:35:55
>>841
一度作成されたら削除されるまでリネームしようが移動しようが変わらないものは
ないのですか?
844デフォルトの名無しさん:04/12/21 12:38:44
無いよ
845デフォルトの名無しさん:04/12/21 12:40:24
Σ(゚Д゚;)ハッ
846デフォルトの名無しさん:04/12/21 12:40:54
実行した瞬間MS-DOSを起動させるには、どのようにすればいいですか?
847デフォルトの名無しさん:04/12/21 12:44:59
>>846
脳味噌を洗って出直してください
848デフォルトの名無しさん:04/12/21 12:49:03
洗ってきました。さぁ、教えてください。
849デフォルトの名無しさん:04/12/21 12:51:10
NT系だとMS-DOSは入ってないよな
850デフォルトの名無しさん:04/12/21 12:56:31
Σ(゚Д゚;)ハッ
851デフォルトの名無しさん:04/12/21 13:00:51
>>843
msvcrt の struct stat の st_dev と st_ino はどういう意味の値なんだろうね?
UNIX だとこの2つの値のペアを(パス名非依存の)識別子と考えられるんだけど。
852デフォルトの名無しさん:04/12/21 13:17:19
LoadLibrayExで
LOAD_LIBRARY_AS_DATAFILEを指定してDLLを読み込んだとき
その読み込んだDLLをそのまま別のファイルに書き出すにはどうすればよいのでしょうか。
853デフォルトの名無しさん:04/12/21 13:55:11
>>852
LoadLibrayExで指定したファイル名を使ってCopyFile
854840:04/12/21 15:10:39
>>851
ありがとうございます、さっそく調べてみたのですがMSDNライブラリには
>st_ino は、FAT、HPFS、または NTFS の各ファイル システムでは意味を持ちません。
との記述が…
残念です。もう少し調べてみたいと思います。
855デフォルトの名無しさん:04/12/21 15:22:21
>>854
ありゃ、残念。

で、Cygwin で st_ino がどうなっているか調べてみると、
GetFileInformationByHandle() を使っていて、この API で得られる
nFileIndexHigh と nFileIndexLow がそれっぽいような違うような値ら
しい。

856デフォルトの名無しさん:04/12/21 15:36:30
| Note that this value is useful only while the file is open by at least one process.
| If no processes have it open, the index may change the next time the file is opened.

違うよなあ、こりゃ。

857840:04/12/21 17:49:26
OS上ではどのように処理しているのですかね?
まさか、リネームや移動しているたびに変更情報は作りませんよね?
フォルダの移動なんかやったらえらいことになりそう…
ファイルシステムに詳しい方はいませんか?
スレ違いですかね?
858デフォルトの名無しさん:04/12/21 19:02:42
>>840
だから無いからOSは何も処理してないよ。
859デフォルトの名無しさん:04/12/21 19:20:50
>>838
そういう話ではない。

画面レイアウトがピクセル単位で決められているのにフォントだけポイ
ント単位で作成してたり、メニューのフォントが大きくなってメニュー
バーが2段表示になるとクライアント領域が狭くなって一部の操作がで
きなくなる、とかのアプリケーション。
860デフォルトの名無しさん:04/12/21 20:29:05
MD5
861デフォルトの名無しさん:04/12/21 21:30:17
オブジェクト識別子ってのがなかったっけ?
Distributed Link Tracking Serverが使ってる奴
862デフォルトの名無しさん:04/12/21 22:20:15
>>840
GetFileInformationByHandle

ただし、誰かが握ってないとダメ。
863デフォルトの名無しさん:04/12/21 22:21:25
>>791
解決した?
864デフォルトの名無しさん:04/12/21 23:46:44
>850,843
ない

>857
>リネームや移動しているたびに変更情報は作りませんよね?
>フォルダの移動なんかやったらえらいことになりそう…
なにが大変なのかわからんけど
FATの場合、リネームや移動ではFATエントリーは変化しない(当然データの移動も発生しない)
単にディレクトリエントリの中身が書き換えられるだけだからそれほど大変じゃない
ただ、ディレクトリエントリのどこに書き込まれるかは移動するたびに変わる
コピーすると実際にデータが入るクラスタが変わるのでFATエントリーも変化
865デフォルトの名無しさん:04/12/22 01:09:08
プログラムでマウスの自動処理をしたいのですが、SendMessageで
特定のハンドルに送るのではなく、画面のx,yをクリックした事にする事は
出来ますでしょうか?

全ての窓を取得してx,yの位置の最前面にあるハンドルに送ったりするの
ではなく、マウス操作をそのまま再現する様な・・・
866デフォルトの名無しさん:04/12/22 01:16:42
>>865
使ったこと無いけどmouse_event
ところでなんでこのAPIは小文字なんだろうな
867デフォルトの名無しさん:04/12/22 01:41:26
>>866
クスコ

絶対座標の仕様が回りくどい・・・
868840:04/12/22 09:00:06
>>864
そうですか、説明ありがとうございます。元々やりたかったことが特定フォルダをReadDirectoryChangesw
で監視して、ファイルの情報をデータベース二キロ浮くしたかったのです。
そこでファイル固有の情報を主キーにしようかなと思っていたもので。
実際に作ってみたのですが(とりあえずフルパスを主キーにした)、このAPIって結構ターゲットの変更を追
尾しきれないのですね。私の作り方が悪いのでしょうが。
メインスレッドから監視スレッドを立ち上げ、変更がある都度書き込みスレッドを作成してデータベースに
アクセスしています。ファイルの追加やリネームニューでデータを追加し、削除やリネームオールドでデー
タを削除しているのですが、瞬間的に作られるテンプファイルなどが新規ファイルとして残ったり、多くの
ファイルを同時に操作すると削除したファイルなどがデータベースに残ってしまいます。
基本的なアプローチが間違っているかともおもいますが。このよう場合の常套手段など在るのでしょうか?
他スレ誘導や参考サイトなど教えていただけると助かります。
869デフォルトの名無しさん:04/12/22 09:49:58
>変更がある都度書き込みスレッドを作成して
変更が立て続けに起きたときに処理が並行して正常に記録できなくなってる悪寒。
870791:04/12/22 09:54:46
>>863
レスしなくてすみません。まだ未解決です。
APIには慣れていないもので、色々と調べています。
今回、ハードウェア名(?)を調べたいのは、USB接続された
リムーバブルディスクですが、質問ばかりだとアレなので、
まず>>804の内容を理解しようと頑張ってみます。

参考になるサイトがありましたら教えて頂けると助かります。
871デフォルトの名無しさん:04/12/22 13:05:57
>>865
vncサーバのソースとか読んでみたらどうでしょう。
vncプロトコルは異様にシンプルなので、特に問題なければサーバを
そのまま使うのも簡便でしょう。
872デフォルトの名無しさん:04/12/22 13:23:14
名前見てるだけでチンチン立ってくるよ。
873デフォルトの名無しさん:04/12/22 16:44:40
システム警告音を鳴らしたまま MessageBox を表示して
それを閉じるまで Beep 鳴りっ放し、ってのは出来ないでしょうか?
(サウンドカードは使えないとして)
874デフォルトの名無しさん:04/12/22 16:46:38
別スレッドで鳴らしまくれ!!!
でもそれ激しくウザいな
875デフォルトの名無しさん:04/12/22 17:19:08
でもそういう要求は多い罠。
でも納品してからやっぱり五月蝿いと言われる罠。
876デフォルトの名無しさん:04/12/22 17:26:34
んで、ボリュームを下げるよう言われるのな。
877873:04/12/22 17:42:49
やはり別スレッドになりますか…
取り敢えず別スレッドの無限ループ内で
Beep() を呼ぶ、というやり方で試してみました。
…継続時間として指定した時間が経過するまでは
TerminateThread でもすぐに止まらないっすね。
継続時間1秒として、「音が止まるまで少し遅れる事がある」
というところで納得してもらうことにします。
ありがとうございました。
878デフォルトの名無しさん:04/12/22 19:10:55
すいません
InvalidateRectで全画面描画すると
凄いチカチカするんですが
どうにかできないでしょうか?
以前使ってた言語ではこの程度でチカチカはしなかったんですが
879デフォルトの名無しさん:04/12/22 19:19:08
そうですか
880デフォルトの名無しさん:04/12/22 19:19:19
>>878
以前と今の言語は何だ?
881デフォルトの名無しさん:04/12/22 19:25:03
WM_ERASEBKGNDを適切に処理する。
882878:04/12/22 19:58:59
やはりもう少し勉強してから質問する事にします
失礼しました
883802:04/12/22 20:40:12
>>870
USBのHDDでも大丈夫でしたよ。
HDDがUSBかどうかは、STORAGE_DEVICE_DESCRIPTORのBusTypeでわかります。

"\\\\.\\c:" というのはCドライブの場合で、Dドライブなら "\\\\.\\d:" です。
あと、C言語では\を直接書くことができないので、\を\\で書いています。
つまり、CreateFileに渡すのは実際には、"\\.\c:"です。

\ではまってたら、ごめんなさいね・・・。
884デフォルトの名無しさん:04/12/22 22:40:46
Win2000より古いWindowsで、HWND_MESSAGEを使ったメッセージ専用ウィンドウと
同等の機能を実現することって可能ですか?
885デフォルトの名無しさん:04/12/22 22:50:20
識別できるようなクラス名もウィンドウ名も持たないダイアログがあるのですが
こういったダイアログのハンドルをFindWindowで取得するにはどうすればいいのでしょうか?
886デフォルトの名無しさん:04/12/22 23:24:14
何が異なるのかをとりあえず書け
887デフォルトの名無しさん:04/12/23 01:03:56
c++スレでスレ違いといわれたのでこちらであっているのか分かりませんが。。

VC++.net
キーボードとマウスからの入力はWM_KEYDOWNなどを受け取るので分かりますが、
ゲームのコントローラーからの情報はどうやれば分かるのでしょうか。
spy++でやってもコントローラーからの情報は一切受け付けません(出力を全て選択していますが該当するものは元々なさそう)。
コントロールパネルのゲームコントローラーは正常に受け付けています。
ゲームのコントローラーは[PS2のコントローラー]-[コンバーター(USB接続)]-[PC]と繋いでいます。
888デフォルトの名無しさん:04/12/23 01:16:33
889887:04/12/23 01:19:59
>>888
ありがとうございます。
890デフォルトの名無しさん:04/12/23 08:16:11
>>887
タイマーか何かでチェック汁
891デフォルトの名無しさん:04/12/23 10:08:18
大きなファイル(数GB)の真ん中に、数Byteのデータを挿入したいんです。

真ん中にシークして、書き込む領域のデータをバッファに待避して、
書き込みたいデータを書き込み、次々とずらして最後まで繰り返していく、
という方法でできるにはできますが、
ファイルが大きいので入出力処理に時間がかかってしまいます。

できるだけディスクへの入出力が少なくなるようにするには、
どうするのがいいのでしょうか?

892デフォルトの名無しさん:04/12/23 10:28:46
>>891
どうしようもない。データ構造を工夫するとか。
 たとえばビデオデータの例だとQuickTime なんかは、実際のファイル内での順序と
再生される時系列とが一致しなくても良いデータ構造を使って、編集時はファイルを
大きく変更しなくても挿入やカットができるようにしている。必要なら最後に整列する。
893デフォルトの名無しさん:04/12/23 10:45:27
>>891
データベースを利用できないか?
894デフォルトの名無しさん:04/12/23 12:47:43
>>892,893
すでに作られているファイルを加工したいので、
自分でデータ構造を定義できないし、データベースも使えないんです。

メモリマップトファイルを使って…、とも考えたんですが、
結局、書き込みが発生してしまうんですよね。


895デフォルトの名無しさん:04/12/23 14:06:44
ファイルシステムを直接いじるってのはどうだ?
断片化するだろうけど‥‥
896デフォルトの名無しさん:04/12/23 14:17:12
>>887
RegisterRawInputDevicesを呼び出すとWM_INPUTを受け取れるようになる。
普通はDirectInputだろうけど。
897887:04/12/23 15:07:51
>>896
レスありがとうございます。

DirectInputを検索して出てきたサイト(ToruのDirectX〜)のジョイスティック状態のサンプルを実行してみました(PS2のコントローラー)。
ttp://www.geocities.jp/toru_website/di/4.html
左側のスティックを傾けない場合、十字キーの[左か右]と[上か下]を常時押した状態になります。
また倒した方向に対した十字キーの押下は正しいのですが、傾けた角度は関係なく言わば押したか押していないかの判断しかしていません。
dijsに状態を取得し、dijs.lXで十字キーの左右の状態をあらわしていますが、ジョイスティックの場合は違うのでしょうか?
(文章を書くのが下手ですみません)
898デフォルトの名無しさん:04/12/23 15:59:24
ジョイスティックをキャリブレートして確かめた後にDirectXのヘルプを
ダウンロードして読んで、それでもわからないならDirectXスレに行って質問してください
899898:04/12/23 16:01:33
あげちた。スマソ
900デフォルトの名無しさん:04/12/23 16:19:57
了解です
901791:04/12/23 16:57:04
>>883
CreateFileはネット上にサンプルもあったので、なんとか
できました。
今、DeviceIoControlについて調べています。
こちらは、Delphiでのサンプルがネット上にも少ないので、
苦戦していますが、がんばってみます。
902デフォルトの名無しさん:04/12/23 17:35:38
質問なのですが
OSはXP
Visual.net C++ を使用しています

マルチメディアタイマーを使用するときは
プロジェクトにwinmm.libを参加させます
と書いてあるのですが
これはどのようにやればいいのでしょうか?

教えて下さい
903デフォルトの名無しさん:04/12/23 17:40:01
>>902
ソリューションビューからプロジェクトアイコンを右クリックし [プロパティ]
[構成プロパティ] - [リンカ] - [入力] - [追加の依存ファイル] に winmm.lib
904デフォルトの名無しさん:04/12/23 18:47:09
質問なのですが

>プロジェクトにwinmm.libを参加させます
などという莫迦な言い回しは
どこに記述されているのでしょうか?

笑いたいので教えて下さい
905デフォルトの名無しさん:04/12/23 18:50:27
>>904
検索しろよ莫迦
906デフォルトの名無しさん:04/12/23 23:12:27
>>902
#pragma comment(lib, "winmm.lib")
907デフォルトの名無しさん:04/12/24 00:20:19
WM_KEYDOWNでVK_TABやVK_LEFTのときに
SHIFTもいっしょにおされていたかどうか
調べるにはどうするんでしょうか
908デフォルトの名無しさん:04/12/24 00:25:19
GetKeyStateなど
909デフォルトの名無しさん:04/12/24 00:35:21
おばかな質問でごめんなさい。
用語をあまり知らないので、ググり方もよく分かりません。
やろうとしていることが、もしかしたらAPIというものを使えば出来るかもしれない
ということを知るまでに、かなりの時間を費やしたのアホです。
使えるのはAccessVBAのみ

最小化されてタスクバーにおさまっちゃった状態のアプリケーションを、
表舞台に引っ張り出す方法を教えてください
910デフォルトの名無しさん:04/12/24 00:42:57
91169式フリーPG ◆hND3Lufios :04/12/24 00:49:58
Alt とTabを押す
912デフォルトの名無しさん:04/12/24 00:55:06
>>910
すみません
ググルための語彙力の限界というか・・・
アプリケーション アクティブ化 API とかでググッたら、それっぽい自作関数が紹介されてたんですけど、
これが使えるのは、最前面にあるAccessのすぐ真裏でひそかに生きてる状態だけでした。
(こんな言い方で分かっていただけますか)
最小化されてタスクバーにおさまっちゃった状態では通用しなかったんです。

>>911
sendkeys "%{Tab}"
でもどうにかいけることはいけるんですけど、
できれば、タスクバーにおさまっているものの中からアプリケーションを指定して、引っぱり出したいな
と。(いくつもあると、何が出てくるか分からないので)
91369式フリーPG ◆hND3Lufios :04/12/24 00:56:06
Alt とTabを押す
91469式フリーPG ◆hND3Lufios :04/12/24 00:56:38
ゴメン。。。
915デフォルトの名無しさん:04/12/24 00:57:25
>>902 >>906
ありがとうございました

>>904
猫でもわかるWINプログラム 第1版の
P196ページにかかれて降りました
916デフォルトの名無しさん:04/12/24 08:30:03
順を追って読め
917デフォルトの名無しさん:04/12/24 08:34:04
XPの「アクティブでないインジケータを隠す」の個別アイコン設定を
変更&適用する方法、どなたかご存じでしょうか。

どうしても設定が保存されないアイコン(サービス類)を、スタートアップ
で変更&適用出来たらなと思っているのですが・・・
918デフォルトの名無しさん:04/12/24 10:10:43
>>917
ここらへん。詳しいことは知らない
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\TrayNotify
919デフォルトの名無しさん:04/12/24 12:43:26
DOS用プログラムをコマンドプロンプトを表示しないで
実行しつつ、そのプログラムの吐いた標準出力の結果を
得るにはどうしたら良いのでしょうか?
920デフォルトの名無しさん:04/12/24 13:19:01
>>905
「させます」取ってみた。あぁ、噂の「猫」か。
HTML も酷ぇなw
921デフォルトの名無しさん:04/12/24 13:29:42
>>919
if (CreatePipe(&hRead, &hWrite, &sa, 0)) {
  if (DuplicateHandle(GetCurrentProcess(), hWrite, GetCurrentProcess(), NULL, 0, FALSE, DUPLICATE_SAME_ACCESS)) {
    PROCESS_INFORMATION pi;
    STARTUPINFO si = {sizeof si};
    HANDLE hOutputOld = GetStdHandle(STD_OUTPUT_HANDLE);
    SetStdHandle(STD_OUTPUT_HANDLE, hWrite);
    if (CreateProcess(NULL, pszCmdLine, NULL, NULL, TRUE, DETACHED_PROCESS | NORMAL_PRIORITY_CLASS, NULL, NULL, &si, &pi)) {
      CloseHandle(pi.hThread);
      WaitForSingleObject(pi.hProcess, INFINITE);
      CloseHandle(pi.hProcess);
      SetStdHandle(STD_OUTPUT_HANDLE, hOutputOld);
      // ここでReadFile(hRead, ...);
    }
  }
  CloseHandle(hWrite);
  CloseHandle(hRead);
}
922デフォルトの名無しさん:04/12/24 13:32:17
HANDLE hReadm hWrite;の1行を書き忘れた。書き足しておけ。
923デフォルトの名無しさん:04/12/24 13:34:18
命令するな!
924デフォルトの名無しさん:04/12/24 13:38:14
>>923 (°Д°)ハァ?
お前はコマンドプロンプトを絶対に使わないんだな!!
925919:04/12/24 14:36:34
>>921
なるほど、パイプですか。
パイプは使った事無かったので盲点でした。
ソースまで書いて貰いありがとうございました。
926デフォルトの名無しさん:04/12/25 03:22:54
自分のスレッドのIDを後から知りたいのですが、
よろしければ取得APIを教えて頂けないでしょうか。
927デフォルトの名無しさん:04/12/25 03:28:28
GetCurrentThreadId
928926:04/12/25 03:29:37
検索ワードを変えたらあっさりヒット、失礼しました
GetWindowThreadProcessId
929926:04/12/25 03:30:15
>>927
重ね重ねすいません、そっちの方が良さそうですね
ありがとうございました
930デフォルトの名無しさん:04/12/25 03:31:08
spawn しまくってる香具師はパイプカットしろ
931デフォルトの名無しさん:04/12/25 10:11:34
VC++で特定フォルダのファイルの書込み更新の監視プログラム
を作成したいのです。

http://www.athomejp.com/goldfish/api/filechangenotification.asp
を参考に行っているのですが、ファイルの書込みを行った時点でスレッ
ドが2重で実行されてしまいます。

これを回避する方法はあるのでしょうか?
Sleep等で時間調整を行ってもだめでした。

FindNextChangeNotificationで次期の監視を開始する際にうまく
いっていないような気がします。
932デフォルトの名無しさん:04/12/25 10:17:27
BST_CHECKEDのBSTは何の略?
933デフォルトの名無しさん:04/12/25 10:26:15
ボケ死ねタコ
934デフォルトの名無しさん:04/12/25 10:28:33
>>931
参考サイトだけ見せられても…
実際のコードは?
935932:04/12/25 10:32:26
自己れす、ボタンステートですた。
936デフォルトの名無しさん:04/12/25 10:57:44
934>
今はまだ設計開始中のため考慮している段階です。
ファイルの書込み更新時点でファイルをリードして内部
処理するのが目的なのですが、何か良い方法はあるので
しょうか?
937デフォルトの名無しさん:04/12/25 10:59:59
>>936
単に不具合なんじゃないかって、話しだと思われ
938デフォルトの名無しさん:04/12/25 11:09:16
>>936
喪前がうまくいかないってコードを見せればいいんだよ。
939デフォルトの名無しさん:04/12/25 11:27:45
取りあえずどういうタイミングで通知が来るのか、
書き込んだりフラッシュしたりちょっと待ってみたりしてしっかりチェックしてみな。
940デフォルトの名無しさん:04/12/25 13:16:29
プロセスごとに使用するネットワークのバンド幅を制限したいのですが、
このようなことは Win API で可能でしょうか?
941デフォルトの名無しさん:04/12/25 13:49:32
プロセスごとに制御できるかどうかはしらんが
QoSで調べてみれば
942デフォルトの名無しさん:04/12/25 20:39:22
>>940
Windows2000以降ならできると思う。

NEGiESとか、フリーウェアでやってるので、マイクロソフトとNDA結ばなきゃ使えないAPIなんてことはなさそう。
943デフォルトの名無しさん:04/12/25 20:59:05
>マイクロソフトとNDA結ばなきゃ使えないAPI
そんなものはありません。
944デフォルトの名無しさん:04/12/25 23:48:57
あります
945デフォルトの名無しさん:04/12/25 23:56:05
>944
表向きだけな。
946デフォルトの名無しさん:04/12/25 23:57:42
表向きってどういうこと?
947デフォルトの名無しさん:04/12/25 23:59:29
>946
いや、むしろ
表向きってどういうこと?ってどういうこと?
って聞き返したいんだけど。
948デフォルトの名無しさん:04/12/26 00:32:41
って聞き返したいってどういうこと?
949デフォルトの名無しさん:04/12/26 00:39:04
>>944
表向きでもいいんだけど、例えばどんなやつ?
950デフォルトの名無しさん:04/12/26 01:10:53
OTLSとか。
951デフォルトの名無しさん:04/12/26 01:43:06
BITMAPV4HEADER / BITMAPV5HEADER の後ろのほうのメンバの使い道を教えてください。
LOGCOLORSPACE 構造体によく似ているので関係あるんだと思うんですが、ICM の使い方もよくわかりません。
952デフォルトの名無しさん:04/12/26 06:13:37
>950
どこでその名を知った?場合によってはその書き込みはまずいぞ。
953デフォルトの名無しさん:04/12/26 06:51:02
Open Type Layout Service Libraryがどうしたって?

http://www.microsoft.com/typography/developers/otls/default.htm
954デフォルトの名無しさん:04/12/26 09:38:01
>953
お前、契約書ちゃんと読めよ・・・信じられん。
うちの社員だったらクビ飛んでるぞ。
955デフォルトの名無しさん:04/12/26 10:25:02
文字列検索できる関数とかってありますか?教えてください。お願いします
956デフォルトの名無しさん:04/12/26 10:42:39
>>955
ない
957デフォルトの名無しさん:04/12/26 12:49:46
>>953
詳しく
958デフォルトの名無しさん:04/12/26 13:45:22
>>954
詳すぃく
959デフォルトの名無しさん:04/12/26 14:02:12
>>955
詳すぃくゅ
960デフォルトの名無しさん:04/12/26 14:32:29
>>959
kwaswique
961デフォルトの名無しさん:04/12/26 15:02:31
strstr
962デフォルトの名無しさん:04/12/26 15:21:36
>958
経験ないと分からない思うが、>953のようにリンクを
貼る行為は完全にNG。契約違反になるから説明できる
とこがほとんどないんだけど、当事者になったときに
分かるよ。とりあえず>953はやばい。
963デフォルトの名無しさん:04/12/26 15:51:22
>>962
マジで?
オレには http://www.microsoft.com/typography/otls.mspx の旧URLのように見えるんだが。
964デフォルトの名無しさん:04/12/26 15:55:14
>>962
「OTLS」「Microsoft」でググるとトップに出てくるURLなんだけど、
それが機密情報名わけ?ww
965デフォルトの名無しさん:04/12/26 16:03:50
もう、おばかさん多いな...
966デフォルトの名無しさん:04/12/26 16:36:07
やばい情報なら誰にでも見れるところに置くのはまずいと思うが…
967デフォルトの名無しさん:04/12/26 16:37:15
どのみちURL出すとまずいような場合は最低でもbasic認証しておかないと法的根拠はないんじゃないか?
968デフォルトの名無しさん:04/12/26 17:20:58
>>967
なんでBasic認証限定なの?
969デフォルトの名無しさん:04/12/26 17:22:34
君以外は誰も限定なんてしてないよ。
970デフォルトの名無しさん:04/12/26 18:08:58
おまいら釣られすぎだぞ!
971デフォルトの名無しさん:04/12/26 21:01:48
>>968
最低でもってかいてあるじゃん
972デフォルトの名無しさん:04/12/26 21:02:55
>970
そう。962は俺が書いたんだけど、君だけが正解。
973デフォルトの名無しさん:04/12/26 21:03:21
>962=>970
自演決定。
974デフォルトの名無しさん:04/12/26 21:04:21
>964
契約書は読んだ?したっぱPGはそんなの気にしねーのか。
機密とかまったく関係ないよ。
975デフォルトの名無しさん:04/12/26 21:23:28
974よ、これか?
ttp://japan.internet.com/busnews/20030423/11.html
たぶん、一番したの記述っぽいがよーわからん
976デフォルトの名無しさん:04/12/26 21:27:15
>>974
953の書き込みがやばいやばいって言うから、
950のOTLSって単語に色つけてぐぐれば
契約云々関係ない第三者でもすぐ分かるぞってことでは。
977デフォルトの名無しさん:04/12/26 22:22:30
ネタにまじレスしてる場合か?
もうすぐ正月だぞ
978デフォルトの名無しさん:04/12/26 22:50:19
>>977
もちつき、忘れるなよ
     /\⌒ヽペタン
   /  /⌒)ノ ペタン
  ∧_∧ \ (( ∧_∧
 (; ´Д`))' ))(・∀・ ;)
 /  ⌒ノ ( ⌒ヽ⊂⌒ヽ
.(O   ノ ) ̄ ̄ ̄()__   )
 )_)_) (;;;;;;;;;;;;;;;;;;;)(_(
979デフォルトの名無しさん:04/12/26 23:10:32
みんな、コード書いてる場合じゃないぞ!

    |___|⌒ヽペタン
  .∩   ||  ⌒)ノペタン∩
   | | /二つ  ((.⊂ニヽ| |
  (,,  ゚)|    )) (゚Д゚,,)
  ノ  つ  ( ⌒ヽ ⊂,,ヽ
  O   ノ   ) ̄ ̄ ̄((_ ( )O
 (/ (/    (;;;;;;;;;;;;;;;;;;;)∪ヽ)
980デフォルトの名無しさん:04/12/27 02:20:21
ネットにはいつもいるMr.守秘義務君が大騒ぎしただけだろ
981デフォルトの名無しさん:04/12/27 02:51:10
ListViewCtrlのソートに関する質問です。
ソートを実行するコールバック関数で返した結果はすぐにリストに反映されるのでしょうか?

リストアイテムのユーザデータにそのアイテムが登録された時のインデックス番号が格納されてあり、
コールバックに渡される2つのユーザデータから該当するカラムのテキストを取得して比較を行ってます。
こういう実装方法だとコールバックが返した結果がすぐにリストに反映されてしまうと
比較を行うたびに予め設定してあったインデックス番号が狂ってしまいますよね?

正しくソートを実行するためにはソートを実行する前にソートを行うテキストを
ユーザデータとして設定するような事を行わなくてはならないのでしょうか?
コールバック内でListView_FindItemするんでしょうかね。
みなさんはどう実装してますか?
982デフォルトの名無しさん:04/12/27 03:00:11
意図ようがわからんが、
最初にやることはデバッガで追う事。
まあ回答してやってもいいが、
例えば俺がサイコロ振って適当に「反映されます」と回答したとして、
それを信用するかね?
まあするんだろうね。
確率は1/2だから悪くはないわな。

というわけで、
最初のは「反映されません」

2番目は「行う必要はありません」
つーか、なんのためのコールバックかよく考えてみ?

最後のは「実装したことはありません」
これでどうだ
983デフォルトの名無しさん:04/12/27 03:01:49
1こ抜けてたが
>狂ってしまいますよね?
に対しては、
「はいそうですね。」

以上だ。
984デフォルトの名無しさん:04/12/27 03:06:14
知らないなら何も書かなくていいんですよ
985デフォルトの名無しさん:04/12/27 03:07:14
残念ながら1/2の確率で知ってるんだが
986デフォルトの名無しさん:04/12/27 03:11:49
ボキャブラリが許せばサイコロの面数によって微妙な回答も可能だね
987デフォルトの名無しさん:04/12/27 03:13:06
では100面ダイスをどうぞ
988デフォルトの名無しさん:04/12/27 03:14:06
OTLSってネタかと思ったよ。

だって、OTL ですよ。
989981:04/12/27 03:16:41
>>982
ええとですねデバッグして検証はしたんです。
コールバック内で取得したテキストとソートを実行する前に予め設定したテキストを比較してみた所
まるっきり一致しませんでした。

で、ネットでいろいろなサンプルを漁ってたんですがその中に前者の方法でテキストを取得している
サンプルが幾つかあったので混乱したんです。
何らかのフラグの設定で反映されたりされなかったりするんかなとか思ったりもしたので
経験者の意見を聞きたかったわけです。

いろいろ試した結果最終的にはユーザデータをキーにListView_FindItemで検索したインデックス番号で
テキストを取得するようにしました。効率悪そうですが。
990デフォルトの名無しさん:04/12/27 03:19:45
方法わかんないならソートをListViewの外でやって
後で一気にViewに反映した方が後々良いと思うんだが
目的がListViewのエキスパートになりたいならともかく
991981:04/12/27 03:24:57
>>990
その方法は効率良さそうですね。盲点でした。
何が何でも中でソートする必要なんてないですもんね。
助言ありがとうございました。

>>982
そういえばお礼言ってませんでした。
大変親切な助言ありがとうございました。
992デフォルトの名無しさん:04/12/27 05:09:04
>991
>その方法は効率良さそうですね。盲点でした。

えー
993デフォルトの名無しさん:04/12/27 08:15:46
>>981
そこで仮想リストビューですよ
994デフォルトの名無しさん:04/12/27 08:18:56
文字列検索できるAPIとかってありますか?教えてください。お願いします
995デフォルトの名無しさん:04/12/27 09:07:07
>>989
私は登録順をユーザデータとして設定しているよ。
ソートのときはそれを利用している。
高々1000件くらいのリストならそれで充分ことが足りている。
996デフォルトの名無しさん:04/12/27 09:57:24
>>994
そんなAPIはない
997デフォルトの名無しさん:04/12/27 10:11:23
↓次スレよろしく。 ちなみに、plalaは建てられませんでした。orz
998デフォルトの名無しさん:04/12/27 10:15:31
999デフォルトの名無しさん:04/12/27 10:25:49
999
1000デフォルトの名無しさん:04/12/27 10:26:45
 
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。