Win32API質問箱 Build ..
39:デフォルトの名無しさん
07/05/13 15:38:17
>>37-38
エクスプローラでそのネットワークフォルダにtext.txtをコピーしたんですが
書き方的には↓であっていますよね?
\\グループ名\コンピュータ名\フォルダ名\ファイル名
40:デフォルトの名無しさん
07/05/13 15:40:22
\\コンピュータ名\フォルダ名\ファイル名
41:デフォルトの名無しさん
07/05/13 15:41:26
>>39
グループ名はいらねんじゃねーか?
42:デフォルトの名無しさん
07/05/13 15:45:18
>>40-41
ありがとうございます。
コンピュータ名から書けば正常にコピーできました。
43:デフォルトの名無しさん
07/05/13 16:19:18
>>35
WinMainの第4引数がSW_SHOWMAXIMIZEDだったら
SW_SHOWNORMALに置き換える。
44:デフォルトの名無しさん
07/05/13 16:45:03
>>42
マイネットワークから目的のコンピュータの目的のファイルが有るフォルダ開いてみりゃパスなんて一目瞭然なんだが
なぜそれを間違えれるのか・・・
45:デフォルトの名無しさん
07/05/13 16:58:50
EnumDisplayDevicesなのですが、
日本語版と英語版で引数の型が違います。。。
URLリンク(msdn.microsoft.com)
URLリンク(msdn2.microsoft.com)
いったいどちらを信用すればいいのでしょうか?
46:デフォルトの名無しさん
07/05/13 16:59:49
ヘッダ
47:デフォルトの名無しさん
07/05/13 17:08:23
>>45
日本語版の説明の「現在使われていません」の現在は2007年じゃないぞ。
たぶん2000年頃の話。
48:デフォルトの名無しさん
07/05/13 17:18:27
日本語版ってメンテされてないの?
49:デフォルトの名無しさん
07/05/13 17:21:29
こういう資料に日付も入れないで「現在」って書くのは微妙だな。
Wikipediaなんかもものすごく時代遅れな記述が堂々と「現在」とか書かれてたりするし。
見つけ次第直してるけど
50:デフォルトの名無しさん
07/05/13 17:55:15
\\?\c:\hoge\hoge
や
\\.\c:\hoge\hoge
というのはどういう意味でしょう?
51:デフォルトの名無しさん
07/05/13 18:02:23
それってWin32API関係あるのか?
52:デフォルトの名無しさん
07/05/13 18:02:29
上はパス名の解析を無効にする
下は「このコンピュータ」
53:デフォルトの名無しさん
07/05/13 18:11:22
>>46-49
どうもありがとうございます。
このAPI、内部で「マイナーバージョンアップ」しているみたいですね。
VirtualPC上のWin98では最初の引数に非NULLを与えるだけで落ちます。
使うなってことか、もしくはOSの種類によって切り替えろってことなんでしょうか……(^^;
54:デフォルトの名無しさん
07/05/13 18:16:18
切り替えるしかないだろうね
実行ファイルに互換モードが適用されたりするとさらにカオス
55:デフォルトの名無しさん
07/05/13 18:23:05
>非NULLを与えるだけで落ちます。
ワロタw
9x対応超がんがれ
56:デフォルトの名無しさん
07/05/13 19:39:13
>>43
有難うございます。
試してみますね
57:デフォルトの名無しさん
07/05/13 19:46:09
モニタの電源を切るを作動させるAPIがあった教えて下さい
任意のタイミングでモニタを省電力モードにさせたいです
よろしくお願いします
58:デフォルトの名無しさん
07/05/13 20:33:51
SC_MONITORPOWER
59:57
07/05/13 21:05:54
>>58
出来ました
ありがとうございました
60:デフォルトの名無しさん
07/05/13 22:37:05
GDI+を使おうとしたのですが、
gdiplusimaging.h(67) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
gdiplusimaging.h(67) : error C2440: '初期化中' : 'const char [37]' から 'int' に変換できません。
こんな感じのエラーが121も発生します。
なぜですか?
61:デフォルトの名無しさん
07/05/13 22:42:02
<gdiplus.h>より先に<windows.h>をWIN32_LEAN_AND_MEANなしでインクルードしている?
62:デフォルトの名無しさん
07/05/13 23:06:47
>>61
助かりました。ありがとうございます。
気がつきませんでした。
63:デフォルトの名無しさん
07/05/15 02:35:36
mciSendStringで、1回のプログラムで
複数のmidを流す場合、どうすればいいでしょうか。
open hoge.mid → play hoge.mid で再生し、曲を変えるときは
stop hoge.mid → close hoge.mid → open foo.mid → play foo.mid
とやっているんですけど、CPU率が上がりプログラムが動かなくなります。
戻り値は成功の0が返って来ます。
64:デフォルトの名無しさん
07/05/15 14:31:14
ウォークエリアの幅or高さが200以下になったら、
幅or高さを表示するスクロールバーが現れるウィンドウを作っています。
WM_SIZEメッセージを以下の様に処理したのですが、上手くいきません。
(何がダメなのかというと、ウィンドウサイズが変更されて、 さらにもう一回ウインドウサイズが変更された時に、
スクロールバーが1ターン遅れて適応されるのです。)
ウィンドウサイズ変更後、即スクロールバーが現れたり消えたりするためには、
どこをどう直したら良いのでしょうか??
case WM_SIZE:
{
RECT rt;
GetClientRect(hWnd,&rt);
LONG style = GetWindowLong(hWnd,GWL_STYLE);
if(rt.right <= 200)
style |= WS_HSCROLL;
else
style &= ~WS_HSCROLL;
if(rt.bottom <=200)
style |= WS_VSCROLL;
else
style &= ~WS_VSCROLL;
SetWindowLong(hWnd,GWL_STYLE,style);
}
return 0;
65:デフォルトの名無しさん
07/05/15 14:38:24
>>64
WM_SIZING, WM_GETMINMAXINFOとかかな?
66:デフォルトの名無しさん
07/05/15 14:39:22
>>64
RedrawWindow
67:デフォルトの名無しさん
07/05/15 14:44:05
>>64
URLリンク(msdn2.microsoft.com)
>if you change any of the frame styles, you must call SetWindowPos
>with the SWP_FRAMECHANGED flag for the cache to be updated properly.
68:デフォルトの名無しさん
07/05/15 14:51:44
>ウォークエリアの幅or高さが200以下になったら、
 ̄ ̄ ̄ ̄ ̄ ̄
通路?
69:デフォルトの名無しさん
07/05/15 14:53:09
ワロタw
ワークエリアだな。
70:64
07/05/15 15:59:24
お〜、ちゃんとできましたデス♪
アリガトウございました m(。−_−。)m
>>68 >>69
あはは〜、間違えました^^;)
71:デフォルトの名無しさん
07/05/16 01:31:03
質問!
別のアプリの中のdatagridviewの要素を抜き出すにはどうすればいいの?
listviewならLVM_GETITEMだけど、これでは無理でした
72:デフォルトの名無しさん
07/05/16 02:04:43
MCIとかMCIWndとかって、WIN32らしからぬ野暮ったさっていうか、洗練されてないオールドタイプって感じなんだけど
関数とか引数とか・・ なんでなんでしょ?
なんか歴史と関係あるの?WINSOCKSみたいな
73:デフォルトの名無しさん
07/05/16 02:16:16
買収・合併
74:デフォルトの名無しさん
07/05/16 07:19:56
まるで、win32apiが洗練されてるかのような・・・w
75:デフォルトの名無しさん
07/05/16 08:27:15
普通のAPIがスイッチ式だとしたらMCIは音声認識だからな。
高度なんだかアナログなんだか
76:デフォルトの名無しさん
07/05/16 16:03:30
スクリプトに組み込むには使いやすいんだよね‥‥>MCI
77:デフォルトの名無しさん
07/05/16 19:33:08
ショートカットファイルをその内容にしたがって正しく起動する
簡単な方法ってあるのでしょうか?
お願いします。
78:デフォルトの名無しさん
07/05/16 19:37:48
ダブルクリックする
79:デフォルトの名無しさん
07/05/16 20:58:40
>>77
ShellExecute
80:デフォルトの名無しさん
07/05/16 21:27:43
>>77
くりぷろ
81:77
07/05/16 22:57:11
ShellExecuteでできました。
ありがとうございます。
82:デフォルトの名無しさん
07/05/17 00:05:29
ぐあ・・・緑クロスなんて出るのか。めっちゃ欲しいぜ
83:デフォルトの名無しさん
07/05/17 00:11:30
くりぺろ
ぺたぺた
84:デフォルトの名無しさん
07/05/17 18:53:46
WM_CREATEにおいて、char配列の中身を全てエディットコントロールに
表示させているのですが、何故かスクロールバーが自動で下までスクロールされません。
//char配列の表示
SendMessage(hLog_s, EM_SETSEL, 0, -1);
SendMessage(hLog_s, EM_SETSEL, -1, -1);
for(i=0; i<10; i++){
if(lstrcmp(logs[num][i], "*")!=0){
SendMessage(hLog_s, EM_REPLACESEL, 0, (LPARAM)logs[num][i]);
SendMessage(hLog_s, EM_REPLACESEL, 0, (LPARAM)"\r\n");
}
}
return 0;
しかし、ボタンを押したときにこれと同じ動作をさせると、
スクロールバーが自動で下に移動し、最後の行が表示される状態になります。
これは何故WM_CREATEだとスクロールしないんでしょうか?
85:デフォルトの名無しさん
07/05/17 19:42:19
mciSend系で、メモリからロードというのは使えないですよね?
86:デフォルトの名無しさん
07/05/17 21:01:48
>>84
ボタン時はEM_SCROLLCARETが走るんじゃない?
87:デフォルトの名無しさん
07/05/17 23:37:32
>>86
WM_CREATE時にスクロールさせることは不可能なのでしょうか?
SendMessage(hLog_s, EM_SCROLLCARET, 0, 0);を追加してみても結果は変わりませんでした。
88:デフォルトの名無しさん
07/05/18 00:17:34
>>87
なぜ、WM_CREATE時に拘る?
WM_CREATE後半にRDW_INTERNALPAINTとRedrawWindowを組み合わせて
WM_PAINTを呼んだタイミングでいいんじゃね?
GetUpdateRectで更新領域の有無を判定すれば、
簡単なOnInitialUpdate
89:デフォルトの名無しさん
07/05/18 00:35:59
>>88
WM_CREATE時に拘るわけではありませんが、
そん時に処理するのが一番面倒じゃなくていいかなと・・・。
というよりも、ウィンドウを作成した直後に1度だけ行えばいい処理なので、
WM_PAINT内で処理するのもどうなのでしょうか・・・
90:デフォルトの名無しさん
07/05/18 00:44:16
EM_LINESCROLLで無理やりスクロールさせることで解決しました。
しかし、何でWM_CREATE時に限って出来ないのかは謎です・・・。
91: ◆3.JjF77I26
07/05/18 01:05:14
>>90
WM_CREATEはウィンドウを生成する前に送られてくる
92:デフォルトの名無しさん
07/05/18 02:06:50
>>91
ウィンドウを生成する前にですか。
なら、WM_CREATE時にCreateWindow()で色々作るってのも
何か変な感じがしますけど、まぁそういうものだ、で納得する事にします(´・ω・`)
93:デフォルトの名無しさん
07/05/18 03:37:59
WM_IME_COMPOSITIONにおいて、if(GCS_COMPSTR & lp)で
現在の編集文字列が習得された、または最新化された時に処理を行えると思うのですが、
これは変換中の文字をBackSpaceで削っていって、最後の1文字を消したときは拾えないですよね?
変換中の文字を削っていって最後の1文字を消した時に処理を行いたいのですが、
どうすればいいでしょうか?
94:デフォルトの名無しさん
07/05/18 04:30:58
MSNのメッセンジャーとかで、ウィンドウを最小化している時にメッセージを受け取ったら
タスクバーのところがオレンジ色にピコピコして知らせてくれると思うのですが、
それはどのようにしているのでしょうか?
95:デフォルトの名無しさん
07/05/18 04:47:57
つピコピコハンマー
96:デフォルトの名無しさん
07/05/18 05:07:13
とりあえずFlashWindowEx()だと色が微妙なのですが・・・
あと、ミリ秒指定ではなく、アクティブになるまで点滅させたいです
97:デフォルトの名無しさん
07/05/18 05:15:54
>>96
すみません、どうやらタスクバーの方はオレンジ色になるようですね。
ミリ秒とカウント設定しても、指定した秒数の最後のほうの一瞬しか色が変化しないのですが
これは何でなんですか?
98:デフォルトの名無しさん
07/05/18 08:08:24
>>92
わかるわかる。
MFCはOnInitialUpdateがあるから、
そんなこと意識せずにそこで記述するが、
OnInitialUpdateの互換(?)処理が>>88だったら、
WM_PAINTは不恰好だよな。
99:デフォルトの名無しさん
07/05/18 08:11:20
>>96−97
FLASHWINFO構造体の中身あげ
100:デフォルトの名無しさん
07/05/18 10:02:35
manifestファイルつきのWin32APIオンリーの簡単なテストプログラムを作ったのですが、
Aという名前のフォルダーでは正しく実行できるのに、Bという名前のフォルダーでは実行できません。
Process Monitorで調べてみたら、Aではmanifestを読み込んでいるのに、Bでは駄目。
で、Bのフォルダー名をCにリネームしたらmanifest読み込みました。
逆にAをBにリネームしたら、今度は駄目になった。
なので、Bという名前のフォルダーに何か制限が掛かっているような気もするのですが、
これって、どのあたりのAPIが絡んでいるのでしょうか?
101:デフォルトの名無しさん
07/05/18 10:16:21
>>91
嘘つくな
URLリンク(msdn2.microsoft.com)
>The window procedure of the new window receives this message after the window is created, but before the window becomes visible.
102:デフォルトの名無しさん
07/05/18 10:54:26
僕ハッカー
103:デフォルトの名無しさん
07/05/18 12:14:56
僕バッカー!
104:デフォルトの名無しさん
07/05/18 13:13:23
バカバッカー!
105:デフォルトの名無しさん
07/05/18 15:17:45
>>99
info.dwFlagsをFLASHW_ALLからFLASHW_TRAYに変更したら正常に動作しました。
しかし、点滅のタイミングというか、点滅の間隔というか、不規則に点滅します。
なんか0.5秒くらい点滅したり、ほんと一瞬だけ色が変わったり・・・
何故でしょうか?一応FLASHWINFOの中身をあげておきます。
info.cvSize = sizeof(info);
info.hwnd = hwnd;
info.dwFlags = FLASHW_TRAY | FLASHW_TIMERNOFG;
info.uCount = 0;
info.dwTimeout = 500;
106:デフォルトの名無しさん
07/05/18 19:01:21
>>105
FLASHW_TIMERNOFGをFLASHW_TIMER にしてみるとかとかとかとか
107:デフォルトの名無しさん
07/05/18 19:11:39
>>106
FLASHW_TIMERにしてもやはり、点滅の間隔がおかしいです。
なんかもの凄く気持ち悪いのですが・・・(´・ω・`)
108:デフォルトの名無しさん
07/05/18 19:37:17
作成したアプリケーションを他のパソコンで起動させたところ、
アプリケーションの構成が正しくないと表示され起動されませんでした。
自分のパソコンでは正常に動作するのですが・・・何が原因なのでしょうか?
109:デフォルトの名無しさん
07/05/18 19:37:36
>>107
Exじゃないほうは使ってみた?
110:デフォルトの名無しさん
07/05/18 19:45:37
>>109
ウィンドウがアクティブになるまで点滅させたいので、Exじゃないといけないような・・・。
111:デフォルトの名無しさん
07/05/18 19:46:32
>>108
DLLが無いのでは
もしくは、デバッグビルドを渡してたり?
112:デフォルトの名無しさん
07/05/18 19:52:55
>>111
それはデバッグなしで実行したときにDebugフォルダに出来るexeファイルの事ですか?
まさにそれなんですが、それは実行ファイルとは違うのでしょうか?
113:デフォルトの名無しさん
07/05/18 19:53:17
>>108
ランタイムDLLのバージョン違いだな
114:デフォルトの名無しさん
07/05/18 20:01:10
>>112
ビルドに何使ってるかわからんが、VC++とかだと
DebugとReleaseを切り替えられる。
Debugは開発環境で動かすものだ。
115:デフォルトの名無しさん
07/05/18 20:05:15
>>108
つまり、他のパソコンにDLLを入れないといけないという事ですか・・・
あまりそういうのは詳しくないので申し訳ないのですが、具体的にどうすればいいのでしょうか?
>>114
Microsoft Visual Studio 2005です。一応Microsoft Visual Studio 2005がインストールされている
他のパソコンでは正常に動作するのを確認できています。
116:デフォルトの名無しさん
07/05/18 20:07:40
>>114
Releaseにしてビルドしたらエラーが102個も出てしまいました・・・。
そういう事なのでしょうか・・・。・゚・(ノД`)・゚・。
117:デフォルトの名無しさん
07/05/18 20:09:07
VS2005を使ってると予想
118:デフォルトの名無しさん
07/05/18 20:17:24
>>116
プロジェクトのプロパティでいろいろ設定しなかったか?
あれはDebug、Release、共通、の3通りで設定できるんで
Debugだけ追加でライブラリ指定してたりするとはまる
119:デフォルトの名無しさん
07/05/18 20:26:06
そのあたりではまる人間はVC初心者スレ行きだ
120:デフォルトの名無しさん
07/05/18 20:49:45
>>115
「プロジェクト」→「プロパティ」→「構成プロパティ」→「C/C++」→「コード生成」
の
「ランタイム ライブラリ」を
「マルチスレッド デバッグ DLL (/MDd)」なら「マルチスレッド デバッグ (/MTd)」に
「マルチスレッド DLL (/MD)」なら「マルチスレッド (/MT)」にしてビルド
121:デフォルトの名無しさん
07/05/18 21:04:14
#pragma commentで指定する俺は勝ち組
122:デフォルトの名無しさん
07/05/18 21:51:49
>>120をやるほかに、ランタイムを用意する方法もある。
VC++ 2005ならランタイムは別途インストールするか、
マニフェスト書いてEXEと同梱する(ググれば何件か例が見つかる)
SP1を当てているかどうかで別ファイルになるんで要注意(上がSP1用)
URLリンク(www.microsoft.com)
URLリンク(www.microsoft.com)
123:デフォルトの名無しさん
07/05/18 21:55:25
BCBでVCLのスタティックリンクし忘れはしないけどbccのランタイムリンクし忘れで他PCで動かないとかはよくやる/(^o^)\
124:デフォルトの名無しさん
07/05/18 21:58:59
デバッグ用のDLLは配布禁止(ヘルプのどこかに書いてある)なので注意!!
125:デフォルトの名無しさん
07/05/18 22:21:46
ごめんなさい、ご飯を食べてました。
>>118のように、Releaseでリンカ追加したらエラーはなくなり、
他のパソコンでも無事起動させることが出来ました。
ありがとうございます。
でも、他のパソコンでやると何故か変な動作したりするので
これからそれを直そうと思います。Vistaのせいかな・・・。
126:デフォルトの名無しさん
07/05/18 22:25:09
なんか流れてしまってますが、>>105をよろしくお願いします。
気持ち悪いです。
127:デフォルトの名無しさん
07/05/18 22:45:43
>>126
メッセージループが回らないと点滅しないな、これ。
内部的にWM_TIMER使ってるのかもしれん。
128:デフォルトの名無しさん
07/05/18 22:49:33
>>100
manifestを読み込んでいるかどうかはどうやって判断した?
129:デフォルトの名無しさん
07/05/19 00:30:51
>>100
OSは?manifestはリソース埋め込み?
Vistaだと初回起動時に外部manifestが無い場合は次からは読み込まれないようだ。
URLリンク(sakura-editor.sourceforge.net)
一度XP互換モードにすれば解除される。
130:デフォルトの名無しさん
07/05/19 02:49:08
>>128
SysinternalsのProcess Monitorです。
>>129
それだ!!! 助かりました、ありがとうございます。
この挙動は仕様なのかな。ってことは、Superfetch絡みですかねぇ。
131:デフォルトの名無しさん
07/05/19 13:45:36
おぉ久々にためになる情報だ
知らないとハマるなこりゃ
132:デフォルトの名無しさん
07/05/19 15:13:23
知ってる人は知っていると思うが、
mt.exe(Manifest Tool)を使えば、以前にVS6等で作ったexeに、再コンパイル・リンク無しで
mnifestを埋め込むことができるよ。
133:デフォルトの名無しさん
07/05/19 16:50:25
manifestなんてマンドクセ
134:デフォルトの名無しさん
07/05/19 23:11:14
SendMessage(hLog, EM_LINELENGTH, (WPARAM)3, 0);
EM_LINELENGTHって、第3引数番目の行までのバイト数を取得するんですよね?
上の場合だと、エディットコントロールhLogの3行目までのバイト数を返すんだと思うのですが、
第3引数の数字をいくつに変えても同じ数値が戻ってきます。
これは何故なのですか?
135:デフォルトの名無しさん
07/05/19 23:16:19
>>134
指定した文字インデックスを含む行の文字数を返す。
136:デフォルトの名無しさん
07/05/19 23:29:36
>>135
あるサイトの説明によると、
複数行TextBoxにおいて、指定した行インデックスの一つ前の行までのバイト数を取得する
らしいんですけど、行インデックスとは、例えば第3引数に3を指定した場合、
3行目の先頭が行インデックスでいいんですか?
137:デフォルトの名無しさん
07/05/19 23:33:42
その説明は間違っている。今すぐ忘れなさい。
138:デフォルトの名無しさん
07/05/19 23:38:17
>>137
Σ(TдT)えぇぇぇぇ!?
では、指定した行までのバイト数を取得するものはないのでしょうか?
EM_GETLINEで1行ずつバイト数足していくしか方法ないですか?
139:デフォルトの名無しさん
07/05/20 00:22:48
>>138
つ EM_LINEINDEX
指定行の最初の文字の文字インデックスを返す。
140:デフォルトの名無しさん
07/05/20 00:25:27
どうやらEM_LINEINDEXというのがあるようですね。そのサイトに載ってるのが全部だと思ってました・・・。
とりあえずは解決しました。しかし、エディットコントロール内にどんどん書き足していき、
最大行数を超えると、先頭の行から消していくわけですが、出力する度に
エディットコントロールの最上部に移動し、また最下部に戻すためちらついてしまいます。
SendMessage(hLog, WM_SETREDRAW, FALSE, 0);とかしてみたのですが、
全く変わりませんでした。このちらつきを抑えたいのですが、何かいい方法はないでしょうか?
141:デフォルトの名無しさん
07/05/20 00:29:39
>>139
ありがとうございます。微妙にすれ違いになったようですね(´・ω・`)
142:デフォルトの名無しさん
07/05/20 00:30:53
そんな変なサイト読まないで、マイクロソフトのドキュメント見ろよ。
143:デフォルトの名無しさん
07/05/20 00:42:06
>>142
MSDNがなかなか・・・なかなかで。
どうやらちらつく時と、そうでない時があるようです。
また、時々画面に白い横線が入ったりしてて気持ち悪いです。
どのくらい気持ち悪いかというと亜jsふぃじゃ;jfヵfdぁじふぇくらいです。
144:デフォルトの名無しさん
07/05/20 01:38:20
意味不明
145:デフォルトの名無しさん
07/05/20 01:58:14
俺最強
146:デフォルトの名無しさん
07/05/20 02:01:38
俺西京
147:デフォルトの名無しさん
07/05/20 08:38:34
>>143
オフライン版は使ったことある?>>5
148:デフォルトの名無しさん
07/05/20 10:38:13
>>140
WM_SETREDRAWが駄目なら、LockWindowUpdateはどう?
使った事無いけど。
149:デフォルトの名無しさん
07/05/20 12:07:05
0→"ERROR_SUCCESS"
みたいにエラーから名前を取得する機構は無いですかね。
150:デフォルトの名無しさん
07/05/20 12:16:39
FORMAT_MESSAGE_FROM_SYSTEM
151:デフォルトの名無しさん
07/05/20 12:54:43
>>71をどなたかお願いします
152:デフォルトの名無しさん
07/05/20 13:24:56
一般に無理
153:デフォルトの名無しさん
07/05/20 14:05:42
>151
DataGridViewってdotNETの?それならそういうスレに行ったほうがいいと思う。
154:デフォルトの名無しさん
07/05/20 14:13:35
スレ違いかもしれないのですが、どこに書いたらいいのか分からないのでここで質問させてください。
記憶ディスクにセクタ単位でアクセスしたいのですが、
WindowsのAPIだけでそういうことはできるんでしょうか?
FAT32でもNTFSでもかまいません。方法があったら教えてください。
155:デフォルトの名無しさん
07/05/20 14:38:44
NTならCreateFileで\\.\c:\のようにドライブを指定すれば、
あとはRead/WriteFileでいける。
Cとかならバックスラッシュのエスケープに気を付けろ。
9xならvwin32を叩く。
URLリンク(web.archive.org)
俺がやったときには95 OSR2以前と以降で違う方法をとらないとうまくいかなかった。
156:デフォルトの名無しさん
07/05/20 14:45:13
SP2から禁止されなかったっけ
157:154
07/05/20 14:50:52
ありがとうございます。やってみます。
158:デフォルトの名無しさん
07/05/20 14:57:32
>>155
URLリンク(homepage3.nifty.com)
↑ソース付きなので参考になるかも。
159:158
07/05/20 14:58:17
>>155じゃなくて>>154だた。
160:デフォルトの名無しさん
07/05/20 16:01:27
>148
LockWindowUpdateは解除したときに、デスクトップ全部の再描画が発生するよ。
161:デフォルトの名無しさん
07/05/20 16:15:10
>>149
無理
162:デフォルトの名無しさん
07/05/20 18:55:32
winerror.hをreadしてparseしてだな(ry
163:デフォルトの名無しさん
07/05/20 19:47:21
タスクトレイのアイコンを右クリックして出るメニュー(TrackPopupMenu)の
メニューハンドルを取得するにはどうしたらいいでしょうか?
164:デフォルトの名無しさん
07/05/20 19:49:24
タスクトレイのアイコンを右クリックして出るメニューは自分で作るものだろ?
165:163
07/05/20 19:50:25
すみません、他のアプリです。
166:デフォルトの名無しさん
07/05/20 19:54:39
>>163
TrackPopupMenuをAPIフックするとか
167:デフォルトの名無しさん
07/05/20 19:59:20
メニューハンドルを深追いすると、WinAPIの暗黒に飲み込まれるぞ。
168:デフォルトの名無しさん
07/05/20 20:44:37
>>166-167
マジですか!?
とりあえず深追いしない程度に頑張ってみます。
ありがとうございました。
169:デフォルトの名無しさん
07/05/20 21:22:32
ポップアップするまでハンドルって分からないこともあるんじゃ?
WM_CONTEXTMENUとかでメニュー生成してたらアウトでしょ
ずっとメニューハンドル保持し続けてたらいけるかもしれないけど
170:デフォルトの名無しさん
07/05/20 21:24:25
対象プロセスのウインドウを片っ端からモニタ。
171:デフォルトの名無しさん
07/05/21 06:08:00
>>163
popupメニューの操作で起こるActionを
外部からのトリガで実行したいとか言ってた人?
前のスレで答え出てたぞ
SendMessageで WM_COMMANDとメニュー項目のid値なげればおk
id値はspy++でも使って突き止めれば行けるんでは
172:デフォルトの名無しさん
07/05/21 07:11:51
行けたー━━(゚∀゚)━━!!!!
情報サンクス愛してる♪
173:デフォルトの名無しさん
07/05/21 08:02:08
愛されたw
174:デフォルトの名無しさん
07/05/21 16:27:54
愛されたのは俺ですが
175:デフォルトの名無しさん
07/05/21 17:18:07
>>173
誰だよw
>>174
妬くなよw
176:デフォルトの名無しさん
07/05/21 17:44:33
>>174
上げるほど愛に飢えてるのかw
177:デフォルトの名無しさん
07/05/21 17:55:57
僕愛人!
178:デフォルトの名無しさん
07/05/21 18:09:51
僕ラマンチャ!
179:デフォルトの名無しさん
07/05/21 18:24:45
(XPの)クラシックスタートメニューでコントロールパネルを展開するにしている時、
コントロールパネルのアイテムの増減が即座に反映されるようにするにはどうすればいいですか?
コントロールパネルを開いたら反映されているのですが、アイコンメニューが名前順で並べ替えしないと反映されません。
180:デフォルトの名無しさん
07/05/21 18:25:40
reboot
181:デフォルトの名無しさん
07/05/21 18:28:00
ちょw
182:デフォルトの名無しさん
07/05/21 19:15:13
なのはって頭よさそうじゃん
183:デフォルトの名無しさん
07/05/21 19:16:21
むやみにコントロールパネルに追加するんじゃありません!めっ!
184:デフォルトの名無しさん
07/05/21 21:33:41
エディットコントロールからデスクトップ等にミドルボタンでD&Dした時
ドロップした位置にファイルを作成するにはどうすればいいのでしょうか
185:デフォルトの名無しさん
07/05/21 21:54:40
そんな仕様はMSのガイドラインになかった気がする。
186:デフォルトの名無しさん
07/05/22 00:00:58
IShellFolderからGetUIObjectOfでDataObject作ってDoDragDropかいな?
187:デフォルトの名無しさん
07/05/22 01:24:30
コンソール非表示のためにmainからWinMainに切り替えたんだが、そうすると
起動時にマウスカーソルが5秒程度砂時計になったままになる
長時間砂時計になるのを防ぐいい方法があったら教えてください
188:デフォルトの名無しさん
07/05/22 02:04:24
ありがとうございました
やってみます!
189:デフォルトの名無しさん
07/05/22 03:24:19
IWebBrowser2でHTMLを表示しています。戻る・進むボタンをつけ、
それぞれのボタンの有効・無効を切り替えたいのですが、
GoBack(), GoForward()が実際に有効かどうか判定する方法が分かりません。
どうしたらよいでしょうか。
190:デフォルトの名無しさん
07/05/22 03:25:07
BCC用に作られたDLLを使いたいのですが、付属の.libファイルがVisualC++で使えません。
こういう場合って、LoadLibraryとGetProcAddressで、明示的にロードして使うしか方法が無いのでしょうか?
関数ポインタをいちいちロードしていくのは面倒なんですが・・・
BCCのように、DLLから.libファイルを作るのって無理なんですかね?
191:デフォルトの名無しさん
07/05/22 03:27:08
>>187
メインスレッドが応答しないからそうなる。
別スレッドで実行しろ。
192:デフォルトの名無しさん
07/05/22 03:43:54
>>189
ITravelLogStg
193:デフォルトの名無しさん
07/05/22 07:44:55
>>189
DWebBrowser2インターフェイスでそういうイベントを捕まえられたはず
194:デフォルトの名無しさん
07/05/22 15:12:10
32767を超えるウィンドウって・・・作れないの?
子ウィンドウ(hCWnd)内では一番底に配置してある部品の座標はright:900、bottom:40000なので、WM_CREATEの最後でMoveWindow(hCWnd,0,0,1000,41000)してある。
にも関わらず、その後に親ウィンドウからGetClientRect(hCWnd,&rt)したらrt.bottomが32767になる。
どーりでスクロールバがまともに動かない訳だ・・・
32676を超えるウィンドウってどーやって作るの?
#まさか出来ん??? って・・・秀○とか・・・そこらのテキストエディタってどーやってんだ?
#MFCか?
195:デフォルトの名無しさん
07/05/22 15:27:30
>>190
名前忘れたがフリーソフトである
要は関数名列挙した.defファイルさえあれば.libは作れるんで、それを自動化したものだと思った
で、話変わるけど、GINA差し替えても「ようこそ」画面は維持できるようにする方法ってある?
1.4までの全APIをMSGINAのスタブにしただけのDLLでもようこそ画面は解除されちゃうんで・・・
196:デフォルトの名無しさん
07/05/22 15:28:18
>>194
スクロールバーで子ウィンドウをスクロールさせる発想が間違ってる
子ウィンドウでなく描画位置をかえる
197:デフォルトの名無しさん
07/05/22 15:40:07
>>190
VCなら付属のlib.exeじゃ駄目なのか
198:デフォルトの名無しさん
07/05/22 15:45:27
>>194
スクロールバー自体が最大32767じゃなかったっけ?
199:デフォルトの名無しさん
07/05/22 15:47:14
VC++ 2005EEでWin32APIとC++でゴリゴリ書いてるんだけど、
Windowsフォームアプリケーションみたいなボタンとかの
コントロールって張れるの?
200:デフォルトの名無しさん
07/05/22 15:51:49
>>199
どういった意味で言ってるのかわからん。
コントロールをウィンドウに貼ると言うだけなら
普通にCreateWindowすればいいよん。
エディットコントロールならウィンドウクラスは"EDIT"で、WS_CHILD つけて
親ウィンドウを自分のウィンドウにして。
201:デフォルトの名無しさん
07/05/22 15:55:38
>>196
> >>194
> スクロールバーで子ウィンドウをスクロールさせる発想が間違ってる
> 子ウィンドウでなく描画位置をかえる
ちょっと書き方が悪かったか。別にhCWndをMoveWindowとかしてないよ。
ちゃんとスクロールバが付けているhCWndの親をScrollWindowExで描画位置を変えてるよ。
#汎用的に使える様に子供として乗せる独自クラスを使っている。
ただ、この方法でなくても・・・↑独自クラス化しない・・・例えば 猫の第100章 SCROLLINFO構造体 の例の
WM_SIZE:のGetClientRectでも32767を超えた値を取れないんじゃないか?
#スマソまだ試してないんだけど^^;
202:デフォルトの名無しさん
07/05/22 16:02:27
>>199
ダイアログリソース作ってコントロール配置して ::CreateDialog()。
203:デフォルトの名無しさん
07/05/22 16:02:53
>別にhCWndをMoveWindowとかしてないよ。
なのに、GetClientRectにこだわってるのは何で?
204:デフォルトの名無しさん
07/05/22 16:04:36
あと、たしかにWindows95/98/Meはウィンドウのサイズの上限は32767だけどね
205:デフォルトの名無しさん
07/05/22 16:11:23
>>201
それならウィンドウをそこまで大きくする必要は無い
>>198
メッセージとして送られる値はshortだがSCROLLINFOはintまで使える
後は掛けるなり割るなりして描画位置をかえればいい
206:デフォルトの名無しさん
07/05/22 16:16:58
>>203
> >別にhCWndをMoveWindowとかしてないよ。
>
> なのに、GetClientRectにこだわってるのは何で?
ん?? あれぇ、漏れなんか勘違いしてるかぁ?
描画位置を変えるって、所詮は自分のクライアント領域を上下とか左右にスライドさせている
感覚なのだが…ちゃうんけ?
だからクライアント領域の最大値を最初に SCROLLINFO siとかに設定してスクロールバの位置と表示
されるクライアント領域の位置のつじつまが合う様にしていると思っているのだが…
207:デフォルトの名無しさん
07/05/22 16:30:35
仮に1000行のテキストがあったとする
クライアントには10行表示されたとして
そこから50行スクロールさせる
描画位置は51行、そこから60行までの10行を表示させればいい
1000行分のウィンドウサイズはいらない
208:デフォルトの名無しさん
07/05/22 16:36:33
クライアントエリアの左上は常に 0, 0 なので
どんなにスクロールさせようとGetClientRect の値は
0, 0 を起点にした大きさでしか取得できんよ。
209:デフォルトの名無しさん
07/05/22 17:05:39
>>207
いや、ちょっと待ってくれ。
確かに猫を例にしたのはちょっと悪かったが…
単に文章だけなら、そー言った方法も考えられるんだけど、実際にはクライアント領域には
さまざまなコントロール(ボタンやら)も載ってる訳で…
それらがスクロールバの動きに合わせて見え隠れするってのは、文字列みたいには
ゆかんだろう?
>>208
問題にしているのはrigth/bottomな訳だが…
どこかに良い例文はないかね? orz
210:デフォルトの名無しさん
07/05/22 17:10:09
>>209
>>207は仮の話しだしヒント
コントロールを移動させろ
211:デフォルトの名無しさん
07/05/22 17:11:31
>>209
色々貼り付けられている親のクライアント領域に 貼り付けられた子で
「子のウインドウrectを取って 親へScreenToClient する」 なら意味ありそうだが、
「子のクライアントrect 取って」 もしゃーないんじゃないか? ということを >>208 は言っている。
212:デフォルトの名無しさん
07/05/22 17:14:47
>>209
文字もコントロールも変わらんよ
213:デフォルトの名無しさん
07/05/22 17:25:47
>>209
OSを書き換える気がないなら、ウィンドウズに頼らずに自前で位置を管理して
見える所のコントロール(+α、tab等でフォーカスが次に移る可能性のあるもの)
だけ正しい位置になるようにすればOK。
あとは適当に表示されない位置に移動or非表示に。
ボタン等コントロールらしきものなどが配置された広大な領域を扱いたい
というだけなら、html ダイアログを作るという手もある。
214:デフォルトの名無しさん
07/05/22 17:35:11
フォームビューみたいなことやりたいのかな。
そもそも32767までしか作れないというのはどうやったの?
普通に32767超えられるけど。
215:デフォルトの名無しさん
07/05/22 17:42:20
Sleep()中にマウスカーソルが砂時計になるのですが、
これを矢印のままにしたいです。どうすればできますか?
MFCはできれば使いたくありません。
216:デフォルトの名無しさん
07/05/22 17:50:06
GUIスレッドでSleepすんな
217:デフォルトの名無しさん
07/05/22 17:50:08
試してないが
WM_SETCURSOR
で何とかならんか?
218:デフォルトの名無しさん
07/05/22 17:50:17
MakeSureDirectoryPathExistsって、PCSTRが引数で、
Unicodeビルドするとコンパイルが通らないんですけど、
この関数ってUnicodeのときは使えないものなんでしょうか?
219:デフォルトの名無しさん
07/05/22 17:53:07
あ、メインスレッドとめちゃってる訳ね
220:デフォルトの名無しさん
07/05/22 17:56:39
>>214
高さ、幅サイズが32767を超えられるのか?
72dpiで455インチ(1155.7センチ)、96dpiで341インチ(866.14センチ)かー
221:デフォルトの名無しさん
07/05/22 17:59:26 BE:31057128-2BP(222)
>>209
>それらがスクロールバの動きに合わせて見え隠れするってのは、文字列みたいには
同じ事だろ。
222:デフォルトの名無しさん
07/05/22 18:01:03
>>220
ああごめん、ウィンドウサイズは超えられるけど、クライアントエリアのサイズは32767止まりだったわ
223:デフォルトの名無しさん
07/05/22 18:02:15
>>218
typedef CONST CHAR* PCSTR;だったはず。
多分デバッガ用のヘルパー関数扱いだったから、
UNICODE版がないんだろうね。
224:デフォルトの名無しさん
07/05/22 18:02:37
>>218
コンパイルが通らないだけじゃわからない
必要ファイルがインクルードされてないのか
libがリンクされてないのか
WIN95を対象に開発してるのか
色々ある
225:デフォルトの名無しさん
07/05/22 18:05:27
>>223
TSTR じゃなく STR だし UNICODE版が居ないように見えるね
226:218
07/05/22 18:11:02
1 番目の引数を 'class CString' から 'const char *' に変換できません。
1 番目の引数を 'const unsigned short *' から 'const char *' に変換できません。
などと出てきます。
今までWindows2000でMBCSのままでやってたときは問題無くビルドできていたけど、
UNICODEに変更したらMakeSureDirectoryPathExistsでずらずらエラーが出ました。
UNICODEでやってる人たちって、この関数に頼ってないということなのでしょうか?
227:223
07/05/22 18:11:18
>>218
エスパー魔美な俺が一言
SHCreateDirectoryExを使え!
228:デフォルトの名無しさん
07/05/22 18:12:18
>>227
俺が・・・ってw
229:デフォルトの名無しさん
07/05/22 18:14:23
ヘルプに書いてあるなw
そうでなくてもPCSTRに変換すれば使えそうだけど
230:218
07/05/22 18:24:21
MakeSureDirectoryPathExistsを全部SHCreateDirectoryExに置き換えてみます。
ヘルプを呼んでみた限り、
SHCreateDirectoryEx(NULL, パス名, NULL);
という呼びかたでいいんですよね?
間違ってたら突っ込んでもらえると嬉しいです。
ありがとうございます。
231:デフォルトの名無しさん
07/05/22 19:15:59
dll側から自身を終了させる(exeは終了させない)にはどうしたらいいですか?
dll側で自身をFreeLibraryしてもexeは普通終了されないのでしょうか?
232:デフォルトの名無しさん
07/05/22 19:21:36
根本的に考え方を間違ってないか?
233:231
07/05/22 19:22:48
そうだと思います。
ご指摘お願いします。
234:デフォルトの名無しさん
07/05/22 19:25:23
>>210
ぐえっ、やっぱりそれかよ…orz
確かに説明わるい。早い話がExcelみたいな画面を作りたいわけだ。
で、もう一度よくよくExcelの動きを見ると…そーかぁ…クライアント領域みたいな物をスクロール
させてる訳では無いかも。枠の線って変化しないで中の数字(文字列)だけが移動しているだけかも(?)
#でも横のスクロールは線も移動してるよなぁ^^;
貼り付けたコントロールも移動させてる感じだね。
了解。やってみるよ。
235:デフォルトの名無しさん
07/05/22 19:49:37
>>231
良くわからん
FreeLibraryを使った関数使うのはexe側だろ
だったらexe側でFreeLibraryしたらいいんじゃないの?
236:231
07/05/22 19:55:55
exeは既存の物でdllが自作です。
exeでもFreeLibraryしてますが、それより早く不要になった時点でdllを解放したいのです。
237:デフォルトの名無しさん
07/05/22 19:58:58
>>236
どうやってLoadLibrary&GetProcAddressするの?
238:デフォルトの名無しさん
07/05/22 20:00:21
exe側でFreeLibraryしてるなら、勝手にDLL側終了しちゃダメじゃん。
えらいことになりそうな気がする。
239:231
07/05/22 20:07:18
>>237
特定の関数をエクスポートしていればそのdllをプラグインとして認識するタイプです。
>>238
そうですか。exeの実行時に使用してexeが終了するまで使わないので、
ちょっとでもメモリ消費量なり抑えられればと思ったのですが・・・。
240:デフォルトの名無しさん
07/05/22 20:19:10
>>239
おまいはDLLのなんたるかを理解していないな
241:デフォルトの名無しさん
07/05/22 20:25:12
もう使わないことが分かってるなら、exeのほうからFreeLibraryすりゃいいじゃないか。
242:デフォルトの名無しさん
07/05/22 20:37:27
>>241
dll側のソースだけでどのようにexeのほうからFreeLibraryするか分からないんですが・・・、
すみませんが教えて頂けませんか?
243:デフォルトの名無しさん
07/05/22 20:46:21
>>242
プラグインとして不要と exe 側のコードを書いた人が判断したタイミングで FreeLibrary を呼ぶ
DLL側のコードを書く人は自前で Load/Free を管理できねー
244:231
07/05/22 20:57:47
分かりました。ありがとうございました。
245:デフォルトの名無しさん
07/05/22 21:41:31
>>195
> MSGINAのスタブ
「ようこそ」画面を提供してるのはshgina.dll
246:デフォルトの名無しさん
07/05/22 21:42:41
Thread動かすタイプのDLLなら、
FreeLibraryAndExitThread
という話になるんだよねたしか。
247:デフォルトの名無しさん
07/05/22 21:49:56
そして、
FreeLibrary();
ExitThread();
すればいいのに、何でこんな関数あるのって話になるんだよねたしか。
248:デフォルトの名無しさん
07/05/22 21:54:05
FreeLibrary();
ExitThread();
すればいいのに、何でこんな関数あるの?
249:デフォルトの名無しさん
07/05/22 21:54:34
FreeLibraryを先に呼ぶと、ExitThread呼ぶコードがアンロードされて死亡だし、
ExitThreadを先に呼ぶと、FreeLibraryするチャンスがないからだよ、
ってたしか the Old New Things あたりに載ってたんだよねきっと。
250:デフォルトの名無しさん
07/05/22 22:03:45
なるほど。
251:デフォルトの名無しさん
07/05/22 23:11:53
子プロセスを特定してヌッ殺す方法を教えてください
明示的に作成したプロセスなら簡単なんだけど、コンソールアプリ起動した時の
conime.exeみたいに勝手にくっ付いてる子プロセスを特定する方法が分からない
252:デフォルトの名無しさん
07/05/22 23:33:52
exe, dll, ico, iclなどから
インデックス、サイズ(small/largeだけでなく24とか128も)を
指定してHICONを取得したいと思っています。
IExtractIcon::Extractで希望のアイコンは取得できるのですが
数が多いと動作が遅くて困ってます。
何か他に良い方法ってあるのでしょうか?
ご存知の方いたらお願いします。
253:デフォルトの名無しさん
07/05/22 23:39:52
>>252
エスパーが予想。
IExtractIcon::Extractとは関係ないところで速度低下
254:デフォルトの名無しさん
07/05/22 23:47:17
>251
自分をJobObjectに所属させれば。
255:デフォルトの名無しさん
07/05/23 05:41:22
>>252
>>253が原因でなければ、エクスプローラみたく非同期で処理。
256:デフォルトの名無しさん
07/05/23 09:52:32
SystemParametersInfoに SPI_SETICONSを渡した場合、
MSDNによれば
>システムアイコンを再ロードします。
って事らしいんですけど、
ここで言う「システムアイコン」って何なんですかね?
呼出は成功してるんですけど、今ひとつ実効性というか、
要するにこいつは何をやってくれるんだろうってのが、
はっきり解らないんですけど。
どなたかご存じないですか?
257:デフォルトの名無しさん
07/05/23 09:54:55
>>234
こんなもん、ちょっとでもコード書いてみりゃ要領がわかるよ
258:デフォルトの名無しさん
07/05/23 11:08:31
>>256
システムアイコンはメッセージボックスに表示されるアイコン。
?や!や×みたいなの
259:256
07/05/23 13:44:46
>>258
ありがとうございます!
あれですかー…
どうりで、実行してもぱっと見何も起こらないわけですね。
260:デフォルトの名無しさん
07/05/23 14:42:03
Win2kの環境で
アクティブデスクトップの背景を自分のウィンドウのクライアントに描画したいのですが
SHELLDLL_DefView SysListView32 Internet Explorer_Server DeskMover GetDesktopWindow()
あたりにWM_PAINTやWM_PRINTをいろいろオプション変えて送っても描画されません。
どうしたらアクティブデスクトップの背景を描画させる事ができますか?
261:デフォルトの名無しさん
07/05/23 14:58:29
PrintWindow API辺りならなんとかなるんじゃないかな?
262:デフォルトの名無しさん
07/05/23 16:46:27
マウスカーソルの下のツールバーボタンのコマンドIDかインデックスを取得したいのですがどうすればできますか?
263:デフォルトの名無しさん
07/05/23 17:01:44
>>262
URLリンク(msdn2.microsoft.com)
この中に答えがあるよ
264:デフォルトの名無しさん
07/05/23 22:12:09
>>261
PrintWindowはXPにはない。
それがアリならVistaとAero有効なPCを買ってこいと回答しておこう
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4965日前に更新/234 KB
担当:undef