■過去ログ置き場に戻る■
1-
前250
次250
最新50
[memo]
"9999999999_00.html#R20"
という感じで、URLの最後に "#R
レスNo
" を追加すると幸せになれます。
Win32API質問箱 Build52
251
名前:
242
:2007/04/25(水) 14:22:33
>>245-246
>>248
HWNDって、winnt.hで以下のように定義されているんですが、
int unusedをもつ構造体へのポインタではないんでしょうか?
#define DECLARE_HANDLE(name) struct name##__{int unused;}; typedef struct name##__ *name
HWNDを文字列にしたらアドレスが文字列としてとれるんだと思っているんですが、
間違えていますか?
252
名前:
デフォルトの名無しさん
:2007/04/25(水) 14:45:22
壮絶に違う
HWND ポインタの中身(大きさも含む)は謎
つか
>>248
でいいじゃん
書かないとわからん? sprintf(buf, "%p", hwnd); とすれば? ってことだ
253
名前:
デフォルトの名無しさん
:2007/04/25(水) 15:08:02
デスクトップやコントロールパネルなどの
主要なシェルフォルダを指すGUIDのリストってどこかにないでしょうか?
254
名前:
デフォルトの名無しさん
:2007/04/25(水) 15:52:11
>>253
レジストリ
255
名前:
デフォルトの名無しさん
:2007/04/25(水) 16:12:40
>>253
に便乗だけど
マイコンピュータとかコントロールパネルとかかもしれないpIDLがあるとき
CLSIDみたいな::{...}に変換する術ってないすか?
256
名前:
デフォルトの名無しさん
:2007/04/25(水) 16:38:02
SHGDN_FORPARSING
257
名前:
デフォルトの名無しさん
:2007/04/25(水) 16:45:20
>>250
ありがとうございます。調べてみます。
258
名前:
デフォルトの名無しさん
:2007/04/25(水) 17:08:15
サブクラスを使って、エディットコントロール内でEnterキーを押したら
メッセージボックスを出すようにしているのですが、その後、
エディットコントロール内で改行されてしまいます。
Enterを押したときにメッセージボックスだけを出して、
その後改行しないようにするにはどうすればいいのでしょうか?
259
名前:
242
:2007/04/25(水) 17:17:16
>>252
つきあってくれてありがとう。
sprintf(buf, "%p", hwnd);
ってやるとbufにはhwndのアドレスが入るとおもってるんですが間違いですか?
アドレスって再利用されて一意ではない気がするんです。
260
名前:
デフォルトの名無しさん
:2007/04/25(水) 17:33:12
?2BP(222)
>>259
>ってやるとbufにはhwndのアドレスが入るとおもってるんですが間違いですか?
間違いです。何のためのハンドルかと。
261
名前:
デフォルトの名無しさん
:2007/04/25(水) 17:34:45
エクスプローラもどきを作っています。
現在、アイコンをGetIconOfで取得しているのですが
こいつは該当フォルダの中のアイテムのアイコンしか取得できず、
デスクトップ自身のアイコンを取得することができません。
何か良い方法があれば教えてください。
262
名前:
228
:2007/04/25(水) 17:35:02
>229
さん、230さん
レスありがとうございました。
頂いた情報で実装出来そうです、ありがとうございます。
263
名前:
デフォルトの名無しさん
:2007/04/25(水) 17:35:24
そもそもハンドルはポインタじゃないから、中身を気にしてはならんと思うんだが。
264
名前:
242
:2007/04/25(水) 18:23:07
>>260
>>263
考えてみました。
ハンドル=構造体へのポインタと勘違いしていました。
付き合ってくれた方、ありがとう。というか、すんませんでした。
265
名前:
デフォルトの名無しさん
:2007/04/25(水) 18:28:23
?2BP(222)
ハンドルが構造体へのポインタとして実装されていたとしても、わざわざ「ハンドル」
と読んでいるのは何のためなのかと。
266
名前:
デフォルトの名無しさん
:2007/04/25(水) 18:31:33
>>258
をお願いします・・・m(_ _)m
267
名前:
デフォルトの名無しさん
:2007/04/25(水) 18:47:48
>>258
Enterキーを処理した後、EDIT本来のプロシージャに処理回してない?
268
名前:
デフォルトの名無しさん
:2007/04/25(水) 18:53:30
>>267
エディットコントロールのプロシージャの最後は
return CallWindowProc(DefInProc, hwnd, msg, wp, lp);
にしてます。これをどうすればいいのでしょうか・・・
return 0;とかにしてもエディットコントロール自体が消えてしまいます;;
269
名前:
デフォルトの名無しさん
:2007/04/25(水) 19:02:14
>>267
Enterキーの時だけ、プロシージャに処理を渡さないようにすればいい
270
名前:
デフォルトの名無しさん
:2007/04/25(水) 19:02:28
>>268
>Enterキーを処理した後
271
名前:
デフォルトの名無しさん
:2007/04/25(水) 19:07:28
SubclassProc(hwnd, msg, wparam, lparam)
{
switch(msg)
{
case WM_KEYDOWN:
if(wparam == VK_RETURN)
{
(処理)
return; // DefWindowProc()いらない
}
}
}
こういうことか?リターンキーの時だけ弾ければいいってこと?
272
名前:
258
:2007/04/25(水) 19:07:29
プロシージャはこんな感じになってます。処理の後はreturn 0;にしてますが
やはり改行されてしまいます・・・
LRESULT CALLBACK InProc(HWND hwnd , UINT msg , WPARAM wp , LPARAM lp) {
switch(msg) {
case WM_KEYDOWN:
if(wp==VK_SHIFT){
shift_flag = 1;
}else if (wp == VK_RETURN && shift_flag==0) {
MessageBox(hwnd, "ENTER", "ENTER", MB_OK);
}else if (wp == VK_RETURN && shift_flag==0) {
MessageBox(hwnd, "Shift+ENTER", "Shift+ENTER", MB_OK);
}
return 0;
case WM_KEYUP:
if(wp==VK_SHIFT){
shift_flag = 0;
}
return 0;
}
return CallWindowProc(DefInProc , hwnd , msg , wp , lp);
}
273
名前:
デフォルトの名無しさん
:2007/04/25(水) 19:15:58
WM_CHAR
274
名前:
258
:2007/04/25(水) 19:29:27
WM_CHARにしてみたら文字の入力すら出来なくなったのですが・・・;;
きっと基本的なことなのでしょうけど、何時間も止まってると泣きたくなってくる・・・
275
名前:
デフォルトの名無しさん
:2007/04/25(水) 19:31:19
そりゃそうだよなぁ。
276
名前:
デフォルトの名無しさん
:2007/04/25(水) 19:37:31
>>258
if文をよ〜く見直してみろEnterキー以外もトラップしてるぞ
277
名前:
258
:2007/04/25(水) 19:45:58
>>276
Shiftの事でしょうか?Shift全部はずして、単純にif(wp==VK_RETRUN){}にしても
やはり同じ結果になりました。これは一体何がどうあghwrへあぃtjr
278
名前:
デフォルトの名無しさん
:2007/04/25(水) 19:47:44
>>277
トラップしないキーはreturn 0;しないでデフォルトプロシージャに渡すのだ。
279
名前:
258
:2007/04/25(水) 19:54:15
>>278
こういう事でしょうか?
LRESULT CALLBACK InProc(HWND hwnd , UINT msg , WPARAM wp , LPARAM lp) {
switch(msg) {
case WM_KEYDOWN:
if (wp == VK_RETURN) {
MessageBox(hwnd, "ENTER", "ENTER", MB_OK);
return 0;
}
return CallWindowProc(DefInProc , hwnd , msg , wp , lp);
}
280
名前:
デフォルトの名無しさん
:2007/04/25(水) 19:55:15
>>279
それをWM_CHARでやる
281
名前:
デフォルトの名無しさん
:2007/04/25(水) 20:00:15
できました
みなさま本当にありがとうございました
282
名前:
258
:2007/04/25(水) 20:02:42
いえ、出来てません。文字の入力すら出来ないのですが・・・
LRESULT CALLBACK InProc(HWND hwnd , UINT msg , WPARAM wp , LPARAM lp) {
switch(msg) {
case WM_CHAR:
if (wp == VK_RETURN) {
MessageBox(hwnd, "ENTER", "ENTER", MB_OK);
return 0;
}
return CallWindowProc(DefInProc , hwnd , msg , wp , lp);
}
283
名前:
デフォルトの名無しさん
:2007/04/25(水) 20:10:21
>>258
メッセージループのところにTranslateMessage(&msg);はあるか?
// メッセージループ
MSG msg;
while(GetMessage(&msg, NULL, NULL, NULL)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
284
名前:
258
:2007/04/25(水) 20:15:53
出来ましたあああああああああ;;
caseの終わるところをreturn 0からbreak;に直したら出来ました;;
WM_CHARで捕まえて、全部return0にしてたせいで入力されないようになってたみたいです。。。
ありがとうございました
285
名前:
デフォルトの名無しさん
:2007/04/25(水) 20:25:41
>>279
,282のプロシージャ
{ }の対応がおかしい気がするんだが・・・?
286
名前:
デフォルトの名無しさん
:2007/04/25(水) 21:28:59
このような関数で、ドライブごとまるまるコピーしたいのですが、
BOOL CopyDirectory(LPCTSTR From, LPCTSTR To)
{
SHFILEOPSTRUCT TSHFileOpStruct;
ZeroMemory(&TSHFileOpStruct,sizeof(SHFILEOPSTRUCT));
MessageBox(NULL, From, To, MB_OK);
//構造体の初期設定
TSHFileOpStruct.hwnd = NULL; // 親ウインドウのハンドル
TSHFileOpStruct.wFunc = FO_COPY; // フラグ
TSHFileOpStruct.pFrom = From + NULL+ NULL; // 対象元パス
TSHFileOpStruct.pTo = To + NULL+ NULL; // 対象先パス
TSHFileOpStruct.fFlags = FOF_NOCONFIRMATION | FOF_NOCONFIRMMKDIR; //フラグ
//実行する
if(SHFileOperation(&TSHFileOpStruct) != 0){
return FALSE;
}
if(TSHFileOpStruct.fAnyOperationsAborted == TRUE){
return FALSE;
}
return TRUE;
}
CopyDirectory("H:\\test", "C:\\test")
だと成功するのですが
CopyDirectory("H:\\", "C:\\test")
だと失敗します。
ドライブの中身をまるまるコピーすることはできないのでしょうか?
初歩的な質問かもしれませんが、よろしくお願い致します。
287
名前:
デフォルトの名無しさん
:2007/04/25(水) 21:44:32
pFromはあくまでもファイル名を指定するためのバッファらしいので
"H:\\*"みたいにワイルドカードを使うってのはダメ?
288
名前:
デフォルトの名無しさん
:2007/04/25(水) 21:50:56
>>287
教えていただいた方法で解決できました!
結構長い間ひっかかっていたので、助かりました。
ありがとうございました。
289
名前:
デフォルトの名無しさん
:2007/04/25(水) 22:40:16
GUIアプリからコンソール用のアプリを影で動かし(て、その結果をエディタに送り)たいんですけど
そういうAPIってありますか?
290
名前:
デフォルトの名無しさん
:2007/04/25(水) 22:44:12
はぁ?
291
名前:
デフォルトの名無しさん
:2007/04/25(水) 22:44:51
無い
はい次
292
名前:
デフォルトの名無しさん
:2007/04/25(水) 22:44:55
あります
293
名前:
デフォルトの名無しさん
:2007/04/25(水) 22:51:38
ありますが、
はい次
294
名前:
デフォルトの名無しさん
:2007/04/25(水) 22:52:22
APIに関係することか、わかりませんがお願いします。
自己解凍書式によくあるような
> copy /b hoge.exe + datafile
でつくった hoge.exe から datafile の中身を取る
プログラムを作りたいのですがやり方を教えて頂けないでしょうか?
295
名前:
デフォルトの名無しさん
:2007/04/25(水) 22:53:39
*** main(char**arg,int argl) ...................................................
296
名前:
デフォルトの名無しさん
:2007/04/25(水) 22:59:30
>>294
「リソース」をキーワードに基本から勉強しなおしなさい
297
名前:
デフォルトの名無しさん
:2007/04/25(水) 23:10:47
copyで連結したものをリソースとして扱えるか?
俺にはイメージヘッダからイメージサイズを見て、
それを元にdataの先頭領域を求める方法になる気がする。
違ったらすまん
298
名前:
デフォルトの名無しさん
:2007/04/25(水) 23:13:51
copy /b hoge.exe + datafile + datafilesize
299
名前:
デフォルトの名無しさん
:2007/04/25(水) 23:15:52
ぐぐってみたらこういう方法だそうです
プログラムに4バイトのリソースを埋め込む。
そのリソースを読み込んでその値だけ、読み飛ばして自分自身を解凍するプログラムを作る。
何らかの手段で4バイトのリソースに自己解凍プログラムのサイズを書き込む。
自己解凍プログラムの後ろに実際のデータを書き込む。
300
名前:
デフォルトの名無しさん
:2007/04/25(水) 23:18:20
かなりコンパイラ依存な質問ですが・・・
FindNextFileがVisual C++ 6.0でちゃんと動くのにGCC(gcc version 3.4.5 (mingw special))でちゃんと動きませんorz
http://www.uploda.net/cgi/uploader4/index.php?file_id=0000012569.zip
test_findfile.c ソース
test_findfile_gcc.exe GCCでコンパイルしたもの
test_findfile_vc6.exe VC++6.0でコンパイルしたもの
VC++6.0でコンパイルしたものは、ちゃんと2つ目以降に見つかったファイルを表示します。
しかしGCCでコンパイルしたものは最初の1つ目しか表示しません。
MSDN見ても解決方法わからないし・・・
301
名前:
デフォルトの名無しさん
:2007/04/25(水) 23:24:41
>>289
名前なしパイプを使ってリダイレクト。
CreatePipe, DuplicateHandle,
CreateProcess(STARTF_USESTDHANDLESがヒント),
PeekNamedPipe, ReadFileなどの関数を使う。
待機関数を使ったプロセスの終了判定と、
PeekNamedPipeとReadFileの順序を巧く管理しないと止まるので注意。
じゃぁ、約束のおっぱいをうpしてね
302
名前:
デフォルトの名無しさん
:2007/04/25(水) 23:26:03
(・) (・)
303
名前:
デフォルトの名無しさん
:2007/04/25(水) 23:29:15
D / ∩___∩ \_WW/
・ ≪ | ノ ヽ ≫ D ≪
V ≪ / ● ● | ≫ ・ ≪
・ ≪ | ///( _●_)//ミ ≫V ≪
D ≪ 彡、 |∪| 、`\ ≫ ・ ≪
! ≪ / \ ヽノ /_> / ≫ D ≪
≪ \| ・ ・ / / ≫ ! ≪
MMM\ | / ̄ /MMM\
| /\ \
| / ) )
∪ ( \
\_)
304
名前:
デフォルトの名無しさん
:2007/04/25(水) 23:30:10
>>300
ワイルドカード絡みなのかな?
下のコードをそれぞれのコンパイラでコンパイルして
「ちゃんと動かない」ときの引数を与えて比較してみればおk
#include <stdio.h>
int main(int argc, char *argv[]) {
int i;
for(i=1;i<argc;i++) printf("argv[%d]=%s\n", i, argv[i]);
return 0;
}
305
名前:
デフォルトの名無しさん
:2007/04/25(水) 23:31:01
ところでDVDってドメスティックバイオレンスオブダイナミカルなの?
306
名前:
デフォルトの名無しさん
:2007/04/25(水) 23:32:05
>>300
どのディレクトリに対して実行しても結果は同じですか?
307
名前:
デフォルトの名無しさん
:2007/04/25(水) 23:35:58
>>300
OSは?
308
名前:
デフォルトの名無しさん
:2007/04/25(水) 23:36:35
>>300
c:\directory\*
c:\\directory\\*
じゃねーの?
309
名前:
デフォルトの名無しさん
:2007/04/25(水) 23:38:01
>>300
ワイルドカードが展開されてるんだろ
310
名前:
デフォルトの名無しさん
:2007/04/25(水) 23:41:24
見た感じFindNextFileが必ずゼロを返してるような動き。
一個だけ正しく見つけてあとはサヨウナラだな。
311
名前:
デフォルトの名無しさん
:2007/04/25(水) 23:43:54
FindFirstFile に渡される引数の内容(argv[1]) が違うから
表示させてみれば疑問は解決するはず
312
名前:
デフォルトの名無しさん
:2007/04/25(水) 23:46:35
そこで、ダブルクォーテーションですよ
313
名前:
デフォルトの名無しさん
:2007/04/26(木) 00:24:23
>>300
GCCに付属してるCRT_noglob.oをリンクすると解決するお
海外での似た質問と解凍:
http://www.cygwin.com/ml/cygwin/1998-11/msg00165.html
http://www.cygwin.com/ml/cygwin/1998-11/msg00235.html
314
名前:
デフォルトの名無しさん
:2007/04/26(木) 00:48:10
ぼ・・・僕ハッカー
315
名前:
デフォルトの名無しさん
:2007/04/26(木) 09:54:11
WTLでCToolBarCtrlを使ってツールバーを作っています。
manifestを指定してXPスタイルにしているのですが、
そうするとアイコンサイズと比べ、ボタンサイズが大きくなりすぎてしまいます。
どうしても小さくしたいのですが、SetButtonSizeを指定しても無視されてしまい
自動でサイズが決定されてしまいます。
ボタンのサイズを小さくしたいのですが、どうすればできますか。
316
名前:
デフォルトの名無しさん
:2007/04/26(木) 10:07:41
ビットマップを印刷する処理でカラープリンタに出力するとおk、なんですが、
白黒プリンタに印刷すると真っ黒画面(プリンタドライバのメモリ不足でよくおきるヤシ)となります。
Win32APIで、印刷時にビットマップを描くとき、白黒プリンタを意識する指定ってありましたっけ?
317
名前:
デフォルトの名無しさん
:2007/04/26(木) 10:09:59
ShellExecuteで起動したソフトが起動しきったかどうかを確認する方法を教えてください
318
名前:
デフォルトの名無しさん
:2007/04/26(木) 10:14:26
起動しきった、の定義は?
メッセージループが回りだしたでいいのかな
319
名前:
デフォルトの名無しさん
:2007/04/26(木) 10:28:17
CreateProcessのほうがいいかもね
320
名前:
デフォルトの名無しさん
:2007/04/26(木) 10:34:52
>>318
起動してから表示されるまでに時間がかかるソフトがあるので
画面が表示されたらと思っていました。
>>319
ShellExecuteよりShellExecuteExのインスタンスハンドルで何とかなりそうでしょうか?
321
名前:
デフォルトの名無しさん
:2007/04/26(木) 10:39:08
316もヨロ
322
名前:
デフォルトの名無しさん
:2007/04/26(木) 10:43:13
>>317
FindWindow
323
名前:
デフォルトの名無しさん
:2007/04/26(木) 10:44:44
>>320
ShellExecuteはシェルに命令投げるだけなので実際の起動処理は全部シェルがやる。
だからShellExecuteで起動したプロセスの処理を監視するならフックとかの回り道が必要になるし、
CreateProcessに比べて面倒極まりないから
>>319
の言うとおり
起動したプロセスの監視をしたいならCreateProcessがよろし。
324
名前:
デフォルトの名無しさん
:2007/04/26(木) 10:48:44
>>316
正解なのかどうなのかわからんが…
printerなDCに直接 StretchBlt したときに真っ黒出力されたことがあった。
printer と同じ解像度のメモリDCに一旦StretchBlt して、
そのメモリDCをprinterなDCに BitBlt で回避できた
325
名前:
デフォルトの名無しさん
:2007/04/26(木) 10:52:13
>>317
ShellExecuteExでfMaskにSEE_MASK_NOCLOSEPROCESSを指定すると
起動したプロセスのハンドルがhProcessに返されるので
WaitForInputIdleを呼べばいいかと。
326
名前:
デフォルトの名無しさん
:2007/04/26(木) 10:55:40
>>316
GetDeviceCapsで出力APIがサポートされているか調べるとか・・・かな
327
名前:
デフォルトの名無しさん
:2007/04/26(木) 10:57:36
>>322
予めタイトルとクラス名がわかってればいいんですけどね
>>323
CreateProcessですとPROCESS_INFORMATION構造体のhProcessハンドルで
状態をみるとおもうのですが、どのAPIで状態を確認することができるのでしょうか?
328
名前:
316
:2007/04/26(木) 10:59:45
サンクス
>>324
>>326
そう、その辺りの話ですよね。
自分も、StrechBlt → BitBlt → StretchDrawDIB と変えてきて、
あーこれで解決したーと思ってたんですが、
カラービデオプリンターはおk、白黒ビデオプリンターで真っ黒、見たいな現象。
>GetDeviceCapsで出力APIがサポートされているか調べるとか・・・かな
kwsk
StrechDrawDIBが動作しないとか???
329
名前:
デフォルトの名無しさん
:2007/04/26(木) 11:02:13
白がちゃんとした白じゃないから黒くなるのでは
StrechBltMode変えたら
330
名前:
デフォルトの名無しさん
:2007/04/26(木) 11:05:53
>>328
GetDeviceCapsでRASTERCAPS調べて
RC_STRETCHBLTビットが立ってれば、
StreathBltを使って良いとか、そういう話し
あと、StretchDrawDIBってMSDNにはないけど・・・?
ググっても、自作っぽい関数にしか引っかからないぞw
331
名前:
デフォルトの名無しさん
:2007/04/26(木) 11:24:47
>>327
>>325
332
名前:
316
:2007/04/26(木) 11:26:43
ラジャー
>>329
やってみます。あ、でもプリンタ使えるの昼から。
ゴメンナサイ
>>330
実体はこれです。
↓
procedure TBitmapPrinter.StretchDrawDIB(Canvas: TCanvas; r: TRect);
var
OldMode: Integer; // StretchMode のセーブ
begin
OldMode := SetStretchBltMode(Canvas.Handle, COLORONCOLOR);
StretchDIBits(Canvas.Handle,
r.Left, r.Top,
r.Right - r.Left, r.Bottom - r.Top,
0, 0, BitmapInfo^.bmiHeader.biWidth,
BitmapInfo^.bmiHeader.biHeight,
ImagePtr, BitmapInfo^, DIB_RGB_COLORS, SRCCOPY);
SetStretchBltMode(Canvas.Handle, OldMode);
end;
333
名前:
デフォルトの名無しさん
:2007/04/26(木) 11:29:35
>>331
すみません、見落としてました・・・
>>325
ありがとうございます。
それでちゃんとできました。
334
名前:
デフォルトの名無しさん
:2007/04/26(木) 12:16:27
>>333
WaitForInputIdleはコンソール不可なので注意ね。
335
名前:
316
:2007/04/26(木) 12:21:16
つまり、
>OldMode := SetStretchBltMode(Canvas.Handle, COLORONCOLOR);
を、
COLONCOLORから変えればよいんだ。
BLACKONWHITEとWHITEONBLACKって何で2つもあるよ。。。
336
名前:
デフォルトの名無しさん
:2007/04/26(木) 12:25:35
>>335
>BLACKONWHITEとWHITEONBLACKって何で2つもあるよ。。。
ANDとORの違い。
337
名前:
デフォルトの名無しさん
:2007/04/26(木) 12:26:51
>ANDとORの違い。
普通の印刷ではどちらを使うんですか?
338
名前:
デフォルトの名無しさん
:2007/04/26(木) 12:32:03
>>337
普通の印刷はどうかしりませんが、
BLACKONWHITEは 0 & 1 = 0で黒が残る
WHITEONBLACKは 0 | 1 = 1で白が残る
ただそれだけ。
339
名前:
デフォルトの名無しさん
:2007/04/26(木) 12:37:49
まあ両方やってみればわかる
モノクロビットマップにStrechBltして画面表示してみるのもいいかもな
340
名前:
デフォルトの名無しさん
:2007/04/26(木) 13:21:11
>>334
了解しました!
ありがとうございます!!
341
名前:
デフォルトの名無しさん
:2007/04/26(木) 15:39:58
あるウィンドウを親として、新たに作った子ウィンドウを貼り付けたい(親側をドラッグすると、子ウィンドウもそれに追随するような)のですが、どのように実装したらよいかアドバイスいただけませんでしょうか。
よろしくお願いいたします。
342
名前:
デフォルトの名無しさん
:2007/04/26(木) 15:41:52
CreateWindowでWS_CHILD
343
名前:
316
:2007/04/26(木) 16:22:55
SetStretchBltModeは関係無いみたいです。
真っ黒に出たり、ちゃんと出たり、不安定。
344
名前:
316
:2007/04/26(木) 16:53:35
連続印刷した場合に、真っ黒になります。
345
名前:
316
:2007/04/26(木) 16:57:43
連続投稿すみません。
自アプリが印刷した結果がWinのスプールにまだ残っているかどうか、判断する方法はありますか?
346
名前:
デフォルトの名無しさん
:2007/04/26(木) 17:18:50
具体的にそうなるコードを出してみては
そもそも真っ黒になるのはプログラムが悪いんだから
347
名前:
316
:2007/04/26(木) 17:30:29
自己解決しました、お騒がせしてすみません。
348
名前:
316
:2007/04/26(木) 18:30:21
347は偽者です。
コードは332です。
349
名前:
デフォルトの名無しさん
:2007/04/26(木) 18:46:54
>>348
>>332
には、印刷時のページ更新とかないだろ
350
名前:
デフォルトの名無しさん
:2007/04/26(木) 19:51:02
StartPageしたあとに毎回SetStretchBltModeしてない
とかいう落ちか?
351
名前:
デフォルトの名無しさん
:2007/04/26(木) 22:30:22
いままでの流れ。
>>あーや
・質問
ビットマップを印刷する処理で
カラープリンタ→出力おk
白黒プリンタ→真っ黒画面
なんで?
>>324
→ あーや
プリンタのDCに直接StretchBltした時、真っ黒出力経験あり。
キャッシュDCを作成してStretchBlt→BitBltの提案。
>>326
→ あーや
GetDeviceCapsでプリンタ能力も調べろと提案。
>>あーや
>>324
の方法でカラーはおk。白黒プリンターはやっぱりダメ。
>>326
のいうGetDeviceCapsに初耳。
>>329
→ あーや
白≒黒より、StrechBltModeの設定を推測。
>>330
→ あーや
GetDeviceCapsのRC_STRETCHBLTフラグの意味を教える。
352
名前:
デフォルトの名無しさん
:2007/04/26(木) 22:30:53
(つづき)
>>あーや → 329
昼飯はトンカツ定食にしようか悩みつつ返信。
>>あーや → 330
GetDeviceCapsを理解。
お昼だけにソースをさらしてみる。
>>あーや
SetStretchBltModeのBLACKONWHITEとWHITEONBLACK気付く。
なお、ここで返信した336,338,339は、実は奇遇にも同じ町内。
>>あーや
とりあえず、カラープリンタ、白黒プリンタ出力おkっぽいが、
連続印刷した場合、白黒プリンタがやっぱりダメ。
なぜか、StrechBltModeは関係ないと断定。
そして、あーやの興味はスプールへ・・・
>>あーや → 347
少しカチンと来る。
>>349-350
解答発表?
353
名前:
デフォルトの名無しさん
:2007/04/27(金) 01:55:35
ダイアログボックスを作って、初期のフォーカスをダイアログボックス内のエディットコントロールに
SetForcusで配置したいのですが、ダイアログボックス内のエディットコントロールのハンドルが
分からないので出来ません。というよりも、ダイアログボックス内のウィンドウにはどのように
ハンドルをつければいいのでしょうか?
354
名前:
デフォルトの名無しさん
:2007/04/27(金) 02:14:25
GetDlgItem
355
名前:
デフォルトの名無しさん
:2007/04/27(金) 02:21:49
ダイアログベースでBS_DEFPUSHBUTTONを指定すると
「Enter」を押した時、ボタンを押下できるけど普通にリソースを
使わず(CreateWindow等)で作成したボタンに対して「Enter」は反応を
示さないんだけど。これはどうやって解決すればいいんでしょうか?
因みに「Enter」に反応するのはIDOKでそれ使ってもいいんですが、
できれば自分が指定したコントロールIDに変更できればいいなと思って
探してDM_SETDEFIDなるものを発見してSendMessage使って試したんだけど
やっぱりうまくいかなかった。これはダイアログにしか通用しないのかな。
因みにSendMessageはこんな感じ(WM_CREATE内で使ってる)
SendMessage(hWnd, DM_SETDEFID, (WPARAM)ID_CONTROL, 0L);
356
名前:
デフォルトの名無しさん
:2007/04/27(金) 03:20:26
>>354
ありがとうございました。無事フォーカス設定することができました。
しかし、エディットコントロールにフォーカスを持っていったら何故か
ボタンをクリックしても動作しないようになりました(Enterキーでは動作する)。
フォーカス外すと普通にボタンの機能は復活します。これは何が原因なのでしょうか?
357
名前:
デフォルトの名無しさん
:2007/04/27(金) 08:01:56
付箋紙ソフトのように、たくさんのウィンドウを表示してもタスクバーに何も表示されないようにするには
どうしたらいいのでしょうか?
358
名前:
デフォルトの名無しさん
:2007/04/27(金) 08:03:22
>>356
Enterキー以外の処理(else側)はスルーしてるんじゃないの?
359
名前:
デフォルトの名無しさん
:2007/04/27(金) 08:05:06
>>357
いろいろ手法はあるけど?
統括管理ソフトを、時計横のタスクバーに駐在させるとか・・・
想定するターゲットを詳しく
360
名前:
デフォルトの名無しさん
:2007/04/27(金) 08:07:38
>>357
っ不可視の親Window
っWS_POPUP
361
名前:
デフォルトの名無しさん
:2007/04/27(金) 08:12:02
>>359
ー360
試してみます!
362
名前:
デフォルトの名無しさん
:2007/04/27(金) 08:29:07
>>355
IsDialogMessageは?
363
名前:
355
:2007/04/27(金) 12:23:56
>>362
ダイアログでの作成じゃない場合(メインウィンドウ)の
時どうやってダイアログと同じように実現すればいいのかを知りたい。
364
名前:
デフォルトの名無しさん
:2007/04/27(金) 12:41:48
ウィンドウプロシージャでEnterキーをトラップすりゃいいんじゃねぇの?
365
名前:
355
:2007/04/27(金) 12:43:36
やっぱそれしかないのかな。
IDOKはデフォルトでEnter拾ってくるから
そのIDOKの設定を別IDに変更できるんじゃないかと思ってたんだが
366
名前:
355
:2007/04/27(金) 12:44:47
因みにDM_GETDEFIDやDM_GETDEFIDはダイアログプロシージャにしか
意味無いんだよね?普通にメインウィンドウでやっても何の効果もなかったから
367
名前:
デフォルトの名無しさん
:2007/04/27(金) 14:03:22
342さんレスありがとうございます。
>342
CreateWindowでWS_CHILD
試してみたんですが、うまくいかず色々調べていたら、
親のウィンドウの拡張アトリビュートに「WS_EX_LAYERED」が立ってました、
このフラグを消すと正しく動くことからこのフラグが問題かと思うのですが、
「WS_EX_LAYERED」が立ってるウィンドウに対し「WS_CHILD」のような子ウィンドウを作ることは出来ませんでしょうか
重ね重ね申し訳ございませんが、よろしくお願いいたします。
368
名前:
デフォルトの名無しさん
:2007/04/27(金) 16:49:28
仕様書嫁
369
名前:
デフォルトの名無しさん
:2007/04/27(金) 16:58:05
そもそも正しく動く、動かないとはどういうことか
370
名前:
316
:2007/04/27(金) 17:13:14
PCのメモリを1ギガにしたら解決しました。
フォトプリンタってのは、普通のプリンタよりメモリを食うものなんでしょうか。
それからStrechBltModeは無意味というか無関係ですね。
プリンタドライバも流石にStrechBltModeが間違っててもエラーを起こさないようにしてんじゃないですか?
>>>あーや → 347
> 少しカチンと来る。
↑
だから347はニセモノです。
371
名前:
デフォルトの名無しさん
:2007/04/27(金) 17:15:51
ニセモノが出るって事は、キミのやりとりに問題があるってことだよ
372
名前:
デフォルトの名無しさん
:2007/04/27(金) 18:12:50
質問があります。
UNICODE版のプログラムを作成していますが、
部分的にANSI版のAPIを使用したい箇所があります。
それで関数名の後に直接”CreateWindowA”みたいにAとかWを付けると
ANSI UNICODEの呼び出しの切り替えができるようなことが本に書かれて
いるのですが、直接Aをつけても関数がみつからないとコンパイラから
エラーがでます。
教えてください。よろしくお願いします。
373
名前:
372
:2007/04/27(金) 18:17:30
includeファイルの位置変更したら解決しました.
アホな質問してすみませんでした
374
名前:
デフォルトの名無しさん
:2007/04/27(金) 18:27:18
>>363
IsDialogMessageは、ダイアログでない普通のウィンドウも対象にできる。
375
名前:
デフォルトの名無しさん
:2007/04/27(金) 20:10:24
>>370
>PCのメモリを1ギガにしたら解決しました。
その場しのぎとしてはセーフだが、
調査したほうが良いよ。
ドライバのver upで能力差とか、
ソースのメモリDC解放してないとか、
どっかで使いまわしているとか、
BitBltを使った初期化(WHITENESS、BLACKNESS)とか
ビットマップをダンプしてみるとか・・・
376
名前:
371
:2007/04/27(金) 21:54:30
377
名前:
デフォルトの名無しさん
:2007/04/27(金) 23:30:08
WH_KEYBOARD_LLはコマンドプロンプトに通用するですか?
378
名前:
デフォルトの名無しさん
:2007/04/28(土) 00:40:51
>>377
cmd.exeでDOS窓を開いたときの動作の話なら、通用した(今試した)
379
名前:
デフォルトの名無しさん
:2007/04/28(土) 08:10:27
とん
380
名前:
デフォルトの名無しさん
:2007/04/28(土) 08:26:04
こつ
381
名前:
デフォルトの名無しさん
:2007/04/28(土) 11:09:22
フォルダのデフォルトのアイコンって取得できますか?
382
名前:
デフォルトの名無しさん
:2007/04/28(土) 11:10:15
はい
383
名前:
デフォルトの名無しさん
:2007/04/28(土) 11:23:52
>>382
教えてくれよん
384
名前:
デフォルトの名無しさん
:2007/04/28(土) 11:30:47
>>381
みたいな聞き方をするからBOOLで返されちゃうんだよ
385
名前:
デフォルトの名無しさん
:2007/04/28(土) 11:44:05
>>381
に対する一番正確な答えになっているしな。
386
名前:
デフォルトの名無しさん
:2007/04/28(土) 12:14:18
自己解決したような気がします
SHGetFileInfo と SHGFI_SYSICONINDEXあたりすか
387
名前:
デフォルトの名無しさん
:2007/04/28(土) 12:43:05
>>372
CreateWindowはCreateWindowExのマクロに過ぎないので
CreateWindowExAにする必要がある
388
名前:
デフォルトの名無しさん
:2007/04/28(土) 13:06:45
>>381
に便乗質問だけど
SHGetFileInfo に空文字渡すとフォルダのアイコンが返ってくるけど、
これでいいんですか?
389
名前:
デフォルトの名無しさん
:2007/04/28(土) 16:07:46
おまえらほんと捻くれてるよな
390
名前:
デフォルトの名無しさん
:2007/04/28(土) 16:16:36
必要な戻り値の型推論ができないだけ
391
名前:
デフォルトの名無しさん
:2007/04/28(土) 16:25:28
GetMessageの戻り値みたいに融通効かせてください><
392
名前:
デフォルトの名無しさん
:2007/04/28(土) 18:08:30
キャストしろ
393
名前:
デフォルトの名無しさん
:2007/04/28(土) 18:34:01
僕を神にしてください
394
名前:
デフォルトの名無しさん
:2007/04/28(土) 19:57:54
キャストしろ
395
名前:
デフォルトの名無しさん
:2007/04/28(土) 20:02:55
delete[]すればいんじゃね?
396
名前:
デフォルトの名無しさん
:2007/04/28(土) 20:06:27
洞窟の出口で秘宝を奪うべく待ってればいいと思うよ
397
名前:
デフォルトの名無しさん
:2007/04/28(土) 20:18:21
APIもせめて同じような定数は列挙型に纏めるとかしたらすっきりするんじゃないの?
398
名前:
デフォルトの名無しさん
:2007/04/28(土) 20:25:50
SDKとAPIを混同するな
399
名前:
デフォルトの名無しさん
:2007/04/28(土) 20:41:09
397の文脈ではAPIでもいいと俺は思う。
関数なんかだけではなく、それを呼び出すために必要な定数や型もひっくるめてAPIと言うのだと思う。
400
名前:
デフォルトの名無しさん
:2007/04/28(土) 20:47:12
勝手な定義を脳内で作って知ったかするのはやめておけ。
401
名前:
デフォルトの名無しさん
:2007/04/28(土) 20:51:55
ApplicationPrigramInterfaceと
SoftwareDevelopmentKit
の違いがわかりません先生
402
名前:
デフォルトの名無しさん
:2007/04/28(土) 20:54:31
ヘッダファイル自体やライブラリや関連ツールなどがSDK
ヘッダファイルやタイプライブラリなどで定義されている内容がAPI
だと思っていたが実際のところ正しい定義なんて考えたこともなかったな
403
名前:
デフォルトの名無しさん
:2007/04/28(土) 21:04:06
そもそもどこまでがAPIなんて誰もそんなことを定義していない。
C/C++以外からAPIを利用する場合は列挙型も何も存在しないし、
変なところで勝手に決めてしまうと他の言語から使うときに、
API以外の何か謎な物を使っていることになってしまう。
404
名前:
デフォルトの名無しさん
:2007/04/28(土) 21:06:31
他の言語であらかじめされている定義が無いということね。
405
名前:
デフォルトの名無しさん
:2007/04/28(土) 21:24:56
あれだ、web系のアホが紛れ込んでるのかもしれん。
「APIと言えばwebサービスのインタフェースを指すようになった」
らしいぞ。
406
名前:
デフォルトの名無しさん
:2007/04/28(土) 21:42:36
整数も渡せるだろ
407
名前:
デフォルトの名無しさん
:2007/04/28(土) 21:52:13
JAVAのinterfaceには定数(もどき)を定義できるし、定数を含めて問題あるまい。
というか既に定数無いか?
408
名前:
デフォルトの名無しさん
:2007/04/28(土) 21:57:42
>>401
Prigram
409
名前:
デフォルトの名無しさん
:2007/04/28(土) 22:14:08
何か美味そう
410
名前:
デフォルトの名無しさん
:2007/04/28(土) 23:19:52
画面に表示しないプログラムを作りたいのですが
時計の横にアイコンを登録することは出来ますか?
411
名前:
デフォルトの名無しさん
:2007/04/28(土) 23:26:49
>>410
できる。
412
名前:
デフォルトの名無しさん
:2007/04/28(土) 23:27:08
タスクバー?
可能です。
413
名前:
デフォルトの名無しさん
:2007/04/28(土) 23:33:31
GT-Rは5台持ってますよ
R32がVspecIIのガンメタとNISMOの白
R33がVspecのシルバー
R34がMspecのホワイトとVspecII Nurのベイサイドブルー
414
名前:
デフォルトの名無しさん
:2007/04/28(土) 23:39:56
ま、俺のGTOには敵わないだろうけどな。
415
名前:
デフォルトの名無しさん
:2007/04/29(日) 01:51:20
NAだけどな。
416
名前:
デフォルトの名無しさん
:2007/04/29(日) 13:28:15
>>411
だからなんでみんな戻り値がboolなんだよw
417
名前:
デフォルトの名無しさん
:2007/04/29(日) 13:31:21
出来るって分かれば自分で調べるだろ
418
名前:
デフォルトの名無しさん
:2007/04/29(日) 13:55:07
S_OKだけなら猿でも返せる
419
名前:
デフォルトの名無しさん
:2007/04/29(日) 14:00:51
>>410
メインウィンドウを非表示で作ればいい。
あとはタスクトレイ アイコンとかでググれ。
420
名前:
デフォルトの名無しさん
:2007/04/29(日) 14:02:41
なんかこの質問・回答にデジャヴを感じる
421
名前:
デフォルトの名無しさん
:2007/04/29(日) 14:06:05
間欠泉のようなもんだから
422
名前:
デフォルトの名無しさん
:2007/04/29(日) 16:00:03
Shell_NotifyIconだったっけか
423
名前:
422
:2007/04/29(日) 16:02:09
かすかな記憶を頼りに書いてみて調べてみたらビンゴだった
俺の記憶力もまだ捨てたもんじゃないな
424
名前:
デフォルトの名無しさん
:2007/04/29(日) 19:47:52
ワレのドタマカチ割って脳みそストローでチューチュー吸うたろか!
425
名前:
デフォルトの名無しさん
:2007/04/29(日) 19:53:13
自分の頭を割るというのもなかなか豪儀だな
426
名前:
デフォルトの名無しさん
:2007/04/29(日) 19:55:41
なめとんかいわれ
427
名前:
デフォルトの名無しさん
:2007/04/29(日) 19:58:29
貝割れ大根を嘗めているのか。あれは舌にピリッと来るよな。
しかし倒置法とはなかなか巧みじゃないか。
428
名前:
デフォルトの名無しさん
:2007/04/29(日) 20:15:36
じょんだらりん
429
名前:
デフォルトの名無しさん
:2007/04/29(日) 20:18:33
これをUNICODEビルドしたときにメッセージボックスに化けないで表示するには
どうしたらいいでしょうか?
XP, VC6です。
HANDLE hFile;
TCHAR buf[10];
DWORD dwSize;
hFile = CreateFile(
_T("C:\\aaa.txt"),
GENERIC_READ,
FILE_SHARE_READ,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL);
ReadFile(hFile, buf, 3, &dwSize, NULL);
CloseHandle(hFile);
buf[3] = _T('\0');
MessageBox(NULL, buf, _T(""), MB_OK);
430
名前:
デフォルトの名無しさん
:2007/04/29(日) 20:21:13
MultiByteToWideChar
431
名前:
429
:2007/04/29(日) 20:21:39
テキストファイルはSJISで中身は abc と入っているだけです。
432
名前:
デフォルトの名無しさん
:2007/04/29(日) 20:31:04
"abc"のバイナリ表現はShift_JISやUS-ASCIIと、UTF-16とでは異なる。
433
名前:
429
:2007/04/29(日) 20:42:04
読み込むファイルはSJIS固定
MultiByteToWideChar
変換元がPCSTR
変換後がPWSTR
これはひょっとしてUNICODE版でビルドしてる場合だけ
MultiByteToWideCharを使って変換をかけるって事ですか?
434
名前:
デフォルトの名無しさん
:2007/04/29(日) 20:44:56
いいえ
435
名前:
デフォルトの名無しさん
:2007/04/29(日) 20:45:04
ファイルをダウンロードしたときなど、完了すると「チロン!」という音が鳴りますが、
この音を鳴らすapiがあれば教えてください。
436
名前:
デフォルトの名無しさん
:2007/04/29(日) 20:45:40
MCI
437
名前:
435
:2007/04/29(日) 20:48:57
>>436
ありがとうございました!
438
名前:
デフォルトの名無しさん
:2007/04/29(日) 20:51:59
ttp://www.int21.co.jp/pcdn/vb/noriolib/vbmag/9802/mci/
ttp://www.ne.jp/asahi/nagoya/ahomaro/builder/cpb-059.html
ttp://wisdom.sakura.ne.jp/system/winapi/media/
ttp://www13.plala.or.jp/kymats/study/multimedia.html
439
名前:
デフォルトの名無しさん
:2007/04/29(日) 20:52:42
>>433
はい
440
名前:
439
:2007/04/29(日) 21:15:28
ありがとうございました。
441
名前:
429
:2007/04/29(日) 21:16:01
ちがう。429でした。
442
名前:
デフォルトの名無しさん
:2007/04/29(日) 23:13:32
>>426
はい
443
名前:
デフォルトの名無しさん
:2007/04/30(月) 00:13:19
ウモンドウ作らずにWM_〜受取れますか?
444
名前:
デフォルトの名無しさん
:2007/04/30(月) 00:14:58
はい。ウィンドウをお作りいただけば可能です。
445
名前:
デフォルトの名無しさん
:2007/04/30(月) 00:19:52
ウィンドウ要らないなら非表示にしとけばいい。
446
名前:
デフォルトの名無しさん
:2007/04/30(月) 00:34:00
WM_〜 = window message
447
名前:
デフォルトの名無しさん
:2007/04/30(月) 00:40:02
一瞬普通に読んでしまったが、ウモンドウってwww
448
名前:
デフォルトの名無しさん
:2007/04/30(月) 01:05:23
umondou?
umondow?
449
名前:
デフォルトの名無しさん
:2007/04/30(月) 04:46:30
タスクトレイのアイコンの画像を取得する方法ってありませんか?
もしくは特定のアプリのトレイにあるアイコン描画をフックしたいのですが。
450
名前:
デフォルトの名無しさん
:2007/04/30(月) 08:22:59
SetWindowsHookExのWH_KEYBOARD_LLはAltとかミ田キーも弄れますか?
451
名前:
デフォルトの名無しさん
:2007/04/30(月) 08:25:50
>>450
可能。つか、自分でやってみれ。
想像以上に簡単だから
452
名前:
デフォルトの名無しさん
:2007/04/30(月) 08:57:32
ミ田キーワロタ
453
名前:
デフォルトの名無しさん
:2007/04/30(月) 09:54:19
Runasで起動したIEのウェブページのハンドルの入手の仕方おしえてください。
454
名前:
デフォルトの名無しさん
:2007/04/30(月) 10:17:54
少しでも画面を有効に使うためにメニューバーの高さを極限まで細く
したいのですが、win32apiで可能でしょうか?
高さの取得はGetSystemMetricsで出来るのはわかったのですが、
設定がどうやっったらよいものか分かりません。どなたかやり方を教えて頂けませんでしょうか。
455
名前:
デフォルトの名無しさん
:2007/04/30(月) 10:29:34
0じゃいかんの?
456
名前:
デフォルトの名無しさん
:2007/04/30(月) 10:31:29
>>452
「ウェブページのハンドル」とは何ぞや?
>>454
レジストリに書いてWM_SETTINGCHANGEをブロードキャスト?
457
名前:
452
:2007/04/30(月) 10:34:23
>>456
IEで表示したサイトのページをFindWindowAでゲットした値のことです。
458
名前:
デフォルトの名無しさん
:2007/04/30(月) 10:37:24
>>454
SystemParametersInfo で SPI_SETNONCLIENTMETRICS
他のアプリケーションにも影響を与える操作なんだが、自アプリケーションで制御するような代物なんかな?
# デスクトップ - プロパティ で設定するのを自動化したいのか?
# それはそれで、迷惑な造りかもしれんが…
459
名前:
デフォルトの名無しさん
:2007/04/30(月) 11:08:25
>>454
オーナードロー
460
名前:
デフォルトの名無しさん
:2007/04/30(月) 12:06:48
bccでDLLを作成してそのDLLを
LoadLibrary(TEXT("HOOKTEST.dll"));で読み出したら
DLLエントリーポイントが実行されたみたいなのだが
暗黙的に読み出したらDLLエントリーポイントが実行されないんだが
これは普通なのか?それとも何か設定が間違っているのか?
461
名前:
デフォルトの名無しさん
:2007/04/30(月) 12:11:24
あと
HINSTANCE hInstDLL;
#pragma data_seg(".sharedata")
HWND hWndtgt=NULL;
HHOOK hhook;
#pragma data_seg()
BOOL WINAPI DllEntryPoint(HINSTANCE hInstance,DWORD dwNotification,LPVOID lpReserved){
MessageBox(NULL,"DLL START","START",NULL);
hInstDLL=hInstance;
return TRUE;
}
int makehook(void){
hhook=SetWindowsHookEx(WH_MOUSE,(HOOKPROC)mousehookproc,hInstDLL,0);
if(hhook==NULL){
MessageBox(NULL,"MAKE HOOK ERROR","ERORR",MB_OK);
return 0;
}
return 1;
}
makehookを実行側で読み出すとhhookが絶対にNULLになるらしくフックがうまくいかない
LoadLibraryで明示的に呼び出してもうまくいかない
デバッカで見てみるとhInstDLLがnullになってるみたいなのだが何故?
462
名前:
デフォルトの名無しさん
:2007/04/30(月) 12:12:13
その、「実行されない」ってのはどこから解ったんだ?
463
名前:
デフォルトの名無しさん
:2007/04/30(月) 12:12:46
>>462
MessageBoxを入れてみました
464
名前:
デフォルトの名無しさん
:2007/04/30(月) 12:15:28
どうしてボーランドの言語仕様ってあそこまで見苦しいの?
クラスや関数名なんて汚らしいしIDEも不細工極まりない
C++にしろパスカルにしろ目障りで読む気すらしないね。
465
名前:
デフォルトの名無しさん
:2007/04/30(月) 12:17:41
ボーランド見苦しい
http://pc11.2ch.net/test/read.cgi/tech/1067474140/
466
名前:
デフォルトの名無しさん
:2007/04/30(月) 12:21:43
bccの#pragmaにdata_segなんてないぞ。
467
名前:
デフォルトの名無しさん
:2007/04/30(月) 12:25:11
>>466
WINDOWSプログラミングスパイスって本にのってたからそのまま使ってみたんだが、だめだったか・・・
468
名前:
デフォルトの名無しさん
:2007/04/30(月) 12:33:59
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpdllpro/html/_win32_DllMain.asp
をみて、DllMain内で複雑な処理はできいないと理解しよう。
469
名前:
デフォルトの名無しさん
:2007/04/30(月) 12:37:36
_tDllMainな
470
名前:
デフォルトの名無しさん
:2007/04/30(月) 12:38:38
>>443
PeekMessageをスレッドの最初に呼んでおけば
そのスレッドにメッセージキューが作られるから
あとはスレッドメッセージで処理すればいい。
送信はPostThreadMessageで
受信はGetMessageのMSG構造体のHWNDが0のやつが
スレッド宛のメッセージ。
471
名前:
デフォルトの名無しさん
:2007/04/30(月) 12:43:44
BOOL WINAPI _tDllMain(HINSTANCE hInstance,DWORD dwNotification,LPVOID lpReserved){
hInstDLL=hInstance;
return TRUE;
}
修正
472
名前:
デフォルトの名無しさん
:2007/04/30(月) 12:49:24
ドラえもーん、これガソリンはレギュラーでも走るの?
いやガソリンでは無理だよ。もっとパワーのあるやつじゃないと。
プルトニウムだよのび太君。
473
名前:
デフォルトの名無しさん
:2007/04/30(月) 13:27:45
BOOL WINAPI _DllMain(HINSTANCE hInstance,DWORD dwNotification,LPVOID lpReserved){
hInstDLL=hInstance;
makehook(hInstance);
return TRUE;
}
intmakehook(HINSTANCE hInst){
hhook=SetWindowsHookEx(WH_MOUSE,(HOOKPROC)mousehookproc,hInst,0);
if(hhook==NULL){
MessageBox(NULL,"MAKE HOOK ERROR","ERORR",MB_OK);
return 0;
}
return 1;
}
にすると問題ないみたいなんだけど・・・
グローバル変数にコピーできない
なぜだ?
474
名前:
デフォルトの名無しさん
:2007/04/30(月) 13:45:13
WinAPIの質問じゃないような気がしてきた
475
名前:
デフォルトの名無しさん
:2007/04/30(月) 13:47:07
とりあえずフック抜いてインスタンスハンドルだけコピーするDLLでも作ってろ
476
名前:
デフォルトの名無しさん
:2007/04/30(月) 13:51:36
窓は作らずに(非表示ではなく)
DLLの関数からShell_NotifyIconで登録してGetMessageでメッセージを受取れますか?
477
名前:
デフォルトの名無しさん
:2007/04/30(月) 13:53:06
不可能
478
名前:
デフォルトの名無しさん
:2007/04/30(月) 13:54:27
Shell_NotifyIcon から タスクトレイアクションを invoke できるようにするために窓が必要
479
名前:
デフォルトの名無しさん
:2007/04/30(月) 14:00:08
なんか最近この質問多いな
480
名前:
デフォルトの名無しさん
:2007/04/30(月) 14:05:29
間欠泉のようなもんだから(2回目)
481
名前:
デフォルトの名無しさん
:2007/04/30(月) 14:09:08
タスクトレイ と フック は源泉なのでしょう
482
名前:
デフォルトの名無しさん
:2007/04/30(月) 14:24:49
フックは多少ややこしいから分からんでもないけど…
トレイアイコンの方は潔癖症に近くねぇ?
いいじゃねーかウィンドウ一つくらい
483
名前:
デフォルトの名無しさん
:2007/04/30(月) 14:30:09
メッセージ通知用ウィンドウなんてたくさん使われているよ。DDEとかシステム周りでもね。
484
名前:
デフォルトの名無しさん
:2007/04/30(月) 14:30:28
そもそも「窓作らずメッセージ受け取れますか?」ってやってみればすぐわかるじゃねーか
485
名前:
デフォルトの名無しさん
:2007/04/30(月) 14:40:48
それよりもまずテンプレに沿ってMSDN読んで来い
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/functions/shell_notifyicon.asp
486
名前:
デフォルトの名無しさん
:2007/04/30(月) 14:52:16
EnumWindowとかで窓一覧を取得するとあきれるほど非表示ウィンドウだらけだからな。
いまさら一つ増えたところで・・
487
名前:
デフォルトの名無しさん
:2007/04/30(月) 14:55:10
Winsock の Async の面倒見るのも見えない Window でやりくりしてるな
488
名前:
デフォルトの名無しさん
:2007/04/30(月) 14:57:17
まあ落ち着けよ
489
名前:
デフォルトの名無しさん
:2007/04/30(月) 15:06:42
WindowがなくてもHWNDもらう方法はないの?
490
名前:
デフォルトの名無しさん
:2007/04/30(月) 15:08:13
>>475
やってみた
MainDllないではグローバルインスタンスハンドルにコピーできてるみたいだけど
makehookを呼び出すとNULLになってるみたい
491
名前:
デフォルトの名無しさん
:2007/04/30(月) 15:09:38
逆に考えるんだ
makehook内で参照してるのがグローバル変数ではないのではないかと考えるんだ
492
名前:
デフォルトの名無しさん
:2007/04/30(月) 15:13:20
>>476
HWND_DESKTOP名義で登録してHOOK
493
名前:
477
:2007/04/30(月) 15:13:39
>>489
メッセージ送信先のウィンドウをデスクトップにでもしておいて
グローバルフックで定義したメッセージを引っ掛ければできなくはない
ウィンドウ作らない分フックにリソース消費するけどねw
494
名前:
デフォルトの名無しさん
:2007/04/30(月) 15:15:07
久々に綺麗なケコ-ン
495
名前:
デフォルトの名無しさん
:2007/04/30(月) 15:28:18
ウィンドウズ自体の欠陥ですか
496
名前:
デフォルトの名無しさん
:2007/04/30(月) 15:35:31
いいえ
497
名前:
デフォルトの名無しさん
:2007/04/30(月) 16:50:13
/ / . : ヘ/! \
// / . /: : ∠、ム| . ヽ
/ ィ . / :/|: |: :/ ノ: 人: ハ
i/ . : . | .|{‐ |=ヘ{‐'! ` =ナ左、 V:|: .ハ
/ | :|: : |: :八 | o ヽ| ´ o ∨/: i |
|:i: : . 、 |{ ヘ! .彡 , ミ、 /メ| . ハ|
ヽ|ヽ: : .`| .三´ _____ ̄彡'/ . ://リ
> .\ |ニ. 二、,二.ヽ| /: //
/ : : ハ`` V: : : : :ン∠イ : : ヽ ァハハ八八ノヽノヽノヽノ \ノ \ / \ / \
/ . : :/ : \ \――/ /: :|: : : . :ヽ
/ . : : : :ィ: > ` ̄ イ: : 、 、、: : : : .ハ
/ . :/i/ "´ |  ̄ | `^``゙^\:、 : . ハ
i/ . :/ へ ノ __ Vニ、 ヽi、:、: i
ハ i:/ ∠.... iく__ 彡⌒ソ > ‐ 、 ヽi、!
V / ̄、 ̄\\ ∠ニ -‐_厂 ヽ. `
/ |: レ  ̄ ̄` 厂| ̄,r ̄- 、: |. i
/ .|/ 厂 | '´ V: 丶
「 ̄ ̄`ヽ/. : : : . . / ハ . : : : : : . V/ ̄`ヽ
,ノ二二.ヽ {. : : : : : :∧ヽ/∧: : : : : : : : :} . ニニヽ
< ̄ィ―- 、ヽV: : : : : :\//: : : : : : : : ノ//. --t、ヽ
`7 ヽ.ハ: : : : : : : :`´|: : : : : : : : : {彡''´ |/
498
名前:
デフォルトの名無しさん
:2007/04/30(月) 17:14:45
>>473
そもそもDllMainでuser32.dllの関数を呼び出してはいけない(もちろんMessageBoxも)
499
名前:
デフォルトの名無しさん
:2007/04/30(月) 17:15:45
>>492-493
そっちのほうがよっぽど気持ち悪いんだが潔癖症の方々はウィンドウを作らないこと自体
が目的化してるんですかね。健康のためなら死んでもいいみたいな。
>>489
とか見てると釣りのようにも思えるけど
500
名前:
デフォルトの名無しさん
:2007/04/30(月) 18:02:07
やってみることに意味があるんだろう
無いけど
■過去ログ置き場に戻る■
1-
前250
次250
最新50
DAT2HTML
0.33f Converted.