1 :
980 ◆oqSJWu4Ch2 :
03/05/11 20:15 スレ立てるまでもない、Win32APIについての質問はこちらへどうぞ。
やさしい お兄ちゃん 達が答えてくれるかも。
でも、質問する前に検索ぐらい汁!!
過去スレ・参考は
>>2 ぐらいにあるといいな。
2 :
980 ◆oqSJWu4Ch2 :03/05/11 20:16
乙カレー
乙
ヽ,,.'" , ゙、 【お洒落】女の子に大人気の東京急行【お洒落】 :::::::;:::',i゙i、,_ ,.' , , ., , .:,.' .: ',.. 、 ゙、 上品・美麗な田園都市生活 . :/::::::}r'、 `゙ ,' .,' .: ,' ,,、-/‐,ッ、:::/..:;: .. l l;:..;. ',. ', ./:: :::/::. ヽ i l .::l:,、r'゙ ::,.'i../,'.:::,'i.:::;,'. .:,':''7i'it、l!:. , i,. ! '.::::::/:l::::::.. l. l. ::;r':i l .:::,' l l:::,' !::,',' .::;': /,'/ !:l'l;::. i ,' l:. i !!,' ::::::/::!:',::::::::::l. ::',/i l:|. l::;;!、ェ、,,l:i l::,'.!:..::,,'::/ / l:i l:゙:.,' /:. l:: | j.l' ::::,'!::::'::゙、:::::::! ::::i、l. 'l,,;ン',,、ぃ,゙ヾ l:l l::::/,ソ.r''"ヾl, l:::/ン゙l:::: l::: i /l' :::j ',:::::::::::::::::!. ! :::::l、゙,,ilr' ,il゙ _,,!i. 'l l::/ ' ,r゙゙'i;.ヾlン''/: l:::: ,'l:: ,'j ./ l ::i. ゙、::::::::r''''!. ! :::::!'''゙li. l;:゙'illlr;::! ゙ i:!、r:'l. ;シ./::: .!:,r!,':;/,',.'l j :l ゙、:::i゙''、゙!. ! ::::|. ゙. 'r,ン::::ソ l;: ''゙:;' ' ,':::: .r' /ツ::ジ j j :|. ヾ゙、 '、i. ! ::::! ''‐゙゙'='゙- . ゞ-'',、 i:::::: j '"!:i:: j .,' :l `゙' 、', i :;::l r‐‐‐-,.  ̄` .j:::: ,' l:,i: ,' / ';! ',.i. ';:!,_ | / , ':::: ,' ,ソ!: ,'./ おかあさま ,ヽ ゙、, ';ヘ!ヽ、 ',. ,.' ,、‐l:l::::: / /.,' ,'/ ヴァイオリンのお稽古に逝って参ります :! ',.',',l,_ ゙'ヽ 、,,_. ゙'" ,、 ‐'" ,',i::: / / ,.シ ':', '、',゙、゙''ー- 、、、、゙゙i,゙''''" /'i::/ /,.' ヾ、 ,,、 - '゙::ヾ,ヽ:...:...:...:...:...:{ ,'/ ,ン゙ ,、- '"゙~ヽ、:...:...:..::゙、:...:...:...:...:...:.lヽ、 _ / . 、r''ヽ、 ヽ:...:...:...:...:...:...:...:...:...:...:.゙j ゙''‐ 、 '
6 :
デフォルトの名無しさん :03/05/11 22:34
すみません、質問させてください。 AプロセスとBプロセスで同期を取るために、 AプロセスがBプロセスをwaitさせたいとします。 その場合、Aプロセス内でWin32APIのSuspendThread関数を用いて、 Bプロセスをwaitさせる例が、 「Advanced Windows(Jeffrey Richter著・MicrosoftPress ASCII」 に記述されていました。 この例の中ですでに起動されているスレッドのハンドルを取得するため、 OpenThread関数を用いたコーディングを行ってるのですが、 このOpenTread関数はWindows2000からのサポートのため、 WindowsNT4.0には対応していません。 そこでWindowsNT上で、すでに起動されているプロセスをwaitさせるためには どのような方法またはAPIが存在するでしょうか。 ぜひお願いしますm(_ _)m
WaitForSingleObject その他
>>6 まあ、不注意なんだろうけど...、マルチかよ !!
OpenMutexで名前指定、とか。
プロセスAからプロセスBにメモリーを確保してデータを読み書きするのに WriteProcessMemory、ReadProcessMemoryを使うのは、うまくいくのですが、 下のプログラムで、確保したpBaseアドレスはプロセスBのリニアアドレスに なります。 そこで、FS:[EAX]、GS:[EAX]のように、セレクタ修飾でプロセスAからアク セスできるように、プロセスAのセレクタのアドレスに変換するAPIや、 その方法はあるのでしょうか。 HWND Wnd = FindWindowEx(NULL, 0, NULL, "XXX"); GetWindowThreadProcessId(Wnd, &dwPID); HANDLE hProcess = OpenProcess(PROCESS_VM_OPERATION | PROCESS_VM_READ | PROCESS_VM_WRITE, FALSE, dwPID); DWORD pBase = (DWORD)VirtualAllocEx(hProcess, NULL, 10240, MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE);
11 :
デフォルトの名無しさん :03/05/12 06:49
あるウィンドウの状態(最大化、標準、最小化)を調べるAPIを訓えて( ゚д゚)ホスィ ウィンドウハンドルは既知です。
GetWindowPlacement
>>6 NtOpenThread
非公開だが今後NT4のサービスパックが新たに出ることは
ないだろうから大丈夫だろう多分
>>10 「プロセスAのセレクタ」なんてものは存在しない
(IA64やAlphaやPPCやMIPSではどうなってると思ってるんだ?)
仮想メモリについてちゃんと勉強しろ
>>10 メモリの共有が目的なら、
明示的に共有メモリを使ったほうがいいんじゃない?
それともデバッガ作ってるの?
>>15 ReadProcessMemoryとWriteProcessMemory使うのが
マンドクセイから直接アクセスする裏技はないのかという
質問に見えた。
MSDN Onlineって見辛いなー
19 :
デフォルトの名無しさん :03/05/13 06:06
>>18 乱立関数をあぼーんしたいってのはわかるが
アップグレード品の売れ足くらい考えてやるだろ
>>18 互換性があればどうでもいいわな。
(互換性なきゃLonghorn死滅だが。)
互換性なくすんだったらWindowsの名前捨てろよな
Win3.1との互換性について問い詰めたい。小一時間問い詰めたい。・・・・・・・・21を。
23 :
デフォルトの名無しさん :03/05/13 12:38
マウスフックしてる間はマウスカーソルを独自のものに変更したいのですが、 どうすれば良いのでしょうか?
25 :
デフォルトの名無しさん :03/05/13 18:06
質問です…. 配列で持っているYUV形式のカラー画像データをビットマップにしてウインドウに 表示するには,どうすればいいんでしょうか? とりあえずRGBに変換して(これはOKです),その後なんですが. (YUVのまま使えればその方がいいですけど) 検索してみても,ビットマップファイルをウインドウに表示するは見つかった のですが,メモリ上のRGBデータを表示するのは見つけられませんですた・・・.
SetPixel
DIBを作って自分で変換するか、SetPixelで1ピクセルずつ描画だな。
前者が普通だろな
3.1のも一応動くことになってるぞ。 やったことないので分からんが。
lstrcpy と StrCpy を一本化するとか、〜Ex系に統一するとか、そういうことでないの?
複数のスレッドから、同じEnumWindowsを呼び出すとやばいですか?
ぜんぜん
MSには、2005年といわず、とっととロングホーン出してもらいたい。 で、瞬くうちに普及して欲しい。 そうなれば、WM_PAINT や Invalidate* + UpdateWindow のない 健全な世界になることだろう。
>>34 再描画が楽になったらいいなと思ってるんじゃないか?
ロングホーンがそうなるなんて聞いたことないが
DirectX9使うことを勘違いしてるのか
>>35 要は1枚1枚単独のWindowを別のメモリ空間上に描画して行って
重ね合わせ等々はOSがやるってことでしょ?
互換性上、WM_PAINT(GDI)がなくなるとは思えないが
Windowの影になったりして再描画が必要になることは
実質なくなるんじゃない?
どっちにしろ、WM_SIZEで再描画しないと、いけない訳だが…
ものすごい勢いで再描画されるのかな。 「俺のマシンは デスクトップに電卓ソフトを1つ開いた状態で xxfpsでるよ!」 とか、そういう会話が世間で繰り広げられる・・・。
Mac OS Xみたいになるのカー
>>30 どのみち動かなくなるアプリ多発
互換モードまで付けてるメーカーの所業とも思えん
8年前のバイナリがそのままが動いてるのって、Windowsぐらいじゃないか?
68kのコードって動かないのん? @MacOSX
コマンドライン引数を分割する関数って公開されていませんか?
void cmdlinesprit(LPSTR CmdLin){ int i=0, p=0, inflag=0; #ifdef WIN32 argc=0; #else argc=1; #endif for(;;){ if (CmdLin[i]=='\0'){ argv[argc]=(char*)malloc(i-p+1); if (argv[argc]==NULL) break; qu_strncpy(argv[argc],&CmdLin[p],i-p); break; } if (CmdLin[i]=='"' && (i==0 || (CmdLin[i-1]!='\\' || _fnthctype(CmdLin, i-1)==CT_KJ2))) inflag=!inflag; if (inflag==0 && (CmdLin[i]=='/' || (CmdLin[i]==' ' && (argc==0 || CmdLin[p]=='/')))){ argv[argc]=(char*)malloc(i-p+1); if (argv[argc]==NULL) break; qu_strncpy(argv[argc],&CmdLin[p],i-p); argc++;if (argc>=ARGCMAX-1) break; do{ p=i;i++; }while (CmdLin[p]==' '); }else i++; } argc++; }
47 :
デフォルトの名無しさん :03/05/14 15:45
HFONT hFont, hFontOld; //... hFontOld = SelectObject(hdc, hFont); とやると型変換ができませんみたいなエラーになってしまいます。 もし解決法がわかる方がいらっしゃいましたらアドバイスお願いします。
(HFONT)SelectObject(hdc, hFont);
49 :
デフォルトの名無しさん :03/05/14 16:26
>>48 ありがとうございました。
SelectObject(hdc, (HFONT)hFont)とやっていた俺はオオヴァカなわけで…
色々調べていたところ、HFONT変数はひとつで
SelectObject(hdc, GetStockObject(SYS_FONT))ってのがあったのですが、
上記のhFont, hFontOldを使う方とどっちがいいのでしょうか?
>>50 どっちがいいっちゅーか、hFontOld が何のためにあるかを理解したほうがよいと思われ。
HFontOldは最後にデフォルトに戻すため とは違うのですか? GetStockObjectでもデフォルトに戻せるのかと思ってたのですが…
>>52 SelectObject(hdc, hFont);
//描画...
SelectObject(hdc, GetStockObject(SYS_FONT));
DeleteObject(hFont);
こういうことか。どっちの方がいいんだろうね(w
HFONT hFont, hFontOld; // -- hFont取得 -- hFontOld = (HFONT )SelectObject(hdc, (HGDIOBJ)hFont); // -- 描画処理 -- SelectObject(hdc, (HGDIOBJ)hFontOld); hdcが必ず以前にGetStockObject(SYS_FONT)を持っていたとも 限らない。ついでに言うと、漏れの環境ではキャストしなくても エラーでないよ?エラーレベルが高いんでないかい?
エラーレベルじゃなくて、STRICTでしょ。 っていうか、STRICTを指定しても(HGDIOBJ)はいらんでしょ。
57 :
デフォルトの名無しさん :03/05/15 12:36
猫プロHP27章でCreateFont関数を簡単にするためSetMyFont関数を作成してますが、 その引数にHDCを含めているのはなぜでしょうか? HDCなしでも一応エラーがでませんでしたが、何かあるのかと思い質問させてもらいました。
58 :
デフォルトの名無しさん :03/05/15 12:38
∩ ∧_∧ | | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ( ´Д`)// < 先生! 今年は犯珍優勝できそうでつか? / / | / /| / \ 去年の今頃も調子良かったのですが。 ( ´,_ゝ`)プッ __| | .| | \ \  ̄ ̄ ̄ ̄ ̄ ̄ ̄\ \_____________ ||\ \ ||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄ || || ̄ ̄ ̄ ̄ ̄ ̄ ̄|| .|| ||
逆から読んだらジンキョ(腎虚)ファンだしね もうグダグダ
>>57 なんだろう?
次章ではさらに引数減ってるね。
>>57 >>61 漏れが推測するに、最初は
void DrawMyText(HDC hdc, int x, int y, LPSTR str, LPCTSTR face)
こんな感じだったのでは無いだろうか?
それを途中で、テキストの大きさも…角度も…色も…とか考えて
フォント作成用のSetMyFontに変えた。しかし、HDCを消し忘れた。
まぁ、単なる揚げ足取りだね。無くても何も問題無いよ。
63 :
名無し@沢村 :03/05/15 16:56
>>57 ヌヒよ、フォントのポイント数をフォントの高さに変換するために用意していたと見た。
HFONT CreateMyFont(HDC hDC, int nPoint, LPCTSTR lpszFace);
ウインドウをEnumWindowsで列挙して、ボタンをGetDlgItemで取得して SendMessageでBM_CLICKを送ってボタンを押しているんだけど 時々アクセスバイオレーションになったり、何も言わず落ちたりする。 なにか原因考えられますか?
>64 まずは IsWindow() かな?
66 :
デフォルトの名無しさん :03/05/15 20:22
Win32APIの文字列を渡す関数でよく、文字列といっしょに 文字数を渡しますがこれって何の意味があるのでしょうか?
バッファオーバーフロー対策 と思ってみるテスト
>>67 ありがとうございます。
os側はszで待つのでただのロスだとおもうのですが...
部分文字列を指定し易いとか
void hoge(char* szText) { lstrcpy(szText, "1234567890"); } : : char a[5]; hoge(a); こんなふうだと困るから。
Win32 APIが本当の文字列を使うようにすればよかったのにね。 おかげでバグてんこもり。
>>66 少なく指定すれば任意に削ることが出来る
その程度のことすら思いつかないほど思考が堅いのなら
プログラムを作るのは諦めた方がいい
TextOut みたいのじゃなくて LoadString みたいなののことを言ってるのかな。
>>73 いやまさにTextOut、DrawTextとかそんなのです。。。
>>77 なんでやねん。hoge関数がWin32APIだと思って。
TextOut って文字列を他のバッファにコピーしてるの?
>>74 いや、であれば70さんの例は答えではないと思います。
73さんのLoadStringと同様にバッファのポインタを渡してそこに値を
もらう(itoaとかも)のであれば理解できます。
が、TextOutとかはWin32の規約でszで渡すと決まっている以上
文字数を指定するのは意味がないと思います。(むしろ72さんの指摘
が正しいかと...)
要するに文字列の中から先頭の一文字だけ 表示したい場合などに利用できるということ
TextOutはszと決まっていない。馬鹿ばかりだな(藁
>>80 TextOutに渡す文字列の終端は\0ある必要はないんだよ?
文字数渡さなかったらOSがどこまで表示していいかわからないじゃん?
すまん。
>>84 の訂正
×\0ある必要はない
○\0である必要はない
>>86 MSDNに
>この文字列はゼロ文字 ('\0') で終わっている必要はありません。
となってますが...
>>86 違う
WindowsのAPIの文字列系は基本的にLPCTSTRで
>>88 Pointer to a constant null-terminated string
of 8-bit Windows (ANSI) characters.
となってますが...
Tって何か知ってるのかな?
>>86 MSDNのはLPCTSTR。よく見てみ。
>>92 ワイド文字ですか?
szであることにはかわりないと思うのですが
>>90 英語ヘルプにも
The string does not need to be zero-terminated,
と書いてある
\0を終端と見なさないため、文字列途中にわざと\0を入れて
それ以降も表示されるように文字数を設定すれば
\0より後ろの文字も描画される
>>94 >ワイド文字ですか?
違う
こんなことを書いている時点でAPIの仕様どころか型の意味も分かっていない
まぁまぁ。完全に何もわかってないから質問したんだろうし。
なんの話しているのか知らないけど、strcpyとmemcpyの違いみたいなものでしょ? \0を末尾として見れば便利だけど、文字列しか扱えなくなってしまう。
>>96 それは分かるのですが、それはTextOutA、TextOutWを使い分けで
対応できますよね。
>>97 教えてください。お願いします。
まぁとりあえずMSDNでTextOutの解説読めってこった。
見当違いだったみたい(鬱)
>>100 設定によって可変
型のヘルプくらい目を通せよ
>この文字列はゼロ文字 ('\0') で終わっている必要はありません。 これ読んだのかな?
>>103 それは解ってるんでないかい?それより TextOut がどうして
そんな仕様になってるかなんだが、俺は
>>99 で納得してしまった。
がしかし
>>102 でまた分からなくなった。
>>95 MSDNの英文のTextOutの解説を読むと確かにそうなっていました。
(MSDNが少し古いからでしょうか)
僕が完全に誤っていました。
レスをくださったみなさんお騒がせしました。m(__)m
世の中には文字列が\0で終わらない言語があるからでないかい AdaとかDとかそのへん。 そういう言語のことも考えるなら、本来全てのAPIで長さを渡すべきなんだろうけど、 やはりC優先で文字列そのものが重要なAPI以外は\0終端にしてると思ってた。 (VB、Delphiは言語がサービスで\0入れてくれるけど)
Delphiは知らんが、VBの文字列は最後は\0が二つ連続すると決まっている。
>>108 VBはBSTRなので\0終端ではないのでは?
>>109 他の環境と連携させるときに
>>66 みたいな勘違いがバグを出すので
ウザイからわざわざ付けているだけ
↑すんませんね。 またのこのこ来ますた。 MSDNの2001年10月リリースを入れたのですが、日本語の解説も 「\0で終端する必要はない」となっていますた。 すみませんでした。。。
112 :
デフォルトの名無しさん :03/05/15 22:19
矩形を描画したいのですが、Rectangleだと内部を塗られてしまいます。 ただの四角形を書きたいのですが、クリッピングとかするしか方法は ないのでしょうか?
>>112 ラインを4回引けばすむのにそうしない理由は何故ですか?
何か深い理由があるんですか?
是非教えてください
NULL_BRUSH
115 :
デフォルトの名無しさん :03/05/15 22:24
>>113 ラインを複数引けば必要ないRectangleがある理由を考えてみなさい。
>>113 こういう、何も考えないでレスする馬鹿、どこにでもいるな。
118 :
名無し@沢村 :03/05/15 22:35
ボタンを押したとき値を変数に代入して、ボタンを離したときそれを配列に書き込んで配列のインデックスをインクリメントしたいのです。 この処理はボタンを押したときか離したときどちらかにまとめてはされず、押したときと、離したときに別別にしなければ、どうしてもいけないのです。 でもそうすると、ボタンを早く押しすぎたり、離したときにマウスがボタンからずれてしまうと、配列の値がおかしくなってしまうのです…。 離したときにマウスがボタンがずれてしまうほうの問題は何とか解決したのですが、ボタンを早く押しすぎるときの解決法がどうしてもわからないのです。 ボタンを早く押しすぎても上手く値が配列に書き込めるようにするには、どうしたらいいのですか?
>>118 ボタンコントロールをサブクラス化して
マウスのアップダウンメッセージを取得すればすむ
>>114 ヌルブラシっていうのがあるんですね。
グリッドを書いているのですが、セルごとにクリッピングをかけるのは
イヤだなと思っていたのでとても助かりました。
ありがとうございました。m(__)m
121 :
デフォルトの名無しさん :03/05/15 23:10
win32apiを使わずにウインドーを出したり文字を出したりしたいのですが どうやってやりますか? マイクロソフトのAPIは使いたく無いので自分で考えたウインドーを出したいのです
122 :
デフォルトの名無しさん :03/05/15 23:11
サグクラス化について質問があります。 wavが鳴らされたときにキャッチできるメッセージってあるのでしょうか? よろしくお願いします。
>>121 DOS で、自分で VRAM に直書きするか。
自分で OS + Window System 作れ。
124 :
デフォルトの名無しさん :03/05/15 23:22
>>123 DOSで自分でVRAMに書くってどうやってかくんですか?
windowsで出来るんですか?
windows上でウインドウを作りたかったらM$のAPI使え
>>124 VRAMのアドレスは絶対値なので、場所さえわかれば簡単です
127 :
デフォルトの名無しさん :03/05/15 23:30
winapiって本当に使いずらいですね ユーザーインターフェースが少なすぎて 使い物になりませんよ せめてユーザーにもウインドーが作れるようにして欲しいです だからMSはアホなんですよ
そうですね。
>>127 結局、なにがやりたいんだ。
四角形でないウィンドウを作りたいんだったら
「リージョン ウィンドウ」でもキーにして検索しろ。
130 :
デフォルトの名無しさん :03/05/15 23:54
リージョン ウィンドーってMSのウインドーじゃありませんか 見た目が変わってもウィンドーの中でやってることは同じだから意味が無いです
そうですね。
132 :
デフォルトの名無しさん :03/05/15 23:59
つーか、MSのウインドーは出すのがめんどくさすぎる 自分で作ったほうがまだまし
はいはい。
134 :
デフォルトの名無しさん :03/05/16 00:06
頼んでも無いのにウインドーにタイトルバーとか×とか_とか口つけるのマジ 勘弁してもらいたいもんです 何もしなければは真っ白な箱が出来るもんなのに、 一体どういう考えで作ってるのか不明すぎます 金儲けの事しか考えて無いからアホなんですよ
つまんねぇよsageろ
お前がつけろと言わん限り、タイトルバーも_□×もつけないが?
ウインドウスタイルで思いっきり頼んでるはずなんだけど
138 :
デフォルトの名無しさん :03/05/16 00:13
ウインドースタイルを使わなければ真っ白になりますか? 私が言ってるのはこの事を言ってるんですよ
そもそもAPI使いたくないのになんでこのスレで質問してんだろう
釣り師警報発令中
アナルを使わなければ気持ちよくSEX出来ますか? 私が言ってるのはこの事を言ってるんですよ
足なんてただの飾りです。 偉い人たちにはそれがわからんのです。
なんのために非クライアント領域がWindowsによって提供されてるのかわかってんのか
GUIなんてただのおもちゃです。 消費者にはそれがわからんのです。
人生なんて玩具です。 人間にはそれがわからんのです。
147 :
デフォルトの名無しさん :03/05/16 10:20
遅レスだが。
>>100 LPC"T"STR の "T" は "Translate" ってことだよ。
UNICODE が #define されていれば LPCWSTR, そうでなければ LPCSTR に
VC++ が読み替えてくれる。
印刷に関して質問させて下さい。 EXCELファイルを右クリックして、自動印刷実行をしますと、 EXCELファイルを開いた際に設定した印刷設定、例えばトレイ・用紙サイズ が反映されます。この手法は、SetPrinterでデフォルトのプリンターの設定 を変更することなく、各ファイル毎の印刷設定で印刷がなされています。 ではこの手法を実現するためにどのようなAPIとレジストリを用いているの でしょうか? EXECELと同じように新規アプリケーションでファイル毎にトレイ選択・用紙選択 などを行い、デフォルトのプリンタ設定を変えることなく済ませたい考えです。 (プリンターのデフォルトの設定を変更するやり方は各ドライバーごとの DEVMODE構造体を扱う方法と認識しています。 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers 直下のドライバー毎の設定が保存されています。)
>>148 なんでおまいが147を騙ってるんだよ。
>>148 投稿する段階では、147のつもりでしたが投稿したら148に
なってました。済みませんです。
>>148 OpenPrinter(), SetPrinter()でいけそうだが。
155 :
148 ◆Kg.N7J02zE :03/05/16 11:05
>>154 SetPrinterはドライバーのデフォルトの設定を直接変更してしまう
ので、148の手法には使えないと認識しています。
>>155 いや、印刷後もとの設定に戻せばいいだけでは?
157 :
148 ◆Kg.N7J02zE :03/05/16 11:09
>>154 補足しますと、EXECELの場合ファイルを開いてプリンタのトレイを変更し、
用紙サイズを変更しても、プリンターのドライバーのデフォルトの設定は変わ
りません。・・・(1)
プリンターフォルダで設定できるのがドライバーのデフォルトの設
定です。(2)
SetPrinterは(2)の設定は変更しますが、(1)のような変更がきかないのです。
158 :
148 ◆Kg.N7J02zE :03/05/16 11:11
>>156 同一プリンタドライバでの印刷を、同時に複数のユーザが
行った場合、ドライバのデフォルトの設定が変わってしまうと、
ユーザの思ったような印刷ができません。
>>157 (1) OpenPrinter():ハンドル取得
(2) Getprinter():現在の設定を取得
(3) SetPriner():印刷設定
(4) 印刷実行
(5) SetPriner():(2)で取得した設定に戻す
(6) ClosePrinter():終わり
でダメなの?
160 :
148 ◆Kg.N7J02zE :03/05/16 11:30
>>159 レスありがとうございます
(4)印刷実行の間に,他ユーザから Getprinterされてしまうと,
もとの設定には戻らないと思います.
>(4)印刷実行の間に,他ユーザから Getprinterされてしまうと 他のユーザーが戻してくれるのを期待汁!てか、Open 〜 Close の間に 割り込むことはできるんか?ちょっと調べてくれや>148
162 :
デフォルトの名無しさん :03/05/16 11:53
TextOut関数を使うよりDrawText,DrawTextExを使った方がいいのでしょうか? TextOut関数について調べていたらDrawTextなるものを見つけて迷っています
>>161 調べてみます.実は印刷用アプリが別で以下のような構成です.
ご指摘で問題点が見えて来ました.これが原因かもです.
(1) OpenPrinter():ハンドル取得
(2) Getprinter():現在の設定を取得
(3) SetPriner():印刷設定
(4) ClosePrinter():終わり
(5) 印刷用アプリで印刷実行
(6) OpenPrinter():ハンドル取得
(7) Getprinter():現在の設定を取得
(8) SetPriner():(2)で取得した設定に戻す
(8) ClosePrinter():終わり
>>49 遅レス申し訳ないけど、GetNextWindowを使うとwindowのz-orderが取得できます。
最前面の一つ下のwindowが *概ね* 直前にアクティブです。。
最小化などでフォーカスを失った場合は直前のwindowが次のz-orderを持つとは
限りませんが、解法は私には分からないです。エロイ方はもっといい方法をお願いします。
>>162 ExtTextOutというのもあるよ(と更に困惑させてみる)
APIがイッパイあるってし・あ・わ・せ(はぁと なわけねーだろゴルァ!
167 :
デフォルトの名無しさん :03/05/16 13:30
WM_PAINT時にCreateWindowでWS_VISIBLE指定したり、 ShowWindowで表示させようとしたりしてるのですが、表示ができません。 無理なんでしょうか?
>>167 子ウィンドウをクリップしたいのなら親に WS_CLIPCHILDREN
スタイルを追加すればいいのだが、そういうことやりたいのとは
違うんかな
>>147 ありがとうございます。昨晩の66です。
LPCTSTRはUnicodeマクロが定義されているかどうかで
VCがASCII変数、Unicode変数に読み替えてくれるというこですよね。
それと同じ意味でTextOutもUnicodeのときはTextOutW、でないときは
TextOutAに読み替えられるから、いづれにせよOSは文字数を受け取ら
なくてもszを検知できるはずということを書いたのですが、
昨日はうやむやになってしまいました。間違っているのでしょうか?
>>170 最後は0じゃなくていいってはじめからいってんだろ!
win16apiのライブラリーとかヘルプのダウンロード出来るところ教えてください
>>170 \0を終端とみなさないから文字数を入れてやらないと
どこまで表示していいか判断できなくなる
昨日から言われているのに未だに分かってないのか
久々に本当の馬鹿を見た
>>167 問題点をはぐらかすような質問は止めれ。
どうせ WM_PAINT じゃなくても表示できんのだろ?
GetThreadSelectorEntry ってどう使うんだ。(具体的に) あまり情報がないんだが
386のセグメントが分かってればすぐに使えると思うけど。
>147 さらに遅レス。LPCTSTRって Long Pointer Const To STRing だと思ってた。
TはTinyのT
TはTinkoのT
Q. What's the meaning of `T'? A `T' means `Tamachan'.(He is the most popular animal in Japan.) Reference: ANSI Sec. 123.4; ISO Sec. 5.67
>>174 は?意味がわからんのですが…
WM_CREATEではできたけど、WM_PAINT時に表示できなかったから聞いてるのですが?
日本語読めますよね?
ちなみにShowWindowでは表示できました。
CreateWindowでWS_VISIBLEをしても表示できない理由はまだわかってませんが。
>>181 WM_PAINT のたびに CreateWindow() してるの?
どういう仕様なのか分からんけど EndPaint() の後に書いても駄目だろうか。
>>182 あ…そうなっちゃいますね…まずいヨカン
ではCreateWindow時に今後表示させる場所にWindowを全部非表示で作成しておいて
SW_SHOW, SW_HIDEで表示、非表示を切り替えるのがいいのでしょうか?
○WM_CREATE ×CreateWindow でした
少なくとも WM_PAINT でウィンドウを作るなんてのはナンセンス。 サイズ変更枠をドラッグさせるだけでウィンドウが作られるなんて 考えるだけで。。
>>186 ありがとうございました!
今後気をつけます。
WM_PAINT時にウィンドウのリージョンを更新するような処理は禁止 WM_PAINT時にウィンドウのリージョンを更新するような処理は禁止 WM_PAINT時にウィンドウのリージョンを更新するような処理は禁止
EndPaintじゃねーよなw SetWindowRgnのことか?
BeginPaintだろアフォ
191 :
デフォルトの名無しさん :03/05/17 21:31
ところでHDCの取得には BeginPaint()とGetDC()があるの? 使い分けってしてますか?
用途分かれてる気がするケド
>>191 BeginPaint()はWM_PAINTハンドラ内専用。
WM_PAINT内でGetDC()を使うと無効領域がクリアされないから
永遠にWM_PAINTを受け取ることになる。
wm_paint内ではbeginpaint それ以外はgetdc
195 :
デフォルトの名無しさん :03/05/17 22:30
TはTakeshiのT
Typename
197 :
名無し@沢村 :03/05/18 08:56
おまいらよwin32APIでプログラムをつくるのはいいが、レジスタやメモリには予約ビットというのがあるのを知っているか? おまいらよ、予約ビットというのはプログラマが勝手に使ってはいけない領域だ。 おまいらよ、この予約ビットの存在を知らずにプログラミングすると、プログラムが暴走したりシステムがハングアップしたりして、大変危険だよ。 例えばmallocで1000バイトばかりメモリを確保した場合、その中に予約ビットが含まれていると、プログラムはどこもおかしくないのに、突然フリーズしてしまったという不思議な現象が起るのよ。 不正なメモリアクセスというやつだな。 この予約ビットというのはメモリのそこかしこに散りばまられているから、正常にメモリを確保するのは至難の技だぞ!! プログラミングって大変だぞ、おまいらよ!!
沢村よ、最初の頃の元気がないな。 > 例えばmallocで1000バイトばかりメモリを確保した場合、その中に予約ビットが含まれていると 確保したのに、 予約されてて使えないビットがあるというのはいかがなものか。
WinSock2 使ってちょっとしたサーバプログラムを作ってる。 socket() → bind() → listen() の後に... WSAAsyncSelect(Socket, Window, Accepted, FD_ACCEPT) ってやって、外部から接続に行くとちゃんと WindowProc() が呼ばれる。 で WindowProc() の中で accept() するんだけど、accept() が失敗したら MessageBox() でメッセージを出すようにしてた。 で、最初動かした時に accept() の引数が間違っててメッセージが出るのはいいんだけど、1つだけじゃなくいっぱいでて異常終了する。 デバッガで追っかけると、MessageBox() 呼んだ時に、WindowProc() が呼び出されて、もう一回 MessageBox() が呼ばれて... で、最終的にスタックオーバーしている。 これって仕様なの ?
スタックオーバーフローを防ぐのはプログラマの責任です
201 :
デフォルトの名無しさん :03/05/18 10:27
>>199 WINAPIでの話しだけど、
WM_PAINTでMessageBox()を書くと、無限ループになる。
(最終的には止まるが)
よく、winsockについては知らんが
MessageBoxが怪しいと感じる。
MessageBoxがでたら次はWM_PAINTでWindowProcが呼び出されている説は?
>>202 前、デバッグでMessageBoxをWM_PAINTに書いて
びっくりするくらいMessageBoxがなかなか消えなかったので、
>>199 さんがもし、知らないならと思って書いた。
>>186 ,
>>188 は知ってたよ。けど、書いた。念のため。
>>201 プログラム上は、WM_PAINT とか (と言うか、Socket 関係以外) が来たらそのまま DefWindowProc に渡しているだけ。
ウィンドは作ってるけど、非表示だから WM_PAINT は来ていない。
タスクトレイ常駐させて、左クリックで表示するようにしているのでその時にはじめて WM_PAINT が来ていることも確認した。
どうも、accept で失敗しているので再度メッセージが飛んできているみたい...、でも誰も DispatchMessage() してないはずなんだが。
MessageBox() 内で DispatchMessage() されちゃうのかなぁ...。
>>202 荒れるからアフォと書くなよ。
ちょっと上にも出てたんだから WM_PAINT の件ぐらいはみんな理解してると思う。
>>201 それはチミ、こういうことかね?
WM_PAINT → MessageBoxをウィンドウの上に出す → MessageBoxが消えると再描画発生
↑ ↓
└―――――← ヽ(`Д´)ノ ウワァァン―←―――――――――――┘
>204 >MessageBox() 内で Dispatch... これは無いだろ。独自のモーダルループに入るはず。 こういう場合はデバッガじゃなくトレースした方が良かろう。 それとMessageBox()の親を自分(非表示の)にしてない? 呼んだ時は知らんが、閉じた時に無条件に親が生かされたと思うから、この場合はデスクトックなどにするべきじゃろう。
はあ?上のメッセージボックス(や他のアプリ)が移動しただけでも、 Enable/Disableに関係無くWM_PAINTは来るでしょ。
>>206 「独自のモーダルループ」は別にウィンドウを制限してないから
しっかりDispatchされる
209 :
デフォルトの名無しさん :03/05/18 18:27
ウインドーの中に四角いウインドーじゃ無い箱作ってドラッグさせたり その箱クリックしてメニュー出したり糸をくっつけてくるくる回したりしたいんだけど 一番効率的なやり方教えてください
210 :
デフォルトの名無しさん :03/05/18 18:34
>>209 WS_PUPOPWINDOW
そうすればドラッグ、クリック時にメッセージ。
描画は自己責任。
メニューは自作。またはオーナードロー。
が多分一番楽。
エディットコントロールを2つ並べて、 その境界線をドラッグで動かせるようにするにはどうすればいいですか?
>>211 エディットコントロールを包括するフレームウインドウを作り、エディットビューを形成する
>>206 > それとMessageBox()の親を自分(非表示の)にしてない?
MessageBox(0, ...) としてるから問題ないと思うんだけど。
>>207 EnableWindow() と混乱してない ?
ShowWindow(SH_SHOW or SH_HIDE) だよ。
>>208 ごめん理解できない。
MessageBox() 表示すると、システムが勝手に俺のウインドメッセージまで Dispatch しちゃうってことなの ?
メインループには戻ってないのに ?
>>213 MessageBoxはシステムが勝手にユーザーのウインドウをDispatchするよ。
メッセージループしてなくてもMessageBoxが表示されてる間はしてるのと同じ状態になる。
多分MessageBoxで隠れた部分を再描画するためにWM_PAINTを呼び出す必要があるからなんだろうけど、
俺の場合はWM_PAINTとかじゃなく、WM_TIMERが呼び出されちゃってはまったからなぁ・・・
>>214 9x系だとスワップファイル、NT系だとページファイル
じゃなかったっけな
>>214 確かに、別物であるかのように呼び分けてるね。
誤訳かと思って米MSを確認したら、そちらでも呼び分けてた。
>>216 リンク先に「これはNT4.0の機能」とあるので、9x系は関係無いっぽい。
ページファイルが仮想メモリのことでスワップファイルは実際に作られるファイルのこと
セグメント: 1つのベースアドレスにオフセットを加えてアクセスする主記憶装置の論理範囲 スワッピング: セグメント全体を2次記憶装置にバックアップ/リストアすること ページング: セグメントの部分を一定のサイズを単位としてバックアップ/リストアすること
>>215 なるほど確かに普通のアプリケーションでもダイアログボックスの後ろの領域の再描画はされてるから、WindowProc は呼び出されないとダメだね。
つーことは、WindowProc 内で MessageBox は使うのは要注意と言うことだな。
> 俺の場合はWM_PAINTとかじゃなく、WM_TIMERが呼び出されちゃってはまったからなぁ・・・
だねぇ、WM_PAINT とかならすぐ気付きそうなもんだけど、WM_TIMER とか Socket なんかだと関係なさそうだったから気付きにくいよね。
ありがと、1つ経験値が上がったよ。
221 :
デフォルトの名無しさん :03/05/18 23:12
矩形内に文字列を出力するのにDrawText()を使っているのですが エクセルのような「縮小して全体表示」をするのにフォントサイズを 0.1ポイントづつ減らしてループで矩形内に収まるかを計算しているの ですが、これって専用のAPIで提供されているのでしょうか?
222 :
デフォルトの名無しさん :03/05/18 23:17
Dispatchするというのは 日本語で言うとどんな意味ですか?
>>222 殺す
もっと一般的な意味があったと思うけど・・・
>>222-223 dispatch[dispトv]
v.t.
1 [III 名(副)]〈使者・軍隊などを〉(…に)急派[派遣]する;〈手紙などを〉(…に)急送[発送]する《to...》:〜 the Foreign Minister to the U.N. General Assembly 国連総会に外務大臣を(急いで)派遣する.
2 〈面会人などを〉さっさと送り出す;《話》〈仕事を〉手ぎわよくかたづける;〈食事を〉手早く済ませる:〜 a salesman セールスマンにお引き取りを願う.
3 〈人・動物を〉(とどめを刺して)殺す,「かたづける」:〜 a wounded deer 手負いのシカにとどめを刺す / 〜 to eternity 殺す.
-n.
1 U (使者などの)派遣,特派;(手紙などの)発送,投函(かん).
2 UC (人の)殺害,死刑執行.
3 U すばやい処理;迅速さ.
4 速達便;(軍事・外交などに関して送られる)公文書;(新聞記者の)特電;〔商〕(急行)運送;貨物(運送会社):the New York Times 〜 from Tokyo ニューヨークタイムスの東京からの特電.
語源 イタリア語より.もとはスペイン語 despachar(des-離れて+pachar 固定する=固定から離れる→急ぐ)
225 :
デフォルトの名無しさん :03/05/19 00:06
win2000です。 ファイルからビットマップを読み込んで印刷したいと思っています。 その途中の、LoadImageを使ってbmpを読み込むところで苦戦しています。 下のようなコードなのですが、どうやってもNULLしかかえってきません。 当然、ファイルは存在しています。。。 なにかミスしてます? char *fname = "c:\\temp.bmp"; hbmp=(HBITMAP)LoadImage ( NULL,fname,IMAGE_BITMAP, 0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION);
226 :
デフォルトの名無しさん :03/05/19 00:11
>>227 二重派遣だな(゚∀゚)
(´Д⊂ ウウ…
229 :
デフォルトの名無しさん :03/05/19 07:17
>>225 とりあえずFormatMessageしてみそ
>>221 DrawTextで裏画面に描画、
StretchBltで裏のを表に縮小コピーの方がいいと思いますが。
ヘルプは何度も読んだのですが、第1引数は第6引数にLR_LOADFROMFILEを指定していれば無視されるようなことが書かれていたのでNULLにしていました。 一応GetModuleHandle( NULL )と(HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE )で試しましたが同じでした。 FormatMessageでは、「この操作は正しく終了しました」と出ます。 もちろん、LoadImageではNULLが返ります。 誰か助けてー
DirectXのAPIで作成したBMPだったんだけど、そっちがおかしかったみたいです。 ペイントだと表示できるのに。 BMPのバージョンとかあるの?どうすりゃいいんだろう?(泣)
>>232 Yes。BMPには複数のバージョンがある。
>>233 LoadImageに失敗するコードを貼り付けておきます。
ペイントで適当に作ったBMPでは成功しています。
>>234 その場合、LoadImage以外のAPIを使えば解決するの?
char *fname = "c:\\tempsurface.bmp";
LPDIRECT3DSURFACE9 backbuf;
AGlobal::GetD3DDevice()->GetBackBuffer(0,0,D3DBACKBUFFER_TYPE_MONO,&backbuf);
D3DXSaveSurfaceToFile(fname,D3DXIFF_BMP,backbuf,NULL,NULL);
backbuf->Release();
if((hbmp=(HBITMAP)LoadImage (
NULL,
fname,
IMAGE_BITMAP,
0,
0,
LR_LOADFROMFILE|LR_CREATEDIBSECTION
))==NULL)
{
GetLastError()...
}
>>234 バージョンってどんな?16色、256色、1670万色の事?それとも他にある?
>>232 >>235 ペイントで開くと言うことはプログラムでの開き方がおかしいと言うこと。
僕が使うのはCleateFileか標準Cだから、LoadImageは余り分からないけど
最後の引数をLR_CREATEDIBSECTION|LR_LOADFROMFILE|LR_DEFAULTSIZE
にすると動?
237 :
デフォルトの名無しさん :03/05/19 14:37
ステータスバーのサイズ変更用グリップのサイズって固定なんでしょうか? それともデスクトップの設定によって可変なんでしょうか? 可変ならばグリップサイズを取得するAPI、もしくは方法を教えてください。 今のところグリップ幅15程度にハードコーディングしてしまっています。
接続されてるジョイパッドの情報を取得するAPI教えてください。 お願いします。
>>239 掲示板で質問すれば、君みたいな親切くんが検索の仕方まで
教えてくれるからなあ。
>>230 そんな方法があるんでつね。
やってみます。ありがとう。。。
242 :
デフォルトの名無しさん :03/05/19 20:04
windowsフォルダーの中の起動に必要な重要なファイルとかを 使っている人にばれないように消去する方法教えてください
243 :
デフォルトの名無しさん :03/05/19 20:06
>>236 LoadImageはDDB型。
CreateFile,標準CはDIB型。
DirectXは知らんが、編集はDIB型がいい。
DIB使うなら検索でBMPフォーマットから知れ。
244 :
デフォルトの名無しさん :03/05/19 20:14
>>242 削除プログラム作って、
レジストリのキー「RUN」に追加する。
書き方は他のを参照。
スタートアップに入れる方法をあるが、
ばれやすそうなんで、そっちオススメ
マルチデスクトップ環境で、マウスカーソルがあるモニタの 左上のスクリーン座標かスクリーン座標系のRECTを取得したいのですが、 何かいい方法はありませんか? POINT p; MONITORINFOEX monInfo; GetCursorPos(&p); monInfo.cbSize =sizeof(monInfo); GetMonitorInfo(MonitorFromPoint(p,MONITOR_DEFAULTTONEAREST), &monInfo); として、 MONITORINFOEX構造体のrcMonitorでうまく取得できると思ったのですが、 実際作ってみるとうまくいってないみたいです。 よろしくお願いします。
246 :
デフォルトの名無しさん :03/05/19 21:04
>>245 GetClientRectでデスクトップのハンドル使っても
駄目なのか?
>>246 それだとクライアント座標系での取得になってしまうので、
左上の座標は必ず(0,0)になってしまうと思いますし、
モニタの座標ではなく、すべてのモニタを囲む長方形(VirtualDesktop)の
左上、右下の座標が取れるだけだと思うのですが間違ってますか?
スクリーン座標で
(0,0) (1600,0) (2400,0)
┌───┬──┐
│1 │2 │
│ ├──┘(2400,600)
└───┘
(0,1200)(1600,1200)
のようなモニタ配置だとして、「2」のモニタのスクリーン座標(1600,0)-(2400,600)が
ゲットしたいのです。なにかよい方法はないでしょうか・・・。
激しくずれました。 すいません。
249 :
デフォルトの名無しさん :03/05/19 22:19
>>248 レジストリにその情報がある可能性が高いと思われ。
あるかは知らんが。
251 :
デフォルトの名無しさん :03/05/19 23:54
Windowsのデスクトップ上のどこかで IMEがON/OFFされたことを検出する方法はありますか?
252 :
デフォルトの名無しさん :03/05/19 23:55
ホイールマウスのホイールを無効にするにはどうしたら良いでしょうか?
253 :
デフォルトの名無しさん :03/05/20 00:06
レジストリーを完全に破壊するにはどうやったら良いですか? バックアップとかあるのも壊したいのです
そのマシンの前に立つ。 次に
( ・∀・) | | ガッ
と ) | |
Y /ノ 人
/ ) < >__Λ∩
_/し' //. V`Д´)/
(_フ彡 / ←
>>254
257 :
(;´Д`) :03/05/20 01:10
>>243 LoadImageでDIBも問題なく開けますが・・・
258 :
動画直リン :03/05/20 01:11
LoadBitmap と勘違いしたんでしょ
MSDN ライブラリ Visual Studio 6.0 には Windows NT : LR_LOADFROMFILE はサポートされていません。 なんて事が書いてあるが これってNT3.1の事だろうか…
>>245 GetMonitorInfoで駄目ならEnumDisplayMonitors使ってみたら?
あと、一応MonitorFromPointの戻り値を確認してみては?
AMDのOpteronで、Win32から 64ビットアプリケーションを作りたいんだが、アセンブラプログラムが必要? C++Builderでできる?
64bit対応の命令含んだプログラムを作ることと 64bitアプリを作ることは違うのだが理解しているのだろうか? DOSプログラムで32bit命令を使ったからといって 32bitアプリを作ったことにはならないのだが 馬鹿そうだから理解していないんだろうな
267 :
デフォルトの名無しさん :03/05/20 09:45
後ろにExって付いてるやつと付いてないやつはどっちがいいんですか? 効果はほぼ同じですよね?Exの方が優れているのでしょうか?
>>267 ヘルプに書いてあるに何故読まない?
いくら盲目でも読み上げソフトぐらいあるだろう。
ヘルプにはAPIのことについて書いてないです Delphi6per
>>269 何故MSDNのオンラインサイトを見ない?
>>268 >>270 このまえから、どうでもいい質問(ネタ)かいて、
かまってもらおうとしている奴だから、相手しないほうがいいよ。
このスレの存在意義がなくなるからです 自分で調べたんですけど、書いてあげようかなと思って^^;
273 :
148 ◆Kg.N7J02zE :03/05/20 11:51
こんにちは,先日プリンタ設定の方法について質問した者です. 結局,OpenPrinterで開いてSetPrinterで設定しても,OpenPrinter しているうちに他のクライアントがOpenPrinterしてSetPrinterできて しまうことが分かりました. (1) OpenPrinter():ハンドル取得 (2) Getprinter():現在の設定を取得 (3) SetPriner():印刷設定 (4) 印刷実行 (5) SetPriner():(2)で取得した設定に戻す (6) ClosePrinter():終わり の過程の途中で他クライアントから同じ過程を実行されてしまうことも 可能ということなんです。 プリンターの設定を変える過程で、他のクライアント から同じPGで変更されてしまうと、プリンタ設定が元に戻らないという現象です。 識者の方、よろしければご教授下さい。
>>273 ヘルプに書いてあるに何故読まない?
いくら盲目でも読み上げソフトぐらいあるだろう。
ボタンがフォーカスを得たときの点線を描画されないようにしたいのですが、 オーナードロー使わずにできる方法があれば教えて頂けないでしょうか。
k i e r o
278 :
デフォルトの名無しさん :03/05/20 18:37
オーナードローしか方法は知らんが、どんなわけありでそんな奇妙な仕様にしたいのだ。
>278 何だこれ! CD-ROMがイジェクトされたぞ。
ほんとだ。 ブラクラの類だろうけど、面白そうだからクリックしちゃったよ。
んなわけない。 ソース見ればわかる。 ただのVB厨のいたずらw
>>279 ボタンが幾つか並んでいる状態でクリックを繰り返すと
点線が残って見た目がきれいでなかったので・・・
点線はとりあえずこのにしておきます。
スレの流れにばっちりはまった書き込みしてしまった
ようですみません。逝ってきます。
set cdaudio door open
286 :
デフォルトの名無しさん :03/05/20 23:10
アイドル処理ってどうやってますか? メッセージループにPeekMessageを使うとCPU使用率が100%になってしまうので 100ミリ秒でタイマーセットしたんですが、他に常套手段てありますか?
>>286 GetMessage() じゃ何か不満でもあるのか ?
GetMessage使ったらメッセージが来るまでブロックされてアイドル処理もあったもんじゃない
>>287 MSG msg;
while(GetMessage(&msg, NULL, 0, 0) > 0){
OnIdle(); // アイドル関数
TranslateMessage(&msg);
DispatchMessage(&msg);
}
こういうことでしょうか?
ペゾルド本5版(P235)にデッドタイムを利用するためにPeekMessageを使う方法が
あったのでてっきりPeekMessageを使うものだと思ってました。
GetMessageだとキューからメッセージを取り出すまで制御を返さないのですが
問題ないんでしょうか。
>>289 Peekしてメッセージが着てなかったら
Sleep(0);しる。
ふつうWaitFor系使うだろ
WaitFor系って待機は出来るけどアイドル処理挟めたっけ?
みんな「CPU使用率が100%」にばかり目がいって「アイドル処理」を忘れてやしないか…
>297 ヒントはでてるから無問題。
WaitForMultipleObjectsExでタイムアウトに100ミリ秒セットすればいいんじゃないか? MFCのようにメッセージ後に一気に走らせるタイプならそもそもPeek/GetMessageで十分だし。
>>299 それなら別にGetMessageとタイマー使えばいいんでは
ゲームならまだしも普通のWinアプリでメインスレッドにSleepやWaitForを入れるもん?
ちなみにMFCのアイドル処理は特定のメッセージ後はアイドル関数を呼ばないようにしたり、フラグ使ったりして呼び出し回数を抑制してるっぽいね
286はどういう処理がしたいんだ? OnIdleは定期的に呼んで欲しいのか? 定期的に呼んで欲しいならSetTimerでも使った方がいいかと。
>>304 MFCがアイドル時にしてるようなこと、例えばメニューやコントロールの更新ハンドラを
実行したいと思っています。
具体的にはリストビュー内のアイテム数をステータスバーに表示させるといったことです。
そのため、定期的に呼ばれる必要はありますが、精度はそれほど気にしません。
なので、今のところタイマーで100ミリ秒程度にしてるんですが、もっと良い方法や
常套手段があるのなら教えて欲しいと思い質問しました。
>>305 の用途だとSleep/WaitFor〜は使いませんよね?
>>305 それならそうとはじめから書け。
あまり感心しないぞ。
>>278 Set oWMP = CreateObject("WMPlayer.OCX.7" )
Set colCDROMs = oWMP.cdromCollection
if colCDROMs.Count >= 1 then
For i = 0 to colCDROMs.Count - 1
colCDROMs.Item(i).Eject
Next
End If
ダサッ!For Each 使えよ。
>>308 (´-`).。oO(…使えたかなぁ?)
なんか前やってみてダメだった記憶があるんだ
>>305 PeekMessageでメッセージが無かったらOnIdleを呼んでからWaitMessageしる
int CWinApp::Run(void) { bool bIdle; long lCount; MSG Msg; bIdle = true; lCount = 0;
while(1){ if (::PeekMessage(&Msg, NULL, 0, 0, PM_NOREMOVE)){ if(!::GetMessage(&Msg, NULL, 0, 0)) break; if(!this->PreTranslateMessage(&Msg)){ ::TranslateMessage(&Msg); ::DispatchMessage(&Msg); } bIdle = true; lCount = 0; } else if(bIdle){ if(!this->OnIdle(lCount)) bIdle = FALSE; else ++lCount; } else ::WaitMessage(); } return Msg.wParam; }
bool CWinApp::PreTranslateMessage(MSG *pMsg) { return false; // trueを返すとディスパッチしない } bool CWinApp::OnIdle(LONG lCount) { return false; // trueを返すと処理を続ける }
おっと間違い >>if(!::GetMessage(&Msg, NULL, 0, 0)) >>break; if(Msg.message == WM_QUIT) break;
たびたび訂正 >>if(Msg.message == WM_QUIT) >> break; ↑にすると動作がおかしくなる ↓のままでよかった if(!::GetMessage(&Msg, NULL, 0, 0)) break;
316 :
デフォルトの名無しさん :03/05/21 05:33
みなさん、JPEGの保存てどうやってますか? 標準APIじゃでいないよね?ライブラリは何使ってる?
317 :
名無し@沢村 :03/05/21 05:42
libjpeg GDI+
フォルダを選択するダイアログってありますが そのダイアログにフォルダを作成するボタンつきのが ありますよね。 あれってどうやったらできるのでしょうか?
>>319 CreateWindowでボタンを直接作成、ダイアログをサブクラス化してメッセージを処理。
321 :
デフォルトの名無しさん :03/05/21 09:23
>>274-275 設定の衝突を避ける方法は
MSDNにも載っていないことが分かってないDQN発見。
323 :
デフォルトの名無しさん :03/05/21 12:42
>>315 >動作がおかしくなる
PeekMessageのPM_NOREMOVEをPM_REMOVEにすればいいんでないかい
広末涼子はアイドルか田舎
プリンタのspooler設定を自分でしなければいけないのはけっこう妙な仕様の気もするが
下位APIなら当然か…
>>325 WaitMessageのかわりに
MsgWaitForMultipleObjectsでタイムアウト値を指定すれば
ある程度定期的にOnIdleを実行できる
別にタイマでもいいけど
330 :
デフォルトの名無しさん :03/05/21 21:39
editorの窓の中に行番号ふるにはどうしたら いいですかね。 もしかしたら、別窓
331 :
デフォルトの名無しさん :03/05/21 21:55
ReadProcessMemoryの第2引数に渡す ベースアドレスと言うのはどういうものなのでしょうか? 恥ずかしながら、とあるエロゲーのデータを個人的に 変えてみたくて色々調べたのですが、どうも良く分からなくて。 GameHackというシェアウェアの試用版で、目的の箇所の アドレスっぽいのは分かったのですが、これをそのまま使っても取得できませんでした。 (「メモリロケーションへのアクセスが無効です」と出ます) 昔で言うオフセットとセグメントみたいなのが必要なのか、 あるいは0x400000辺りを引かなきゃとか・・・、 そのツールのアドレスが汎用的では無いのか・・・ 自分なりに調べたのですが、さっぱりでして。 厨房エロパワー丸出しですが、本人至って真剣です。レス頂ければ幸いです。
DWORD val; val=1; if(WSAIoctl(sock,SIO_RCVALL,&val,sizeof(val),NULL,0,&d,NULL,NULL)==SOCKET_ERROR){ printf("WSAIoctlErr:%d\n" ,WSAGetLastError()); } を実行するとWSAEINVAL(10022)が帰って来るんですが、何故でしょうか? unsigned intでやっても同じエラーです。どなたかヒント頂けないでしょうか?
エロは最大のモチベーションなり
>>334 レスthx
当然Administratorです。
WinXP/Win2000でテストしましたが、結果は同じです(´・ω・`)
Windowのサイズ変更をある単位ごとに制限する方法がよく分かりません。 つまり、例えば枠を掴んで8pxごとにカクカクとサイズを変えるような…
ウィンドウフックしてサイズ変更捕まえる。
WM_WINDOWPOSCHANGINGで弄るとか。
WM_SIZINGとか
>>335 まったくです<(*´∀`)
帰ってまでPCに向かうのは久しぶり
しかし、やはりレス無いですねぇ…
>>337 340さんも仰ってますが、WM_SIZINGで
wParamの値(WMSZ_RIGHTとか)を調べて、
場合分けでサイズ変えてくのが良いかも
lParam(=LPRECT)の値を変えると、そのままウィンドウサイズになりまする
>>332 普通に読みたいアドレスを渡すだけだよ。
他の引数に問題あるだけかと。
そのプロセスに対してアクセス権はあるの?
>>342 いやはや、おつき合いありがとうございます。
PROCESS_ALL_ACCESSで開いてはいます。
しかし、見当違いの値が入ってるとかならともかく、
エラーがでるってことは、仰るとおり他がダメそうですねぇ。
普通のアドレスで良いと、分かっただけでも助かりました。
もう一度ハァハァしながら見直してみます。レスありがとうございました。
そもそもアドレスが間違っているのではないかと… あるいはnSizeがおかしいとか(0だとエラーになるのかな?)
345 :
デフォルトの名無しさん :03/05/22 18:18
質問ですが、 InsertMenu等でシステムメニューを追加したのですが その追加したメニューにサブメニューって作る事はできますか?
どうでもいい事なんだがテンプレの、その3へのリンクが間違ってるぞ。
Build5から代々Duild11まで気付かないのは、それだけ過去ログを見ない人が多いのか・・・
正しくは
http://pc.2ch.net/tech/kako/1017/10170/1017072275.html で過去ログさらっと見たところ無かったので質問させてください。
名前付きmutexの名前一覧を取得する方法はありますか?
何か過去ログ見ると、SPYでmutexの文字列見つけて・・・っていうのが
あったので、SPYで出来るんならAPIがあると思うんですが。。。
>>345 CreatePopupMenu()でサブメニュー作る。
で InsertMenuItem() でメニューにサブメニューを追加、かな?
メニューバーとツールバーの境界線を消す方法は無いですか? メニューを付けずにツールバーだけを付けたウィンドウの場合、 あの境界線が見えてしまってかっこ悪いです。
>>347 ありがとうございます。
早速試してみます。
350 :
デフォルトの名無しさん :03/05/22 21:22
spy++のファインダーのアイコンですが、 ドラッグして他のウインドウの上にあわせたりできますよね あれってどうやって実現してるんですか?
>>350 多分だけど、ドラッグされたらカーソルをファインダーのアイコンに変えて
逐一WindowFromPointあたりの関数使ってターゲットされてるウインドウを取得して
そのウインドウにドラッグ判定させて枠表示・・・みたいな感じじゃないかなぁ
Spy++の中身見てみないと分からないが
Windows2000やXPでタスクトレイに吹き出し型のメッセージボックスって 出せますよね。 あれをやりたいのですが、参考になるサイトとかありませんでしょうか?
質問です。 親窓に子窓をはりつけて、子窓のウィンドウプロシージャ内で WM_KEYを待っているのですが送られてきません。親窓に送られて いるようです。マウスイベントは子窓で受け取れているのですが、 キーイベントはどうしたら受け取れますか?
357 :
名無し@沢村 :03/05/24 02:22
358 :
デフォルトの名無しさん :03/05/25 15:35
FILE_FLAG_DELETE_ON_CLOSEって 後から取り消すことはできないのですか?
ハードリンクしてもだめ?
ぎゃあ、誤爆した・・・ スマソ。
VisualC++のWin32 ApplicationでRECT,POINT,SIZEの構造体をグローバル変数 として使うのは無理なんでしょうか?(関数内では使えることを確認してます) インクルードファイルがwindows.hだけではだめとか?
>>362 できる。
なぜ、できないと思ったのかは知らんが・・・
ソンナおかしなことはないと思う。
365 :
デフォルトの名無しさん :03/05/26 13:38
ハンドル、デバイスコンテキスト この二つの言葉の意味を教えてください。
366 :
デフォルトの名無しさん :03/05/26 14:00
ハングルと出歯亀コンテストの別名です
デバイスコンテキストのハンドルが必要になるファンクションとはどういったものですか
描画関連色々
デバイスコンテキストに対して何らかの操作を行うもの。
>>365 ハンドルってかなり抽象的だよね。何にでも使えるし。
ようするに、ある何かのデータ空間の1つのデータに対する一意なindexの事だよ。
ハンドルっていうのは、車に付いてるハンドルと同じだよ その車のハンドルが分かれば、その車を操作できるようになるよ
372 :
デフォルトの名無しさん :03/05/26 15:49
netapi32.dllを動的リンクして lngReturn = NetMessageBufferSend(NULL,address,fromname,(BYTE *)msg,sizeof(WCHAR) * lstrlenW(msg)); とした時にlngReturnの値がAPI本と合いません。 相手(送信先)が存在しない場合にlngReturn == 2273になるはずですが 225が帰ってきます。 何故でしょう?
373 :
デフォルトの名無しさん :03/05/26 17:09
デバイスコンテキストハンドルのビギンペイントが ゲットディーシーの意味など分かりやすく説明してください ゲットディーシーが何をしてオブジェクトと構造体の関係なども教えてください helpみろとか自分で調べろみたいな荒らしは放置でよろしくお願いします
374 :
動画直リン :03/05/26 17:13
376 :
デフォルトの名無しさん :03/05/26 17:27
MessageBoxで表示されるウィンドウの右上の閉じるボタンを灰色(無効)にするにはどれを指定すればいいんでしょうか
>>373 なるほど、高度な釣りとはこうやるのか。
質問の回答ではないけどマジレスすると、
「何が分からないのか分かってから質問を書く」
「何から何まで全ていっぺんに教えてもらおうとする」
事はしない方がいいと思うよ。社会でもネットでも。
「何が分からないのか分かってから質問を書く」 ↓ 「何が分からないのか分かってないのに質問を書く」
379 :
デフォルトの名無しさん :03/05/26 17:41
380 :
デフォルトの名無しさん :03/05/26 18:02
ビットマップのフォーマットを考えた奴は誰ですか? 爆弾を投げつけたいです。
>>379−383
POINT giko = {2, 2}; だとうまくいきました. POINT mona; giko.x = 2; giko.y = 2; だとerror C2501,C2371が出るのは正常なんでしょうか?
>>384 gikoなのかmonaなのかはっきりせい。…というのはどーでもいいが、
グローバルでは変数/関数の"宣言"以外のことはできない。
> giko.x = 2;
> giko.y = 2;
代入とか禁止。
MessageBoxで表示されるウィンドウの右上の閉じるボタンを灰色(無効)にするにはどれを指定すればいいんでしょうか
>385 なるほど.ありがとうございますた. #monaはgikoの間違いでした.スマソ
388 :
デフォルトの名無しさん :03/05/26 20:39
>>379 誤爆なんかな?
でも、
・例えば検問を知らずにシートベルトしない
・検問をしているのを知っているので、せめてその間はシートベルトする
では、どちらが本当に正しいのか。
389 :
デフォルトの名無しさん :03/05/26 20:43
VC.NET みたいなインターフェースって どんな風に実装されているの?ポインタだけでもいいんで教えてください。
390 :
デフォルトの名無しさん :03/05/26 22:25
質問おながいします。m(__)m ウィンドウのクライアント領域を任意に操作することは できるのでしょうか? 例えばコントロールで上下左右に10ピクセルの非クライアント領域 を設けてそこはPGから触れないようにしたいのですが。。。
>>390 描画の制限だけならSelectClipRgn
>>391 レスありがとうございます。
PGにはあくまで左上を原点として描画させたいので、できれば
リージョンではなくクライアント領域を変更したいのですが。。。
>>392 WM_NCシリーズで色々するんじゃなかったかな。
とりあえずクライアント領域のサイズ変えるのはWM_NCCALCSIZE。
>>392 それではSetViewportExtEx とか SetWindowExtEx とか。
394を訂正 SetViewportOrgEx か SetWindowOrgEx
>>393 スゴイ!APIではなくてWMなのですね。MSDNでも日本語訳のSDKドキュメント
がなく全く知りませんでした。
>>394-395 クライアント領域を触らずに実現する方法もあるんですネ。
PGはクライアント、非クライアントを区別せず、ただDCに
描画するだけなので、十分にいけそうです。
両方の方法で試してみたいと思います。
レスをくださった皆さんどうもありがとうございました。m(__)m
397 :
デフォルトの名無しさん :03/05/26 23:23
>>396 WM(Window Message)はAPIに送るメッセージ(定数)。てか、釣られちゃった?
>>398 いえ、僕の書き方が紛らわしかったです。
クライアント領域に十分なウィンドウサイズを計算する
AdjustWindowRect()みたいな関数があるので、クライアント領域
サイズを変更するSetWindowRect()、SetClientRect()みたいな関数
もあるのかと思ったもので。。。
372ですが、どなたもおわかりになりませぬか、残念 失礼しました<m(__)m>
402 :
デフォルトの名無しさん :03/05/27 01:22
「ご迷惑をおかけして申し訳ありません」のエラーウィンドウを意図的に出すことってできますか?
ありがとうございます。さっそく調べてやってみます
405 :
デフォルトの名無しさん :03/05/27 03:14
コマンドプロンプトに文字列を表示するにはどうすればよいのでしょうか。 HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE); if(hConsole != INVALID_HANDLE_VALUE){ TCHAR szMessage[] = "hello"; DWORD dwWritten; WriteFile(hConsole, szMessage, lstrlen(szMessage), &dwWritten, NULL); } このようなプログラムをコマンドプロンプトから実行しても、dwWrittenは0で 何も表示されませんでした。
subsystemはconsoleでないといかんよ。
>>406 てことは普通にexeをダブルクリックするとGUIアプリ、DOS窓から起動するとコンソールアプリ、
といったようなプログラムは不可能ということですか・・・ガクリ
ふつうに起動すると、GUIアプリ、 DOS窓から起動すると、「別のDOS窓を開く」コンソールアプリは 可能かもしらんが。
409 :
デフォルトの名無しさん :03/05/27 18:41
他のスレから誘導されてやってきました。 よろしくおながいします。 DOS窓が起動しないコンソールアプリを作りたいのですが、 可能でしょうか。可能でしたら、ぜひやり方を知りたいのですが…。 VC++6.0です。
MFC-MLにも同じような質問が来た罠
>>409 AppWizardで「ダイアログアプリケーション」のスケルトンを作成し、CxxxApp::InitInstanceの
dlg.DoModal()付近をばっさり削除。
412 :
デフォルトの名無しさん :03/05/27 19:22
hBitmap = LoadBitmap(hInst, "MYBMP"); 猫でもわかるプログラミングでこのように使われていたのですが、 どうもこれではビットマップのハンドルが得られないみたいなんです。 何が間違ってるんでしょうか、どなたかアドバイスをお願いします。m(_ _)m
失礼、猫でもわかるプログラミングさんの記載をそのまま書いてしまいました。 しかしIDB_BITMAP1にしてもうまくいかないです……どうしてでしょうか。 hBitmap = LoadBitmap(hInst, "IDB_BITMAP1");
>>414 413のリンク先のパラメータのとこ見てみ。
419 :
デフォルトの名無しさん :03/05/27 20:05
現在、小型のweb用の小型アクティブXを作成しています。 現在は、IPictureを用いて画像を読み込んでいます。 要件 1.IE5.01以降がインストールされているwindowsマシン上で動作すること。 2.PNGをHDCに書き込めること。 3.サイズが極力小さいこと(20kB位)。 4.できれば、IPictureのものは拡大縮小するとジャギーが目立つので目立たないよ うにしたい。 5.jpeg、gifも表示したい。 以上のことをするには、windows内の機能を使うしかないと思っています。 IEはPNGを表示することが可能ですので、IEコンポーネントを使えばできそうなので すが、、、。 なにか、ご存知の方いらっしゃいましたら、ご教授ください。 よろしくお願いします。
>>407 XPならAttachConsoleでできるかも
>>407 現在の状態がコンソールかGUIかが分かれば、
それに合わせて別々のexeを起動させればいいんだけどな。
そういうAPIあるのかな。
判断するプログラムはどっちで(console/windows)つくるの?
フォアグラウンドウィンドウがコマンドプロンプトならば、CUIを起動 そうでなければGUIを起動で良いんじゃないの? Launch.exe:起動時のフォアグランドウィンドウによってGUI.exe或いは GUI.EXEを起動して終了するプログラム CUI.EXE:CUIベースのプログラム GUI.EXE:GUIベースのプログラム COMMON.DLL:CUI.EXE,GUI.EXEで共通に使う
それじゃあ解決にならないよ。問題の先送り。 1.Launch.exeがsubsystem:consoleのばあい。 1.1.cmd.exeから起動した場合 ..OK 1.2.explorerから起動した場合 Launch.exeの起動準備として、コマンドプロンプトが出現する..NG 2.Launch.exeがsubsystem:windowsのばあい 2.1.cmd.exeから起動した場合 launch.exeの起動準備として、現在のコマンドプロンプトと切り離される..NG 2.2.explorerから起動した場合 ..OK
>>419 GDI+なんかどうかしら。
gdiplus.dllは1600kB以上あるけど。
428 :
デフォルトの名無しさん :03/05/28 09:30
>>426 GDI+は上司にだめといわれてしまいました。
IEは、IMGUTIL.DLLと、PNGFILT.DLLを使っていることはわかったのですが、
情報が公開されていないので、Dependency Warkerでこんな関数があるのかぁ。
ってところまでしか調べられませんでした。
PNGFILT.DLLもどっかのサイトでみたら,
zlibを使っているようなことは書いてありました。
MSがサポートしていないのであれば、やめたほうがよいといわれたので、
とりあえず、普通に、zlibとlibpngを入れて、エンコード部分は
削ろうかなぁと考えています。
429 :
デフォルトの名無しさん :03/05/28 09:37
>>419 ATLのCImageにpng/jpg/gif読み書き機能が一通りあったはず。
拡大縮小は、HDCとってGDIでやれば良い(SetStretchBltModeを
忘れずに)。
429 CImageはGDI+だが。
>>411 上手く行きました。
ありがとうございました。
助かりました。
>>425 subsystem:windowsで作って、コマンドプロンプトから起動されたことさえ判別できれば、
AttachConsoleで親のコマンドプロンプトに再接続できる。
XPならね・・・
HelloWorldアプリケーションを作って WM_CREATE:で以下の処理をしたのですが、バルーンツールチップが 表示されません。どこがまずいのでしょうか? InitCommonControls(); hwndToolTips = CreateWindow(TOOLTIPS_CLASS, NULL, WS_POPUP | TTS_NOPREFIX | TTS_BALLOON, 0, 0, 0, 0, NULL, NULL, hInst, NULL); if (hwndToolTips) { // Do the standard ToolTip coding. TOOLINFO ti; ti.cbSize = sizeof(ti); ti.uFlags = TTF_TRANSPARENT | TTF_CENTERTIP; ti.hwnd = hWnd; ti.uId = 0; ti.hinst = NULL; ti.lpszText = "TEST"; GetClientRect(hWnd, &ti.rect); SendMessage(hwndToolTips, TTM_ADDTOOL, 0, (LPARAM) &ti ); SendMessage(hWnd, TB_SETTOOLTIPS, (WPARAM)hwndToolTips, 0); }
>>432 再接続はできるけど
cmd.exeはすでにプロンプトに戻ってるから何か不具合あるかも
cmd.exeが仮にWaitForInputIdleしてくれてたら、 タイムアウト前に接続できればうまいことやってくれるんじゃ? …今度試してみよ
∧_∧ ピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。 =〔~∪ ̄ ̄〕 = ◎――◎ 山崎渉
タスクトレイアイコンのウィンドウハンドルはどうやって取得したらよいでしょう?
439 :
デフォルトの名無しさん :03/05/28 14:00
_age
VisualC++6.0のSDKをバージョンアップしたいのですが、どこからダウンロードすればよいでしょうか? ひょっとして既にサポート外でしょうか?
442 :
デフォルトの名無しさん :03/05/28 22:36
3Dはどうやって表示するの?
赤と青のフィルムが必須。
いくら山盛りのWinAPIでもそこまで面倒見てくれません
>>442 DIBSectionさえ作れば、後はGDIなりフレームバッファ直接操作なりで
何でも自由に描画・表示できるよ。
システムフックしたツール作ってるのですが、 常駐していた状態で他のアプリケーションがでフリーズするとOS巻き込んで落ちてしまいます。 何か対策はありませんか? システムフックは アクティブウィンドウの変更を通知してるだけです。
まず全裸になり、自分の尻を両手でバンバン叩きながら白目をむき 「びっくりするほどユートピア!びっくりするほどユートピア!」 とハイトーンで連呼しながらベットを昇り降りする これを10分程続ければOK!
448 :
デフォルトの名無しさん :03/05/29 10:30
スミマセン質問です IEの選択文字の取得をしたいのですが WM_GETTEXTが使えません。(当然なのかな…?) クリップボード経由は可能ですがなるべく直接APIでたたきたいとおもっています。
>>442 擬似的に立体的に見えるように、輝度を上下させる(光の当り、影)。
2Dだろうが、3Dだろうが、所詮は点の集まり。だが、表示するまでの
計算がものすごく大変。
なんで誰もDirect3Dって答えてあげないの?
>>446 漏れもフックで悩んでる。
SetWindowsHookExでフックしてるんだけど
VCのデバッグモードに移行すると固まってしまう。
デバッグ時にはフックしないで開発してるんだけど
なんか、根本的な対策は無いのかな?
454 :
デフォルトの名無しさん :03/05/29 16:20
ほんとに教えて下さい(泣 デバイスコンテキストの説明っていうか概念ていうか・・ 淡々と説明しすぎ!そういう言葉を使えばいいってのは理解したけど、 頭で想像できないんだYO! ハンドルはなんとなーくわかってきたんだけどね・・・
才能無い、やめろ
456 :
デフォルトの名無しさん :03/05/29 16:42
才能とかじゃなくて、 検索したらいっぱい出てくるような気がするんだけど。 デバイスコンテキストの説明
みんな飯代をうかせて本を買って勉強してるのだよ。 ネットを引けば分かる程度のこともする気力がないのかチミは
まあ、入門者にはプログラミングWindows第5版〈上〉は本気でオススメ。
最近だとWebだけでも結構知識を得られるものだが、それでもなお一読をすすめる。
値段以上の収穫は
>>461 が保証してくれる。
三年保証は別料金になりますが?
もちろん金利・手数料はジャパネット負担ですよね?
463 :
デフォルトの名無しさん :03/05/29 19:02
プログラミングWindows第5版〈上〉 タケ−し、古いし、読み図例 図書館で十分
>>446 ,452
漏れも同じ事で悩んでる。フックはDLLにして使う場合が多いけど
今、WH_JOURNALRECORDでアプリの中に実装してるんだけど
ブレークポイントとか指定してデバッグモードに入ると落ちる(固まる)
でも、ここには、この問題を解決できる人がいない罠(w
YOU IS FOOL
YOU IS FOOD
>>467 You is a big fool man.だったっけ?>>元ネタ
Shell_NotifyIcon で Win2000(Shell 5.0) 以降なら バルーンのメッセージ取れるって MSDN に書いてるけど、 試したところ WM_CONTEXTMENU, NIN_SELECT, NIN_KEYSELECT は取れるが NIN_BALLOONSHOW とかは XP(Shell 6.0) 以降じゃないと取れません。 何かやり方あるんでしょうか? msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/functions/shell_notifyicon.asp
>>473 まず全裸になり、自分の尻を両手でバンバン叩きながら白目をむき
「びっくりするほどユートピア!びっくりするほどユートピア!」
とハイトーンで連呼しながらベットを昇り降りする
これを10分程続ければOK!
>>474 これって実際にやったことある奴は何人ぐらいいるんだろうね。
>>473 そこに書いてあるNIM_SETVERSIONとかいうのはどうよ
スクリーンセーバーが終了したり、モニタが省電モードから戻ったりしたことを知るには どうすればよいですか?
最近の、このスレって 低レベルな質問->ぐぐれ or 本読め 中レベルな質問->まず全裸になり(以下略) 高レベルな質問->無視 って方向だね。 ム板の中で漏れでも住人になれる数少ないスレだよ。
┐(´ー`)┌
>>477 まず全裸になり、自分の尻を両手でバンバン叩きながら白目をむき
「びっくりするほどユートピア!びっくりするほどユートピア!」
とハイトーンで連呼しながらベットを昇り降りする
これを10分程続ければOK!
遅レス申し訳ないです。ネット繋げなかったもんで。 で、参照してくださって書籍はすでに持っています。上・下両方ね。 でもわかんなくない?サイトも、たんたんとデバイスなんたらかんたらハンドルとは〜〜 とか書いてあるけど、全然頭で浮かび上がらない。どんな風にCPUが働いてOSが教えてくれるのかとか みんな頭で絵を浮かびながらコーディングしてない?俺はそうしてるんだけど で、マジでわかんないんすよ(泣 ご指導お願いします
482 :
JOJOの奇妙なAPI :03/05/30 12:35
第1回:ウィンドウハンドル(1) 講師:吉良吉影 フウウウウウウ〜〜〜 わたしは…子供のころ…チャールズ ペゾルド の「プログラミングWindows第5版」って ありますよね…あの本…Laoxザコン館で見たときですね。 あの「オブジェクト」が必ず持ってる識別子・・・「ウィンドウハンドル」… あれ…初めて見た時…なんていうか…その…下品なんですが… フフ…勃起…しちゃいましてね… 「ウィンドウハンドル」のとこだけ切り抜いてしばらく…部屋にかざってました。 (第1回終了)
>>481 >どんな風にCPUが働いてOSが教えてくれるのかとか
そんなことを考える必要がなくていいようになってる。
今は、
「 考 え る な 」
最初にCをやったときに、
とりあえず「#include <stdio.h>」を書いとけ、と言われたろ?
それと一緒だ。
484 :
デフォルトの名無しさん :03/05/30 13:07
>>464 グローバルフックを止めたらすべてのアプリに影響が及ぶんだから、無理だと思うのが普通でしょ。
485 :
win32APIミッドナイト :03/05/30 13:22
講師:ACE後藤
>>481 windowsのウィンドウハンドルは識別子ですヨ
これからも全てのオブジェクトを指定するのはハンドルです
JAVA使ってる奴からみればハンドルなんて意味ないですヨ
でもやっぱりwin32API使う以上は必要だと思ってるワケです
各オブジェクトを確実に指定できる型でありたい
ただ ただそれだけですヨ――――
ハンドルはあってあたり前
それを特殊と思わない心なんですヨ
プログラム中どこで参照しても破綻はナイと思ってるんです
windowsというアンダーグランドな世界で
オブジェクトを指定できる型でいたいんですヨ
>>483 さんくす。他のレスくれたみなさんもありがとー。
そうういことにしときます。すいませんでした〜
ついに発覚、2chでレスを消す方法。 解析により、ついに管理人コマンド割り出しに成功した模様。 鯖が認識するとそのスレッドナンバーがあぼーんされる。 以下方法。 名前に『山崎渉』、メールに『ds8g15EG8h1r9R9g9d7E』。←暗号化されたパスワード 本文に、 command dell レスナンバー(ここに消したいレスナンバー記入) end こう記入して書き込み。 山崎って言う人はどうやらcgiなんかの管理人さんの本名らしい。 おそらく早急な対策が打たれると思うので、消したいレスがある人は急げ。
>>476 レスありがとう。
NIM_SETVERSION 設定してるんですが
WinMe (5.50.4134.100) なら可能だったので
やっぱり shell32.dll のバージョンが足りない様です
5.0.3502.6144 なのに...
command dell 487 end
突っ込みどころが違う。絶対に違う。
492 :
デフォルトの名無しさん :03/05/30 23:10
質問おながいします。m(__)m Excel等でMDIの最小化、アイコン化ボタンがメニューバーにくっついて いますが、これってどうやって実現しているのでしょうか?
493 :
デフォルトの名無しさん :03/05/30 23:19
>>490 「DELete Line」の略なんだよ。多分。
GetGlyphOutlineでアンチェリのかかったビットマップフォントを取得したはいいんですが、 その後に文字をうまくアンチェリをかけて描画することができません これって1ビットづつチマチマ調べて描くしかないんでしょうか? できれば例なんかいただけると嬉しいです
>>492 ? MDIの仕様に文句言いたいって事?
あそこ以外のどこに描けと...
>>495 テクスチャに転送してレンダリングすれば自動
499 :
デフォルトの名無しさん :03/05/31 21:11
ツールバーのボタンを自力で描画したいのですが、方法がわかりません。 ボタンのウィンドウハンドルも取れないみたいですし、 どうやったらオーナードローができるのでしょうか。
SDKプログラミングでMFCのCArrayに相当する物は用意されていないのでしょうか?
>>499 >>500 まず全裸になり、自分の尻を両手でバンバン叩きながら白目をむき
「びっくりするほどユートピア!びっくりするほどユートピア!」
とハイトーンで連呼しながらベットを昇り降りする
これを10分程続ければOK!
普通C++ならSTLコンテナ使うけどあれはAPIとは何の関係もないよな。
VARIANTの配列使うやつなかったっけ。 まあ、普通はstd::vectorだな
VC++のCreateWindowExでリストボックスのスタイルを dwStyle: WS_CHILD | WS_VISIBLE | WS_HSCROLL | WS_VSCROLL | WS_TABSTOP | LBS_NOTIFY dwExStyle: WS_EX_CLIENTEDGE で作成したんですがスクロールが遅いです。 MSDNライブラリの「キーワード」みたいな 高速にスクロールするリストボックスはどの指定で行うのですか?
506 :
デフォルトの名無しさん :03/06/02 02:26
コンソールアプリからウインアプリSDKに移ってプログラムを組んでいるのですが、 ウインアプリだと、文字のサイズが一定でないので困っています。同じにする方法 を教えてください。
507 :
名無し@沢村 :03/06/02 02:44
>>506 フォントにはプロショーナルフォントと等幅フォントの二種類があるのじゃよ。
↓続き
>506 どう困っているのよ?
510 :
デフォルトの名無しさん :03/06/02 02:58
DLLの中の関数が提供するダイアログボックスをタスクモーダルにする (MessageBoxでMB_TASKMODALが指定された状態と同様の効果を得る)には どのようにしたらよいですか?
お答えありがとうございます。
>>507 それで調べて見ると、猫の所にいけました。どこを変えれば出来るかは
分かりませんが。
>>508 TrueTipeのことですか?フォント自体にそれが決まっているのか、フォント
には関係なく、属性として与えるのかわからないです。
>>509 うまく説明できませんが、背景の色を変えた文字を使用していて、その位置
に同じバイト数の文字列を持ってきた時、コンソールなら前のがきれいに
消えて新しく表示されますが、サイズが変わって特に後のほうが小さい時は
前野が消えずに残ってしまいます。
>>511 ま、Windowsプログラミングの基礎からやっていけや
>>511 たとえば
「MS Pゴシック」とかがプロポーショナルフォントで、文字ごとに幅が違うの。
「MS ゴシック」は等幅フォントで、文字の幅が全部同じ。
>>512 はい。がんがります。
>>513 CreateフォントでMS ゴシックにしてもダメでした。他のパラメータが
違うのでしょうか。
hFont = CreateFont(32,//フォント高さ
32,//文字幅
0,//テキストの角度
0,//ベースラインとx軸との角度
FW_REGULAR,//フォントの重さ(太さ)
FALSE,//イタリック体
FALSE,//アンダーライン
FALSE,//打ち消し線
SHIFTJIS_CHARSET,//文字セット
OUT_DEFAULT_PRECIS,//出力精度
CLIP_DEFAULT_PRECIS,//クリッピング精度
PROOF_QUALITY,//出力品質
FIXED_PITCH | FF_MODERN,//ピッチとファミリー
"MS ゴシック");//書体名
>コンソールなら前のがきれいに 消えて新しく表示されますが、 >サイズが変わって特に後のほうが小さい時は >前野が消えずに残ってしまいます。 これってプロポーショナル云々じゃなくて前回の描画領域を背景で塗りつぶせってことじゃないの?
「サイズが変わって」の意味がどうも分からない感じ。 フォントサイズが変わる、なの?
例えば100ポイントの文字を表示して、その上に10ポイントの文字を重ねて表示すると、 先に表示した100ポイントの文字が後ろからはみ出て見えてしまう、ということでは?
>>515 そうです。それを解決したいのもありますが、とにかく同じサイズに表示
したいんです。他の問題点としては文字列サイズを指定したものを縦に並
べて表示していく時、ベこぼこになってしまいます。
>>516 コンソールのはABCDEを表示、改行、abcdeと表示するとCとcは同じ位置に
表示されますよね。ただ、ウインの方は、かなりずれます。インターネット
でも同じですが。それを利用して面白いAAができたと言う利点もありますが。
ABCDE
abcde
>>517 そうです。1文字32ピクセルの"ABCDE"の上に、同サイズの"abcde"を上書き
すると、コンソールではabcdeのみ表示されますが、ウインだとabcdEと
なります。
DrawTextで矩形を指定じゃないか
>>519 それ見る限り、ちゃんとMSゴシックが表示されてないんじゃないかと
あぁわかった。
>>514 の書体名、「MS」は全角じゃないとダメだよ。
>>520 問題はそれではありませんでした。次に書きますが。
>>521 やってしまっていました。SelectObjectを入れ忘れていました。入れたら
出来ました。すいません。本当にごめんなさい。答えてくださったみなさま、
どうもありがとうございました。逝って来ます。
>>522 それは大丈夫みたいです。スペースを入れまくったりしても大丈夫でした。
システム登録済みの固定幅フォントを使うと簡単 HFONT hFont = (HFONT) GetStockObject(SYSTEM_FIXED_FONT); HFONT hFontOld = (HFONT) SelectObject(hDC, hFont); TextOut(〜); SelectObject(hDC, hFontOld);
>>525 おおっいいですね。簡単にできます。ありがとうございました。
>>510 自己レスっす。
手でガリガリ書くしかないようです。
EnumThreadWindows()でウィンドウ一覧を獲得し、
自分以外のウィンドウをEnableWindow(FALSE)して解決しました。
Windows画面(どのアプリでも)で 押されたキーボードのキーが何が押されたか監視し、 そのキーが押されたときに他のキーが押されたと認識されるやり方が解る方いますでしょうか? よければ教えてください。 例:F12キーが押された場合CTRL+Numberキーが押された事にする。 という感じです。
>>528 SetWindowsHookExでWH_KEYBOARDを引っかける。
530 :
デフォルトの名無しさん :03/06/02 14:35
質問させてください。 任意のアプリケーションが呼び出すWin32APIを監視(?)して、 自分で作成したDLL内の関数にすりかえる方法ってあるでしょうか? 自作DLLの注入は出来ても、Win32APIを偽装することは無理なんでしょうか?
>>529 訂正。
WH_KEYBOARD_LLじゃないとダメかも。
532 :
名無し@沢村 :03/06/02 15:25
エクセルのようなワークシートをつくるWin32APIはどれですか?
534 :
名無し@沢村 :03/06/02 18:31
>>533 MoveToとLineToの升目の中に文字や計算式を入力するWin32APIは?
>>534 APIつーかエディットコントロールでも貼り付ければ?
536 :
デフォルトの名無しさん :03/06/02 18:43
沢村の質問キタ━━━━━━(゚∀゚)━━━━━━ !!
537 :
名無し@沢村 :03/06/02 18:49
>>535 MoveToとLineToの間の升目の数だけエディットコントロールを貼り付けるのか?
膨大な数のエディットコントロールができるな…
538 :
名無し@村沢 :03/06/02 18:59
>>537 ハローワールドの次の作品作っているのかな?
期待してるよん。
539 :
デフォルトの名無しさん :03/06/02 19:22
すみません、質問があります。 プロセスの使用メモリを小さくする、最も一般的な方法を教えてください。 単にウィンドウを開くだけのプログラムでも、 2MB近く消費しているようなのですが…。
>>539 ・スタートアップコードを自分で書く
・スタックを極限まで減らす
>>539 ウインドウを作成し表示したらいったん最小化して戻す
早速のお返事をどうもありがとうございます。
>>540 スタートアップコードはいじったことがありませんでした。勉強してみます。
スタックを減らすというのは、具体的には何をすればいいんでしょう…。
>>541 画面表示状態によって使用メモリが変化するんですね。これは知りませんでした。
よく考えてみると、使用メモリが小さいプロセスというのは、
ウィンドウが表示されていないものばかりでした。
タスクマネージャを見ると使用メモリが小さなものがあったので、特別な方法が
あるものと思い込んでしまったのですが、私の早とちりだったかもしれません。
543 :
デフォルトの名無しさん :03/06/02 22:55
見えないダイアログを作成しようとして case WM_INITDIALOG: { ShowWindow(hWnd, SW_HIDE); のようにしていますが消えてくれません。 Windowを表示しないようにするにはどうしたらいいですか。
Windowsの音量を調整(ボリューム)するAPIってわかりますか?
>>532 リストビューコントロールにLVS_EDITLABELSのスタイルを指定すると
エディット可能になるよ。
LVS_EX_GRIDLINESも指定するとグリッド線が描かれる。
>>543 ダイアログがメインウィンドウだと非表示にしようとしても、勝手に表示
された記憶がある。そうでないなら、普通に消せたかと。
くっ、やはり高速リストボックスは無理なのか!?
>>543 その後、UpdataWindow( hWnd );
かな?(w
スペル間違えてたらスマソ
ここで聞いたのは間違いだったようです。
>>546 うん、間違えてる。
UpdateWindowだね
>>543 それ、俺も昔悩まされた
DoModal()ではなくCreate()を使ってウィンドウ作成すれば表示されない
表示するときはShowWindowする
それとそのウィンドウ閉じたときは
OnCancel()は呼ばれずWM_DESTROYが送られる
その後DestroyWindow()してメモリ解放
>>547 =530
APIフックなんてググればすぐに出てくると思うが?
>>537 いま編集対象になってる升にだけあればいいんでは。
升ごとにテキストバッファを持っとかないといけないけど。
552 :
名無し@沢村 :03/06/03 10:12
>>530 「Advanced Windows」買え
>>552 Windows 2000 Advanced Server?
554 :
名無し@沢村 :03/06/03 10:15
556 :
デフォルトの名無しさん :03/06/03 11:06
「画面上の座標(x, y)で左クリック」という処理をプログラム適に実行するには、 どうすればよいでしょうか? デスクトップのハンドルを取得して、WM_LBUTTONDOWNメッセージを SendMessageで送信してみたのですが、上手くいきません。 おおざっぱでいいので教えてください。よろしくおねがいします。
557 :
デフォルトの名無しさん :03/06/03 11:07
558 :
デフォルトの名無しさん :03/06/03 11:11
>>556 デスクトップではなくて、メッセージを送りたいウインドウのハンドルを取得しないとダメなんじゃない?
>>556 よく質問の意味が分からないのですが、位置指定なら。
const int y=100,x=100;
case WM_LBUTTONDOWN:
if(LOWORD(lParam)!=x||HIWORD(lParam)!=y)break;
hdc=GetDC(hWnd);
TextOut(hdc,x,y,"指定した位置を押しました",24);
ReleaseDC(hWnd,hdc);
break;
>>552 改訂第4版に追記されてたんですね。
以前の版を持ってるんで、買いたくないんですけど・・・。
どなたかソース貼って貰えませんか?
>>562 DLLの注入までできているなら
後はインポートテーブルを書きかえるだけじゃないか
GetProcAddressの返り値の加工も必要かもしれないが
>>563 インポートテーブルの書きかえですか。
なるほど。ありがとうございます。
それくらいならAdvancedWindows買わなくてもなんとか出来そうです。
AdvancedWindowsでも同様の方法が記述されているんでしょうかね?
タイトルの所にFPS表示させるのって 相当オーバーヘッド大きい?
>>505 そのスタイルだけ見てわかるかw
項目が1万くらいあるっていうなら仮想リストボックス、
5億ぐらいあるんだったら仮想リストビューにしとけ
569 :
デフォルトの名無しさん :03/06/04 11:42
ツリービューのノードがドラッグ中というメッセージをとらえるには どうやったらよいのでしょうか?
563
>>567 >>568 ありがとうございます。おかげさまで解決しました。
>>568 このように利用されているんですね。
ちなみに私はクラックではなくお仕事で使います。w
571 :
デフォルトの名無しさん :03/06/04 16:54
質問です。 VB6 SP5 Win2000 Exe起動直後にALT+F4を押し、そこで起きるイベント(QueryUnload)時に GetMenuItemInfoを使って閉じるメニューの情報を取得しているのですが、 うまく情報を取得することができないです。 一度メニューバーをクリックした後にALT+F4をするとうまく取得できるのですが。 起動直後にうまく情報を取得するにはどうしたら良いでしょうか? '×ボタンのメニュー情報を取得 With Mnu .cbSize = Len(Mnu) .dwTypeData = String(80, 0) .cch = Len(.dwTypeData) .fMask = MnuM_STATE .wID = SC_CLOSE lngRet = GetMenuItemInfo(hMenu, .wID, False, Mnu) End With
>>542 SetProcessWorkingSetSize
最小化されたときはDefWindowProcか何かがこれを呼んでる
mixer系APIを使って、ボリュームを調整したいのですが詳しく解説しているページとかありませんか? 言語はVC++6.0でMFCのウィザードを使ってます。
>>573 おお、どうもありがとうございます。
でも、これが使えるのってNT系だけみたいですね…。
自分で作ったウィンドウの表示/非表示が変更されたことを知るにはどうすればよいのでしょう。 WM_SHOWWINDOW では表示/非表示が変更されようとしているタイミングで送られてくるので少しタイミングが早すぎます。 WM_SHOWWINDOW を DeWindowProc 関数に通した後でも変更はまだ反映されていないようです。 御存知の方どうか宜しくお願いします。
>529さま たいへん遅くなりましたが、ご回答ありがとうございますm(_ _)m
>>576 少し早いと思ったら、何か適当なメッセージを自分にPostしとくのはどうか
>>576 表示ならWM_PAINTとか
でもLonghornでだめぽになりそうな予感
>>576 WM_WINDOWPOSCHANGED
でWINDOWPOSのflagみればいい気もするが。
582 :
デフォルトの名無しさん :03/06/05 23:27
ここでいいのか不安ですが質問させていただきます WindowsでEXE単体で動くちょっとしたツールを作りました ただちょっとだけセーブデータを保存したくなったんですが、datファイルなどをつくりたくありません exeファイルのお尻に勝手にデータをくっつけて平気でしょうか 保存する(exeの最後にくっつける)データはおそらく文字列です
>>577-581 ありがとうございます。
>>577 氏の発言にしたがいSPYでメッセージを追っていたところ
WM_WINDOWPOSCHANGED が目的に適したメッセージのように思えましたので
WM_WINDOWPOSCHANGED を処理する方向で実装することにしました。
こんなにもたくさんのレスどうもありがとうございました。
>>574 ページとかは知らないけど多分mixer系APIを使う。
mixerOpenとかmixerGetLineInfoとか。
と思ったらそこから先を知りたかったのね…、スマン これくらいしか分かりません。 えーと。Windowsにはn個(大抵はサウンドカードの枚数)の ミキサーデバイスがあって、各mixerデバイス毎にm個 (サウンドカードの種類による)のミキサーラインがあって、 とかいう概念が基本かな。 どのミキサーラインがWAVEなのかCDなのかLineInなのかというのが サウンドカードの種類によって違ったりするので、 きっちりやるなら色んな環境でテストしないといけないとか。
>582 答える前にdatファイルを作りたくない理由を聞きたいと思うのはオレだけかな?
いじられたくないとか・・・ 予めくっつけておいて、そこを書きかえればいいんじゃないかな。 とかいいつつできないけど。
CreateDIBSectionでビットマップのビットへのアドレスは分かったんですけど、 ピクセルのRGBを取り出す方法が分かりません。 24bitで。
偉そうに書いたけど自分も解らないです。 でも個人用に作るとしてもリビルドしたら、それまでのが消えちゃうよなぁ。 普通に考えるとマズイと思うんだが...
平気かどうか以前に自分自身を書き換えられるの?
実行中のexeはシステムが開いていて書き込みオープンできないでしょ
>>588 24ビット.bmpのヘッダを除いた部分と同じ
591 :
デフォルトの名無しさん :03/06/06 06:23
∩( ・ω・)∩モニュアゲ
592 :
デフォルトの名無しさん :03/06/06 07:26
>>588 「DIBSection」で愚愚ればサンプルが見つかると思うが?
>>586-587 本当に「ちょっとしたツール」なので、ファイルが2個になるのが嫌なだけです
ぶちゃけ「ドラッグインしたファイルを、リストとしてtxtに吐き出すツール」なのですが
出力先の設定を保存しておきたいのです
レジストリは嫌いなん?
普通はiniファイルかレジストリだよなー
レジストリにせよiniにせよ、アンインストーラつきでないソフトで使うのはアレだが。 つことで、ちょっとしたツールには余計向かない気がするな。
>>596 ツール自体に設定情報の削除機能を入れておけばいいだけの話
アンインストーラーなど必要ない
じゃあ、NTFS限定やけど、NTFSストリームにでも保存したら?
iniファイルだったら専用APIで読み書きできるし、datよりいいと思います。
601 :
名無し@沢村 :03/06/06 09:45
最近の流行はXMLだな
603 :
デフォルトの名無しさん :03/06/06 11:02
>>593 おいらだったらレジストリだな
インストーラやアンインストールは簡便に WSH で作っちゃえばよろし
604 :
名無し@沢村 :03/06/06 11:14
>>593 おまいがネット上にサーバを立ち上げて、全ユーザの設定情報を一括管理しろ。
>>593 exeA(本体)のリソースにexeB(Aをいじくってから自殺)を仕込んどく。
exeAの終了時にTempにセーブデータとexeBを切り離し、exeA終了。
exeBはexeAの終了(ファイル書き込みが可能になる)を待って
セーブデータの内容をexeAに書き込み、セーブデータを削除してから
exeBは自殺。
どーよ?
>>605 どう考えてもiniファイルの方が簡便。
そういうケースなら ini ファイルだろ。 インストーラのないソフトでレジストリは勘弁してくれ。 ここらへんは個人の好みなのかもしれないが。
>>607 おなじく。ちょっとしたツールなら迷うことなくINI。
レジストリはいくつもソフトを作ってて
しかもそれが関連してあるときしか意味が無い。
Aというソフトがインストールされていたら実行できるとかね。
ちなみにOSをよく再インストールするので
しょうもないレジストリの使い方をするソフトは
使わないようにしてる。
>>606 いや、俺もそう思うけど、593の要望に遵ったまで。
( ・ω・)∩<先生。604は何が言いたいのかわからないです。
>>609 593の要望は
>ファイルが2個になるのが嫌なだけです
なので、
>>609 はその要望を満たしていないと思うがどうか。
設定はBIOSに保存 どうよ?
さらに、exeBがexeAを呼び出して、 exeAはexeB終了と同時にこれを削除し exeAは、安心して終了
615 :
デフォルトの名無しさん :03/06/06 13:19
レジストリ人気ないですなぁ オイラはちょっとしたツールにも MRU リストが欲しいからすぐ CRecentFileList 、ファイル名以外の設定を保存したい時はそれを 派生させたクラスを使う すると必然的にレジストリに書き込むことになるわけで .NET の実装見てると、DLL のシェアとレジストリって実はMSも後悔 しるようにも見えるが、オイラは↑で特に困った経験はないなぁ
>>615 開発者が困るんじゃなくてユーザが困るって話だろう。
だからツールに使ったレジストリの消去機能を入れておけばいいんだって
>>615 CRecentFileList使うときでもレジストリじゃなくてiniに保存できますよ。
CWinApp::InitInistance()で何かいじくればよかったはず。
M$はWin32以降レジストリの使用を推奨しているけど、本来レジストリは COMやOCXのためのもので一般のアプリが使うのは良いとは思わない。 (シェルはバシバシ使ってるけど) 基本的には.ini形式だろな。これが何だかんだ言って一番安全。 レジストリの場合、こわれたら他のアプリも道連れ。 .INIファイルを秘密の奥深いフォルダーに隠しておく。すべてhidden属性 にセット。同時に100個位、多数ダミーを作る。一回毎にファイル名を 変える。他人にいじられないようにする方法なんていくらでもあるだしょ。
>>619 > .INIファイルを秘密の奥深いフォルダーに隠しておく。すべてhidden属性
> にセット。同時に100個位、多数ダミーを作る。一回毎にファイル名を
> 変える。他人にいじられないようにする方法なんていくらでもあるだしょ。
アフォということでいいですか ? > ALL
621 :
デフォルトの名無しさん :03/06/06 14:41
レジストリファイルの構造わかりますか?
>>620 同意。
593はファイルを増やしたくないと言っているのに100個もファイル増やしてどうするよ?
それに論点は「設定を何処にどのように記録するか」であって「如何にしてファイルの改竄を防ぐか」ではない。
>>621 Windowsのバージョンによって違う。(95系、NT系では記録されるファイルから違う)
違いを吸収する為にWindows APIがある。
一番最初に「暗号化」を思いつかない時点で
>>619 は(略
ていうか「いじられたくない」なんて誰も言ってねえし。
628 :
デフォルトの名無しさん :03/06/06 16:44
暗号化と一言で言っても実際やってみればわかるが、非常に面倒で 後々必ず後悔する。真に有効な設定ファイルがどこにあるかさえ アプリが知っていれば、設定ファイル方式にするのが良いと思われる。 ダミーを作る作らないは自由。作るのは万が一消された場合のバックアップ の意味が大きいだろうね。 ただ意外に絶対に消されないような安全なフォルダーを発見するのが難し い。
>>628 元の論点から外れるが、俺には暗号化の方が圧倒的に簡単に思える。
619のやり方ではプログラムはどうやって正しいファイルを知る事が出来るんだ?
ダミーが無数にあり、ファイル名が不定なんだぞ。
大体データの改変はユーザの自己責任で行われるもので
「絶対に消されないような安全なフォルダー」等を意識するのはおかしい。
それに暗号化が必要な情報は消されても全然困らない。
困るのは情報が漏れる事であり、そんなファイルを一般的な形式で記録するのは
危険極まりない。
暗号化ってXORするだけで効果ある?
ビット反転だけで十分
>>631 昔レインガルドというネットゲーがあったが
ローカルに保存するファイルにそれをやっていて
速攻でクラックされていた
>>631 632も言っているが、効果はある。
プログラミング出来る位の人間には解かれるかもしれないが、絶対に解けない暗号は
在り得ないので、データの重要性に応じて暗号化方式を変えるしかない。
タンスに隠すか、隠し金庫に保管するかで例えると、ビット反転はタンスに隠すかな。
>>628 >ただ意外に絶対に消されないような安全なフォルダーを発見するのが難し
>い。
NTFS限定だけどSystem Volume Informationとか。
636 :
デフォルトの名無しさん :03/06/06 18:03
637 :
デフォルトの名無しさん :03/06/06 18:05
IPアドレスからホスト名って取得できますか?
>>637 GetHostName()を使いなされ。
629はただのネタだろ つまらんけど
>>637 gethostbyaddrかWSAAsyncGetHostByAddr。
つか、レジストリ使うソフトを公開するのは止めろよな。 個人で使ってろ。
643 :
デフォルトの名無しさん :03/06/06 19:43
レジストリーを使わないソフトって安いっぽいから俺は レジストリーを使うソフトしか使いたく無いよ レジストリーの使い方の分からない初心者がINIを使え
変な奴
設定をバックアップしやすいから.iniがいい。
もう完全にスレ違いだな
647 :
デフォルトの名無しさん :03/06/06 20:41
こんばんは。 さっそくですが、ファイルが変更されたのを通知してもらうような API はありますでしょうか? 数秒ごとにファイルが変更されたかチェックするのではなく 変更を OS から知らせてもらうようなイメージです。 よろしくお願いします。
>>605 「ちょっとしたツール」でそこまでやるのって
本末転倒というか目的のために手段を選ばないというか
手段が目的化してるというか
>>647 FindFirstChangeNotification
ReadDirectoryChangesW
でぐぐれ
実行可能ファイル書き換えると ウィルスチェッカーに文句言われる可能性があるし 実行可能ファイルを読み出し専用の場所におけないし あまりいいことないと思う
>>649 ありがとうごじあます。
さっそくぐぐります。
とりあえずお礼だけ先に^^
652 :
デフォルトの名無しさん :03/06/06 23:03
現在 SwitchDesktop でデスクトップ切り替えをするツールを作っています はじめのデスクトップをA、新しいデスクトップをBとしたとき デスクトップをAからBに切り替えても消えないウィンドウを作るには どうしたら良いのでしょうか? SetWindowPosでできそうな気がしたんだけどできない...
>>648 >本末転倒というか目的のために手段を選ばないというか
>手段が目的化してるというか
なんか普段の自分の事言われてるみたい…
自分への戒めとします。ありがd
654 :
デフォルトの名無しさん :03/06/06 23:33
Hook ってクラス化できるの? 他のコールバック関数みたいに パラメータ渡せないっぽいし
皆様、たくさんのレスありがとうございます 大変勉強になりました INI→ファイルが2つになる レジストリ→嫌いな人が多い。ちょっとしたアプリ程度でレジいじくるなー 複雑な方法→複雑(;´д`) なかなかままならないものですね 素直に毎回うたせるかな・・・
>>655 「ドラッグインしたファイルを、リストとしてtxtに吐き出すツール」
ショートカットにドラッグする。
本体はtxtと一緒に別のフォルダに置く。
Win32コンソールのアプリケーションを作っています。 で、興味本位でウィンドウを隠して、インジケータに アイコンを登録してみました。ここまではいいのですが うまく登録メッセージを受け取ることができません。 サブクラス化もできないし、メッセージのフックも インストールまではできるのですが結局呼ばれないようです。 だれか、いい方法知りませんか?
>657 意味が分からん ・登録メッセージとは何か ・何のサブクラス化なのか ・何を対象にしたメッセージのフックか ちゃんと書いてくれ つかインジケータってタスクトレイのことか?
しかも、コンソールアプリケーションでか? できんの?
質問の仕方が悪かった HOOKした時に SetWindowsHookExの引数に渡した、 HOOKPROC あるでしょ あのコールバック関数内で、 GetWindowLongみたいに、 ユーザー側で指定した パラメータ受け取ることって出来ますか?
∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ (´∀` ) < 教えておながい ( ),,,,, \____________ / ̄ ̄ ̄ ̄ ̄/| ∧ ∧ / /| /_( ,,)__/ / ┌────── || ̄/ | ̄ ̄||/ < ヤダ ||, (___/ || └────── /
>660 GetWindowLongだったら、ウィンドウハンドルを取れていればできると思うが
なんか適当に書きすぎたみたいで・・・スマソ やっていることは コンソールのウィンドウハンドル取得 ShowWindowでSW_HIDEを使って隠す Shell_NotifyIconでタスクバーにアイコン登録 んで、このときにマウス関連のメッセージを受けるために WM_APPあたりをNOTIFYICONDATA構造体の uCallbackMessageにセットしておく ここからが問題で ウィンドウプロシージャは自前じゃないので コンソールのウィンドウハンドルからサブクラス化して メッセージをもらおうとしたけどだめ。サブクラス化できない。 (SPY++で見てもだめっぽい) んじゃ、SetWindowsHookEx + WH_GETMESSAGEで メッセージをフックしてみようと。今度はインストールはできるけど、 フックプロシージャを呼んでもらえないみたい。 んで、なんか他にいい方法思いつく人いませんか? ってことなんですが、うまくできた人とかいます?(長文スマソ
>>663 隠しウィンドウを一個クリエイトしとけばいいんでないの?
しらんけど。
>フックプロシージャを呼んでもらえないみたい。 DLLにフックプロージャを置いてるか?
>>655 ちなみにその手のデータを置くべきフォルダの、Microsoftによるお勧めは
shfolder.dll内のSHGetFolderPathを使ってフォルダを取得せよ、ってことになってる。
CSIDL_APPDATAかCSIDL_LOCAL_APPDATAでしょうな。
>663
>664の方法に一票。
いろいろレスサンクス >664 >666 実はすでに隠しウィンドウのほうで実装は済んでるんだけど コンソールでできないかなぁといろいろ試してみたかったんです。 もしできたら窓作る分のリソースの消費を抑えられるし。 >665 システムフックじゃないからいらないとは思うけど、一応作ってます。 あっ、もしかしたらシステムのフックにすればいいのかな? 試してみます。 ↓ やっぱだめみたい。 どうもコンソールは普通の窓とは仕組みが違うみたい。
どう考えても自前のWS_POPUPウィンドウ一枚のほうが コンソールウィンドウよりリソース食わないと思うが
ListBoxを作成したんですが、途中で複数選択出来るようにするために SetWIndowLongを実行したんですが、内容が変更できません。 ・↑を実行した直後、GetWindowLongを送ると、どうやらちゃんと書きかえられているようです。 ・InvalidataRect、UpdateWindowは指定しましたが、駄目でした。 // 複数選択 ::SetWindowLong( hList1, GWL_STYLE, GetWindowLong( GWL_STYLE ) | LBS_EXTENDEDSEL ) ); ::UpdateWindow( hList1 ); ::UpdateWindow( hMainWin ); ::InvalidateRect( hMainWin, NULL, TRUE ); ::InvalidateRect( hMainWin, NULL, FALSE ); ::InvalidateRect( NULL, NULL, TRUE ); ::InvalidateRect( NULL, NULL, FALSE ); // ↑を送っても複数選択できず もしかして、Window自体作り直すしかない?(^〜^;
>>SetWindowLong 書き間違えた。 ::SetWindowLong( hList1, GWL_STYLE, ::GetWindowLong( hlist1, GWL_STYLE ) | LBS_EXTENDEDSEL ) );
>669 仕様です。
>>671 ノ---------]TOT[----------!!
>>673 無理でした。
最初から複数選択可能「LBS_MULTIPLESEL」or「LBS_EXTENDEDSEL」を付けて
ListBox作ると、途中変更が効かない。
何故だ……確かに、変わっているはずなのに…
↑の付けたし。 一度、Windowを作ると、「複数選択」⇔「単一選択」への変更が出来ない。
>669 だから仕様だって。仕様っつうかSDKにちゃんと 「後でスタイル変更しても無効だよ」って書かれている。 取扱説明書を読むのは基本中の基本だよ。
>>676 うそ!?ほんとですか!?
どこに書いてありました?
>>678 >except as noted.
がポイントだな。
680 :
デフォルトの名無しさん :03/06/08 23:18
システムフックについて質問です。 CallNextHookExはいったい何をする関数なんでしょうか? 「次のフックを呼び出す」の意味がイマイチ分かりません。 アドバイスお願いします。
683 :
デフォルトの名無しさん :03/06/09 01:12
ユーザーインターフェースをwin32api以外のなかに無い奴とかダウンロードできますか? あるとこ教えてください 例えば丸いつまみを回すやつとか
684 :
無料動画直リン :03/06/09 01:13
>>683 MSDNを見れば、丸だろうが三角だろうが、好きな形のカスタムコントロールを
作成できるだけの情報は詰まっていると思います。
どこが出来ないかを聞いたほうがいいのではないでしょうか?
687 :
デフォルトの名無しさん :03/06/09 01:22
>>687 用意はされていないよ。凝ったコントロールは
そこの会社のプログラマが一生懸命作ったものだから。
そこに尋ねるのがいいと思います。
>>689 これではまるで役所のたらいまわしだな(w
Windowsで ファンの回転数等を知るにはどうしたらよいのでしょうか? Linuxでは Lm_sensorの出力を加工して使っていました。
みんな、だまされるな! > win32api以外のなかに無い奴 だからつまりwin32apiのなかにある奴ってことだ!
ASM
694 :
デフォルトの名無しさん :03/06/10 00:14
InvalidateRect()とInvalidateRgn()はどう使い分けるんでしょうか?? またUpdateWindow()とは。
Rgn+=Rect Rgn+=Rgn InvalidateRect(h,0,1); SendMessage(h,WM_PAINT);
696 :
デフォルトの名無しさん :03/06/10 10:14
複数のスレッドからアクセスされるintのグローバル変数にはvolatileを 指定したりしますよね。 でもなぜか基本型以外のグローバル変数にはvolatileをつけているのを見ません。 なぜですか?
それ本当にこのスレで質問する内容なん?
>>694 InvalidateRect()は、
指定した矩形を更新リージョンに追加する関数
InvalidateRgn()は、
指定した非矩形(矩形も可)を更新リージョンに追加する関数
UpdateWindow()は、
指定されたウィンドウの更新リージョンが空ではない場合、
ウィンドウへ WM_PAINT メッセージを送信し、
そのウィンドウのクライアント領域を更新する関数
>>697 そういうレスはいらないです。あなたの発言でみんなが関わり合いを
避けて結局回答が得られなくなります。
省いてますがintはvolatileなのに、クリティカルセクションやイベントハンドルなどが
volatileでなかったことから質問しているのです。だから安心してください。
>>699 いや、そういうレスもらわないように最初からそう書けよ。
ではそういう事情ですのでよろしくお願いします。
クリティカルセクションやイベントハンドルは ユーザーの最適化コードが複数のスレッドから 直接触るわけじゃないから。
回答ありがとうございます。 つまりクリティカルセクションやイベントハンドルはそれらを扱う APIが内部でそのことを考慮してうまく設計されてるからOK。 ということでしょうか?
Yes
非常に良く分かりました。ありがとうございます。 どうもお騒がせしました。
とまぁ、696はvolatileの意味を誤解したまま終わってしまったわけだが。
それはこのスレの守備範囲外だから このスレ的にはクリティカルセクションやイベントハンドル についてだけ答えてればOKでしょ
API が考慮していようといまいと、自分でコードを追えない部分に volatile が必要なほど過激な最適化は、少なくともMSのコンパイラではやらないと思うが →じゃあ逆に int の引数については API が考慮してないって事か?
コンパイラの最適化対策とAPIの内部動作の問題は全く別なのだが スレ違いだから誤解したままでいてもらおう
>>708 スレ違いだから微細は省くが最適化による無限ループにはまって悩むが良かろう
>少なくともMSのコンパイラではやらないと
馬鹿は痛い目を見なければわからん
すれ違いというルールを厳格に主張する奴は目的を見失ってるね。 例えそれが純粋にAPIに関することから始まり、最終的にはコンパイラや OSの内部の問題になったとしてもそこまで指摘することは自然なことだし 議論としては継続しているじゃないですか。 そのことがスレッドを読みにくくするんですか。 スレ違いなどというものを厳密に守った結果、助言としては誤解を与え得る 中途半端なものになっては本末転倒だが、妙なこだわりに取り付かれた人たちに言っても無駄か。
713 :
デフォルトの名無しさん :03/06/10 13:41
マルチスレッドの実行では volatile よりも何よによりも ミューテックスやセマフォでロックかけてデータアクセスの同期 取る方が先に来るんじゃ volatile 付けときゃOKというわけではあるまい
>>698 遅レスですみません。
MSDNよりずっとよくわかりました。
どうもです。
よーしパパ、スレ違いな質問をしまくっちゃうぞぉ。
>>696 は明らかにスレ違いだぞ。
> 複数のスレッドからアクセスされるintのグローバル変数にはvolatileを
> 指定したりしますよね。
> でもなぜか基本型以外のグローバル変数にはvolatileをつけているのを見ません。
> なぜですか?
と問われても、基本型にvolatileの記述が強制されている訳でもないし、基本型以外に
volatileの記述が禁止されている訳でもないから、意図など分かる訳がない。
コーディングした奴に聞けとしか言えん。
> 省いてますがintはvolatileなのに、クリティカルセクションやイベントハンドルなどが
> volatileでなかったことから質問しているのです。だから安心してください。
何が安心してくださいだ。逝って良し!!
720 :
デフォルトの名無しさん :03/06/10 14:42
>>715 この板から出てって下さい。ウザイです。
>718 ワロタ。オレももらうよ。早く使える日が来ないかな。
722 :
デフォルトの名無しさん :03/06/10 16:16
ファイルの存在チェックとリネームの良いやり方ってありますか? ShellExecuteとSHFileOperationをつかってたんだけど もっとスマートな方法がありそうなきがして…
>>722 FindFirstFileとかMoveFileはどうよ?
>>722 それでいいんじゃないの。
俺もFindFirstFile使うけど、別にこれがスマートって訳じゃないし。
725 :
デフォルトの名無しさん :03/06/10 16:53
すいません、質問させて下さい。 Windows2000のDocuments and Settingsフォルダのパス情報を取得するAPIってあるのでしょうか? テンポラリフォルダのパスを取得するAPIがあるのは知っているので、このAPIで取得したパスから フォルダ階層をさかのぼっていけば取れるとは思うのですが、もっとスマートな方法をご存知でしたら アドバイス下さい。 よろしくお願いします。
>>725 SHGetSpecialFolderLocation
SHGetPathFromIDList
このへんを調べてみたら
>>725 GetProfilesDirectoryはどうよ?
>>725 SHGetSpecialFolderLocationでCSIDL_PROFILESが使えるはず・・・
>>722 存在チェックはPathFileExists使ってる。
Windows NT/2000: Requires Windows 2000 (or Windows NT 4.0 with Internet Explorer 4.0 or later).
Windows 95/98/Me: Requires Windows 98 (or Windows 95 with Internet Explorer 4.0 or later).
だけど。
>>722 GetFileAttributesがエラー返したら存在しない。強引かも
>>725 CSIDL_PROFILES てのがあるではないか。
OSのバージョン知らないけど。
つーか、普通 FileExists じゃねえの?
>>732 おまえみたいなのがいるからVB厨と言われるんだヽ(`Д´)ノウワァァァン!
CSIDL_PROFILE のすぐ上がすべてのユーザのルートだと思うよ。
726、727、728、731、737さん、アドバイスありがとうございます。 まだ試してないんですが、まずはお礼を。
迷惑だからスレ違い野郎を弁護しないでくれ
741 :
デフォルトの名無しさん :03/06/10 21:14
質問お願いします。 SetBkColorで背景色を設定することは背景ブラシの色を(ブラシの種類は そのままに)変更することと同じではないのでしょうか? というのはRectangle()のときに内部の塗りつぶし色にSetBkColor()で 設定した色が反映されないもので...。 MSDNからでは読み取れないものでよろしくお願いいたします。
SetBkColorはテキストの背景色だな
744 :
デフォルトの名無しさん :03/06/10 21:30
>>742-743 テキストの背景色だけなんですね。
ずっとVBをやってたもので背景色全部だと思ってしまいました。
ありがとうございました。
∧_∧ ピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。 =〔~∪ ̄ ̄〕 = ◎――◎ 山崎渉 (^^)
彡川川川三三三ミ〜
川|川/ \|〜 プゥ〜ン
‖|‖ ◎---◎|〜 / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
川川‖ 3 ヽ〜 < (*´д`*)ハァハァハァ
川川 ∴)д(∴)〜 \_______________
川川 〜 /〜 カタカタカタ
川川‖ 〜 /‖ _____
川川川川___/‖ | | ̄ ̄\ \ ←
>>1-1000 / \__| | | ̄ ̄|
/ \___ | | |__|
| \ |つ |__|__/ /
/  ̄ ̄ | ̄ ̄ ̄ ̄| 〔 ̄ ̄〕
| | ̄
>>737 移動プロファイルでZ:\になっていた罠とかないの?
ぐぁ、スレ間違えてたよ(;´Д`) 逝ってくる。
CreateThreadによって作成された複数のスレッドから 外部のDLLにある関数を呼ぶときは関数の呼び出しの前後を クリティカルセクションで囲む必要があるのでしょうか?
>>749 ということはAPIを一つ呼ぶのにいちいちクリティカルセクションで囲んでいるのか?
クリティカルセクションを使うためには、それ自体も外部のDLLにある関数を使う必要があるが、
クリティカルセクションを使うためにクリティカルセクションを使うのか?
クリティカルセクションを使うためにクリティカルセクションを使うためにクリティカルセクションを使うのか?
クリティカルセクションを使うためにクリティカルセクションを使うためにクリティカルセクションを使うためにクリティカルセクションを使うのか?
>>749 その関数がやることに依存するんじゃないかな。
たとえば、グローバル変数やそれに類するものに全く触れない、
純粋な意味での関数ならば囲む必要はないだろうね。
それよか、どれかのスレッドが実行してる最中に
DLLがアンロードされないように注意したほうがいいと思う。
そのDLLの取扱説明書にスレッドセーフかどうかとか書いてませんか
753 :
名無し@沢村 :03/06/11 00:39
>>724 FindFirstFile()を使うのがスマートでないことは事実。
>>753 直接、プライマリブロックを読めるはず。
プライマリブロックは10年後でも変わんないよ。
755 :
名無し@沢村 :03/06/11 01:00
>>754 おまいはファイルの存在を確かめるだけのために、
ハンドルを開いて閉じるのはスマートではないと思わないか?
>>755 ごめん人それぞれ、でももっと早いのがキャッシュしているのが一番。
ごめん。
FindFirstFile以外で、もっとスマート(?)なやり方ってあるんですか? 今までずっとこれでやってきたんだが…
GetFileAttributes() は「属性の読み取り」権が無いと失敗するかなー なんて思ったけど、そうでもないっぽい。
759 :
デフォルトの名無しさん :03/06/11 03:37
OSがアップデートされたときなどに右下のタスクバーに吹き出しが でるけど、あれってどうやって表示させればよいのですか? なるべく自分で調べますので関連するキーワードをAPI名で 教えてください。
>>759 ウ・・・ザ・・・イ・・・
シ・ン・デ・・・
確かにあれはうざい
>>759 禁止しする方法をユーザーが知っているなら、
教えてあげても良いぞ。
WindowsUpdateの禁止の仕方も知らない馬鹿どもが、 WindowsUpdateがウザイからって、 タスクバーの吹き出し自体を嫌がっている。 こんなやつらはPGになってほしくない。 今PGなら今すぐやめろ。
ナニコノヒト?
いまコントロール上にマウスが数秒放置されたらポップアップヘルプを 表示するっていうの作ってるんですけど、マウスが数秒動かずに放置さ れたことが分かるメッセージってあるんですか?
>>755 >>757 つーかさ、BOOL Exist(LPCTSTR pszEntry); みたいなライブラリ作ってないの?
細かい手段云々よりそっちのがよっぽどスマートじゃないやん。
>>766 そういうライブラリを作るためにもどんなAPIを使ってスマートに実装するかって話だろうが
768 :
デフォルトの名無しさん :03/06/11 09:14
タスクトレイのポップアップメニューについて質問があります。 以下のように TrackPopupMenuEx を使って表示させようとしているのですが ウンともスンとも言いません。 どこか記述の面でおかしい所とかあるのでしょうか? よろしくお願いします。 Call SetForegroundWindow(frmMain.hWnd) Dim hMenu As Long Dim hSubMenu As Long hMenu = GetMenu(frmMain.hWnd) hSubMenu = GetSubMenu(hMenu, 0) Dim TPMPARAMS As TPMPARAMS Call TrackPopupMenuEx(hSubMenu, TPM_RETURNCMD Or TPM_RECURSE, 0, 0, frmMain.hWnd, TPMPARAMS) Call PostMessage(frmMain.hWnd, WM_NULL, 0, 0)
>768 戻り値を見て調べるという手順は踏まないのかい?
じゃああてずっぽで答えるしかないが TPMPARAMSは初期化してるの?
773 :
デフォルトの名無しさん :03/06/11 12:24
>>757 普通は GetFileAttribute() != -1 か PathIsExist()だろう。
>>766 わざわざそんなライブラリ必要ないよ。
FindFirstFileだとディレクトリの読み取り権がなくて Traverseしか許されてないときに失敗するね UsersでWINDOWS\TEMPを見るときとか
バルーンの実装がわかるプログラマいないよねえ なかなか このQ&Aではレベル高すぎたか?
マルチして煽って・・・最悪な厨だな
>>778 ありがとうございます
delphiのようですがvisual C++に応用できますか?
780 :
デフォルトの名無しさん :03/06/11 14:23
めちゃくちゃ初歩的な事なんですが、 メッセージボックスに変数の中身を表示させるにはどう書いたらいいんでしょうか? つまり、a=3でメッセージボックスに3と表示させたい MessageBox(NULL, ?????? , "Title" , MB_OK);って感じなんですが・・・
|u^=)・・・
782 :
デフォルトの名無しさん :03/06/11 14:30
>>780 ちょっとやってみりゃいいじゃん
MsgBox(a)
って書くだけじゃないか
>>780 面倒だけど。
char buff[256];
wsprintf(buff, "%d", a);
MessageBox(NULL, buff, ....
てやってる。もっといい方法あるのかなー
785 :
デフォルトの名無しさん :03/06/11 15:36
>>785 >>780 で特定はされていないが
>>783 は渡し値の数からして.
VBじゃないと思ったんだろう。っていうかこのスレがWinAPIの
MessageBoxだろと思う気持ちで書いたと思うけどな
>>783 は
787 :
デフォルトの名無しさん :03/06/11 15:44
>>786 アチキなら
ShoeMessage(a);
と書いてしまいます
てか
>>780 で行末に;があるからC系だとわかるだろ
これだからVB厨は・・・
というツッコミでよろしいでしょうか?
ウッ タイポ・・・ ShoeMessage(a); ではなく ShowMessage(a); でした チツレイ
結局VBでもWinApi使えるからいいけどな おれはVB使ってない。
>>780 if (a==3) MessageBox(NULL, "3" , "Title" , MB_OK);
でいいだろ。
aは実はchar a[255]とかだったら・・・
>>450 みすった
名前に入れっぱなしだったすまんそん
795 :
デフォルトの名無しさん :03/06/11 21:04
画面をクリップボードを通さずにに、 キャプチャする方法はありませんか? 見付けたページでは、サンプルソースが削除されてました。 探し方が悪いのかMSDNからも見付けられませんでした。 どなたかお教え頂ければ幸いです。
>>795 HDC hDC = GetDC(NULL);
でスクリーン全体のDCが取れる。
このDCを送り側、メモリDCを受け側に指定してBitBltすれ。
後始末はReleaseDC(NULL, hDC);
>788 SHOW-Aタンは元気にしてるだろうか・・・
>>790 使えるけどMsgBoxはAPIじゃなくてVBの機能だし
昨日からVB厨がいるな
Win2000 VB6.0 InitiateSystemShutdownを使って リモートシャットダウンをしたいのですが、 シャットダウンはできるものの 「安全に電源を切ることができます。」という画面が出てきて 電源が自動切断されないんです。 何か設定があるのでしょうか?
>>800 それはシャットダウンさせられる側のBIOS設定ではないかと
だから、なんでVBの質問をここでするんだよ。
InitiateSystemShutdown使ってるからじゃない?
VBのメソッドとWin32APIと混同したり Win32APIの質問をVBと混同したり 最近ぐだぐだだな、このスレ。
806 :
デフォルトの名無しさん :03/06/12 13:22
1つのexeを、スタートアップに組み込んで自動起動させたか、 その後にユーザーが任意で起動したかを判断する方法って ありますか?なんかいいアイディアください。 よろしくお願いします
何処に逝ってもVB厨はウザイな
>>806 根本的に無理。
スタートアップのショートカットに専用のコマンドラインオプションを仕込くらいしか。
そうするとスタートメニューからたどられたときにアウト 自動起動させるのならスタートアップではなくサービスプログラムにすべき
>>809 ターゲットはWindows95なのです・・・
812 :
デフォルトの名無しさん :03/06/12 13:51
>>810 5番目の引数の説明をよく読めや、このVB厨。
MSDNライブラリより
===============================
bRebootAfterShutdown
シャットダウン後、即座にコンピュータを再起動させるかどうかを指定します。
TRUE を指定すると、コンピュータは再起動します。FALSE を指定すると、
コンピュータは、電源を切っても安全な状態になったことを示すメッセージを
表示します。
>>811 Windows95ならレジストリに登録するだけでサービスとして動くが何か問題が?
>>812 いちいちVB厨ってつけるな。それに俺は第三者だ。
もうちょっと頭を冷やせ。
>>813 それもサービスと呼ぶとは知りませんでした。
己の無知を恥じ入ります。
登録位置がRunServicesだし
>>814 いいんだよ、気に入らない奴にはなんでもVB厨のレッテルを貼って貶めて安心するんだから
VB厨もウザいが、頭の悪いアンチVB厨はもっとウザいな
困ったなあ… 自PCだけならExitWindowExで電源断までできるんだけどね… APIでリモートシャットダウン(自動電源断)は無理ですか?
>>808 なるほど。でもbatファイルでコマンドを指定する方法ですと、
起動時に、コマンドラインの画面がでちゃいますよね・・・
821 :
デフォルトの名無しさん :03/06/12 15:54
>>820 bat処理ではなく、専用のexeスターターを作って
コマンドラインを与えれば解決できるのでは?
だからサービスとして常駐させればいいんだって そうすれば多重起動したかどうかで区別できる Windows95ならレジストリに登録するだけ
そんなもの見分けてどうするんだろ。 explorerのデスクトップとファイラの切り替えみたいなことをさせたいんだろうか。
>>823 それもプロセスを殺してみれば分かるが、判別方法は多重起動しているか否か
>>819 ExitWindowsEx()を呼び出すためのプロセスをリモートマシンで走らせといて
そのプロセスとソケット通信するってのはどうよ。
>>796 ありがとうございました。
解決致しました。
>>822 サービスとして常駐させる方法を教えてください!! API教えてくだされば自分で調べます!!
829 :
デフォルトの名無しさん :03/06/12 23:59
他のアプリケーションの起動や終了を検地する方法はありますか?
830 :
名無し@沢村 :03/06/13 00:03
太閤検地 刀狩り
832 :
名無し@沢村 :03/06/13 00:27
ついでなので便乗質問。 WindowHookExで、Window作成をフックできるのは使ってみてわかったんだが、 プロセス開始そのものをフックすることもできるのか? 投入されたプロセスがウインドウを作らないとフックできない気がしてるんだが。
>>773 ??
PathIsExist()な関数無いんだけど…間違っているような気がするが
わからない。
>>833 WH_CBTでフックをインストールした後、
DllMain()がDLL_PROCESS_ATTACHでコールされたときがプロセスの起動、
DLL_PROCESS_DETACHでコールされたとき(UnHookした後は除く)が終了と
すればいいんじゃなかろうか。
コンソールアプリがフックできるかどうかは忘れたけどね。
>>834 PathFileExists()の書き間違いだと思うよ。
GetTcpTable というAPIを使うために iphlpapi.h というヘッダファイルを入手しなければならないのですが PlatformSDK(?)はどこで入手すればよいのでしょうか?
>>835 フックDLLは最初にフックイベントが実行されるまでロードされない。
起動よりずっと後になる可能性がある。
デバッグしたほうが確実だな
>>838 日本語用があるわけではないのですね。
こっちはすでにダウンロード済みだったのでラッキーでした。
ありがとうございました。
自分自身がランチャー等から起動されているかどうか知る方法はありますか? 子プロセスから親プロセスのIDやハンドルを取る方法ってあるのでしょうか?
842 :
デフォルトの名無しさん :03/06/13 18:47
DQNな質問で申し訳ありません CALLBACK関数で int height=200; switch(message){ case WM_PAINT: dc=BeginPaint(hw,&ps); TextOut(dc,100,height,"漏れはDQNだ!",13); EndPaint(hw,&ps); return 0; case WM_KEYDOWN: if(wparam=='D'){ height=height-20; } return 0; (省略) } みたいにやろうとしたら上手くいきませんでした。 どう解決すればいいでしょうか?
DQNすぎて何を答えてやればいいかわからん。 CALLBACK関数って何だ?何に使ってる? コードを見る限りじゃウィンドウプロシージャか?
>>842 多分
>if(wparam=='D'){
>height=height-20;
InvalidateRect(hw,NULL,TRUE);
>}
そもそもheightが静的な変数じゃなかったりせんか。
847 :
デフォルトの名無しさん :03/06/14 03:15
ツールチップの TTF_TRANSPARENT って何なの? ググって見ても英語ばっかりで分からん、、、
真型フォントの背景を透過
849 :
デフォルトの名無しさん :03/06/14 11:27
すみません、スプレッドシートコントロール(名前を間違って 覚えているかもしれません。表計算で使われる、罫線が引いてあり、 その中に文字や数値を入力する奴です。) を作るには、CreateWindowEx()のクラス名に何を指定すれば良いのでしょうか。 WC_SPREADSHEETのような物があるかと思ったのですが、無いようなので…。 Googleしても、MSDN調べても、Excel/SQL/VBばかりでした……。
>>846 ありがとうございます。
Toolhelp32やPSAPIでプロセスIDの列挙は出来るのは解りましたが。
自身との親子関係を判別するにはどうしたらよいのでしょうか?
Windowsにはプロセスの親子関係はないとの検索結果もあったのですが、
ProcessWalkerではツリー表示が出来ているので、継承関係みたいなものは
判別できると思うのですが…。
>>841 親プロセスのIDなら
CreateToolhelp32Snapshotでハンドル取得、
Process32First&Process32Nextで情報取得。
あとは取得したPROCESSENTRY32構造体の
メンバth32ParentProcessIDを
調べれば分かるんじゃない?
これでいいのか知らんがなぁ。
>843-845 static int h; とすれば解決することが分かりました 有難うございます
あ、 「InvalidateRect」の読み方教えて下さい おながいします
>>851 ありがとうございます。
XPを含めたNT系ではToolHelp32が利用できないという情報があちこちにあって、
PSAPIだとID(とそれから開くハンドル)しか取れないのでどうするのかと思いましたが、
試してみたらXPでも2000でもToolHelp32が使えますね…。
PSAPIを使用しなければいけないのはNT4以前ってことでしょうか?
>855 有難うございます
InvalidateRectで追加した更新領域を無効にするにはどうしたらいいのですか? 更新領域の追加はできても削除や、クリアは出来ないの?
ValidateRect()
>>841 PSAPIなるものが何なのか初心者の漏れにゃ
分からんがMSDNに
Windows NT: Requires version 5.0 or later.
Windows: Requires Windows 95 or later.
Windows CE: Unsupported.
Header: Declared in tlhelp32.h.
Import Library: Use kernel32.lib.
ってかいてあるからそうなんじゃないの?
明らかに違うだろ >> 848
リストビューコントロールが使えそうなので、格闘してみます。 お騒がせしました。
MSDNにビットマップオブジェクトはメモリDCにしか SelectObject()できないとなっていますが、これは なんででしょうか??
デバイスが存在するDCに関連づけたら、出力先がビットマップになって、 デバイスが存在する意味がないから
_| ̄|○... SleipnirとかOfficeXPの様なメニューを作りたくて オーナードローまわりいじくってるんだけど CreatePopupMenuで作ったメニューのメニューアイテムがオーナードローできる範囲より外側の部分 つまり、フレームの部分をフラットっぽくするやり方がわからない・・・ どなたか助けてー
>>865 これってシステムのメニューでなく自力でCreateWindow()するしか
ないんじゃないの?
LongHornだとサポートされるかもしれないけど...
CodeGuruあたりにOfficeXP風のメニュークラスのサンプルがあった気がするが。
あるけど漏れの見たサンプルはエッジは3Dばっかみたい... 3DでもそんなにOfficeXPやVS.NETのメニューと見分けつかないけど。 NC系のmsgがあるのだろうか
871 :
デフォルトの名無しさん :03/06/15 01:15
>>865 メニューウィンドウに対してGetWindowDC でhdcを取得すればどこでも描画できます。
外部アプリケーションをSendMessageでメッセージを送って操作する プログラムを書いています。 操作対象のウィンドウが画面に表示されている時は問題ないのですが、 対象がタスクトレイに収納されている時に、FindWindowでハンドルが 取得できなくなります。 対象アプリのウィンドウが非表示になってるわけで、ハンドルが取れない のも頷けるんですが、このままでは目的を達せません。 そこで、とりあえず対象アプリをタスクトレイから引っ張り出したいの ですが、この方法がわからずハマってしまっています。 どなかた判る方いらっしゃいましたら、ヒントいただけないでしょうか? よろしくお願いします。
EnumWindows関数を使って全トップレベルウィンドウを列挙すればいい。 その際、851に書いた方法で、あらかじめ全プロセスを列挙して、ほしい プロセスのIDを得ておく。プロセスのパスは知っていないとだめだけど。 この辺の関数とかをうまく組み合わせてほしいウィンドウハンドルを特定、取得できれば あとは、煮るなり焼くなり好きにできる。 ホントはもっといいやり方があるだろうけど漏れが知ってるのはこれだけ。 あと未知のソフトにNotifyメッセージを送るなら PostMessageの方が安全かもしれないよ? じゃ、寝よ。
874 :
デフォルトの名無しさん :03/06/15 11:19
特定のプログラムに対してフックをかけるには、どんな方法がありますか? 全てのプログラムにかけるシステムフックはある程度使えるのですが・・・ おおまかでいいので、よろしくおねがいします。
特定のプログラムと同じフォルダにフック用APIラッパーDLLを置く
>>873 その後わかったんですが、ウィンドウが非表示になっているからハンドルが
取れないわけではなく、対象アプリが、タスクトレイ収容と同時にウィンドウを
破棄、復帰時にまたウィンドウを作成、といった手順を踏んでいるのが
FindWindowが空ぶる原因でした。
で、結局、自分でマウスをクリックしてタスクトレイから対象アプリを引っ張り
出す様子を Spy++ で調べて、同じメッセージを送ってやることで目的を達し
ました。
どうもでした。
878 :
デフォルトの名無しさん :03/06/15 19:36
RedrawWindow()という関数がありますが、これはどんなとき に使うものなのですか? UpdateWindow()とは違うのですか? (MSDNを読んでもよく分からない(日本語訳もないため)ので よろしくおながいします)
>>878 redrawは再描画だよね
Updateは更新だよね。
の違い
>>879 再描画するにも更新するにもOSはアプリに
WM_PAINTを送る必要があるのでいっしょの
ように思えるのですが。。。
>>880 879が言ってるのはリビルドとビルドのような関係
883 :
デフォルトの名無しさん :03/06/15 20:08
ケアルとケアルラの違いか!?
886 :
デフォルトの名無しさん :03/06/15 22:15
論理ドライブ名から、物理デバイス名を取得するAPIとかってあるの?
>>886 それは、俺も知りたい。
どちらかと言うと、どのアダプタのどのターゲットにあるかだけでも知りたい。
(物理的な位置)
>いつのMSDN ワラタ
>>890 いや、リアルで強烈に古いリリース読んで騙されてた香具師を目撃したばかりで
>886 QueryDosDevice
>>887 SCSIデバイスに関してはASPIかSPTIで取れる
あるプロセスがどんなポートを使用しているか調べるAPIはありますか? WinXPのnetstat -oだとプロセスIDが見れるので そこから調べることができるそうですが そのような機能を持ったものでもかまいません。
>>894 AllocateAndGetTcpExTableFromStack
>>895 レスありがとうございます。
わからなかったことが1点ありました。
これはMSの公式ドキュメントはないのでしょうか?
いちおうサンプルはいくつか見つけることができました。
第4と第5引数ともに"2"をセットしている例が多かったのですが
第4と第5引数の意味が理解できませんでした。
どういった意味があるのでしょうか?
>>896 非公開APIなのでドキュメント化はされてないね。
引数の意味に関してもサンプルを参考するか、
あとは自分で試すしかないと思うが
>>897 なるほど、やはり非公開でしたか。
もうすこし試行錯誤してみます。
ありがとうございました。
899 :
デフォルトの名無しさん :03/06/16 21:41
わしは886じゃよ
>>892 QueryDosDeviceだと\\HardDriveXだっけ?
そんなのが返ってくる。
それではなく、PhysicalDriveXという形で
返ってきてほしい。
だれか、知らん?
>>887 ,893
IOCTLでSCSI_THROUGH_DIRECTを投げる
そのとき、CDBでSCSIコマンドのなんか(ちと失念)をセットしておく
MtFujiを読めば、CDBで投げるコマンドはのっている
900 :
デフォルトの名無しさん :03/06/16 21:49
> IOCTLでSCSI_THROUGH_DIRECTを投げる SCSI_PASS_THROUGH_DIRECT
901 :
デフォルトの名無しさん :03/06/16 22:17
ファイルをコピーする前にディスクの空き容量を厳密にチェックしたい。 GetDiskFreeSpaceEx()で空き容量を取得できるけど、あれは単純な 空き領域が得られるだけで、実際にファイルをコピーできる限界は セクタ単位で考えるとFAT32かNTFSかで微妙に違うはずですよね? たとえばGetDiskFreeSpaceEx()で 100kB空いてるからといって、 99.9kBバイトのファイルをコピーできるとは限らないですよね?
902 :
デフォルトの名無しさん :03/06/16 22:19
それとも、GetDiskFreeSpaceEx()で 100kB空いてるならば、 単純に残りクラスタ×クラスタあたりのバイトが100kB空いてると 考えてよい? ・・・ような気がしてきた。いいのかな。
>876 すいません。もう少し詳しくおねがいします。 自分が予想するに、フックプロシージャが格納されるDLLに、プログラムを判別する値を グローバル変数として保存しておくのではないかと思うのですが、実際にやろうとすると 上手くいきません。
>>903 大体、100KB空いていたとして、その瞬間に違うプロセスが使ったら…どうすんの?
>>901 圧縮ドライブの場合もっと大変だよ。がんばってね。
>>905 とりあえず俺はSEサソの言いなりのヘポーコPGです。
>>906 はい。
今1kBほどのテキストファイル作って差を見たら
きっちり空き領域が8,192Byte減ってますた。
逝ってきます。
908 :
デフォルトの名無しさん :03/06/16 22:45
>>893 >>899 >>900 情報ありがとうございます。
やっぱ、ASPIか、SPTIですか。ASPIは最近勉強したんでわかるんですが
SPTIとは何でしょうか?
おそらくWin2000等のNTで使用するのだとは分かるんですが…
DDKとかインストールする必要あるんですか?
SPTIの情報が少なくって……
SCSI Pass Through Interfaceの頭字語。そのまんま。 IOCTL_SCSI_PASS_THROUGH_DIRECTでぐぐったら解説が出てきた。 オープンソースのCD焼きソフト(cdrecord)のソースも参考になるかも
>>910 ぐわぁ〜そっちか…MSDNとかでDDK直接探してて泣きを見ていました。
参考になりました。
サンクス!
912 :
デフォルトの名無しさん :03/06/17 11:28
PlatformSDKはローカルにファイルを保存してセットアップできないんでしょうか? PCを変えたんですが、もう一度Webからインストールするのはめんどうです。
ああ!専用DLページがあったんですね!ありがとうございます!
916 :
デフォルトの名無しさん :03/06/17 17:25
SetTimerを使った後にKillTimerを使わないと何か弊害があるのでしょうか?
917 :
デフォルトの名無しさん :03/06/17 17:28
ネットで稼ぐならこれ。完全無料!!
リンクスタッフになれば小遣い稼ぎができます!!(左下に詳しい説明があります)
[報酬について]
クリック報酬・・・1クリックされる度に10円の報酬
バナー紹介料・・・リンクスタッフ登録の度に1000円の報酬
キャンペーン・・・今なら登録するだけで1000円プレゼント
間接報酬・・・紹介者が得た報酬の25%を加算いたします
プレミアム・・・優秀サイトには、報酬に応じてボーナス有り
単純に考えて1日100人クリックしたとすると、100人×10円×30日=30000円(一ヶ月)
そこらへんの掲示板に貼り付けていけば100クリックなんてスグです。
その他、自分の貼り付けた広告から誰かがスタッフになると1000円もらえるので
1日5人スタッフを紹介できたとして1000×5×30=150000円
30000+15000=180000!!間接報酬などもありますのでどんなに悪くても一ヶ月に10万円以上は必ず稼げます!!
http://www12.ocn.ne.jp/~sihori/ ぜひ一度覗いて見てはいかがでしょうか?
>>917 とてもよさそうですね(^^)
10万円稼げなかったときはどんな保証があるんでしょうか。
920 :
デフォルトの名無しさん :03/06/17 19:29
システムトレイにアイコン表示されるアプリをつくったんですが、 アイコンの色が256colorになっているようです。 フォルダにある状態では24bitcolorなのですがなぜ減色してしまうのでしょう。 おしえてちょ
16x16サイズなら256色で全ピクセルが表現できるから。 とか?
>>920 win2000以下は256も出ないよ。たしか16色くらい。
xpだけでしょ256も出るのは
アイコンって最大256色じゃないか?
924 :
デフォルトの名無しさん :03/06/17 20:26
すみません。うそを書いたかもしれません。 要するにフォルダで見るとスモールアイコンはきれい ↓ ダイアログの左上にあるスモールアイコンもきれい ↓ でもシステムトレイに入れると色が化ける です。スモールアイコンは256colorで書き直したほうがよいですか? あとVisualStadioでアイコンのフォーマットの追加はできるけど削除 どうやりますか?
タスクトレイのアイコンは2000以下は16色だよ。
926 :
デフォルトの名無しさん :03/06/17 21:39
ちょっとお聞きしたいのですが、 特定の文字が現在のフォントにあるかどうか調べるAPIってありますか? (TextOutしたときに、きちんと表示されるか、空白 or "・"になるか)
VC.NETで、ダイアログボックスでActiveXコントロールを張りつけるのではなく、 自分で作ったウィンドウにActiveXコントロールを張りつけるのは どのようにすればよいでしょう? CWnd::CreateControl()かなと思ったんですが、 落ちてうまく動かなかったです・・・・
GetGlyphIndices
>>926 メモリDCに書いてみてドット調べて・かどうかチェックすれ。
教えてちょ!
有難うございます アプリ終了後もタイマイベントが発生するでしょうか? それともアプリが終了すれば大丈夫でしょうか?
>>936 普通ならタイマは停止する。
でも、Killで止めといたほうがスッキリヽ(´ー`)/
>>874 亀レスでスマソ
875のやり方の手助けとして書いたつもりだったんだが・・・。
フックって何をフックしたいのかがよく分からん。
そのソフトが呼び出すAPIとかを横取りしたいのなら
568のリンクにそれ用のソフトがあるからそれを使えば
簡単に作れる。
それとも特定のメッセージとかを横取りしたいのか?
だったらSetWindowsHookEx + WH_GETMESSAGEとか。
939 :
デフォルトの名無しさん :03/06/18 01:05
>937 有難うございます
942 :
デフォルトの名無しさん :03/06/18 21:05
論理フォント作成で質問です stNCMetrics.cbSize = sizeof( NONCLIENTMETRICS ); ::SystemParametersInfo( SPI_GETNONCLIENTMETRICS, sizeof( NONCLIENTMETRICS ), &stNCMetrics, 0 ); memcpy(&defFont,&stNCMetrics.lfMessageFont,sizeof(defFont)); defFont.lfWeight=FW_BOLD; defFont.lfHeight=72; defFont.lfItalic=true; defFont.lfQuality=PROOF_QUALITY; lstrcpyn(defFont.lfFaceName,"MS 明朝",15);//取りあえずこれで hStatusFont=CreateFontIndirect(&defFont/*&stNCMetrics.lfMessageFont*/);//論理フォントの選択&作成 HDC DC=GetDC(GetWinWND()); SelectObject(DC,phStatusFont_); TextOut(DC,0,128,"漢字",4); イタリック名明朝が出るはずなんですが、普通(正体)のシステムフォントしかでてこない... ::SystemParametersInfo( SPI_GETNONCLIENTMETRICS, sizeof( NONCLIENTMETRICS ), &stNCMetrics, 0 ); このプロセスは元のFONTの一部を変えたいという意図からきています。 最初から全部値を入れても同じ結果なのです。なにが問題なのでしょうか?
hStatusFont=CreateFontIndirect ... SelectObject(DC,phStatusFont_); phStatusFont_って何?
944 :
デフォルトの名無しさん :03/06/18 21:25
>943 hHANDLEです。 サンプルコード書く時のミスです。すいません。 その部分での問題ではないです。
パラメータに誤りがあるか、指定したフォントが無い場合 最も近いフォントをかってに選んで返す。 と思った。
だからLOGFONTには自分で値を入れないで 列挙してきた中から選べ
しかしMS 明朝のボールド・イタリックが無いとは思えないぞ
stNCMetrics.lfMessageFont が変なフォントになっているとか? 942のコードを試してみたけど、普通に斜体太明朝になるけどなあ。
949 :
デフォルトの名無しさん :03/06/18 21:58
自己解決できました。ハンドルの参照が間違ってました(死 hhande型なのに何故ポインタ型で通ったんだ?w スレ汚してすいません。 取りあえずそのミスを除いてはこのコードで論理フォントが作れるようです
フォント列挙がめんどくせーんだよな。 一度classつくりゃすむっちゃあすむことだが。
952 :
デフォルトの名無しさん :03/06/18 22:17
zipfldr.dllを操作するAPIって公開されていますか?
>このホストでは、しばらくスレッドが立てられません。 >またの機会にどうぞ。。。 だそうだ。 後は頼む。
954 :
デフォルトの名無しさん :03/06/18 22:23
普段はユーザインターフェースを持たないプログラムとして 稼動してるけども、必要なときに応じてGUI画面を 表示させたいプログラムってどうやって作るんだろう… タスクトレイ常駐型レベルじゃなくて、たとえばIISのような。
>>949 やっぱりphStatusFont_が原因じゃねーか、さっさと氏ね
サービスとして作ればいいのでは?
>>942 おれはいつもこうやって作っているんだが…
// フォントオブジェクト作成
hnewFont1 = ::CreateFont( 12, /* キャラクタセルの高さ(ピクセル) */
0,/* キャラクタの平均的な幅 */
0,/* 傾斜ベクトルとデバイスのx軸との間の角度(1/10度単位) */
0,/* 各キャラクタの基線とデバイスのx軸との間の角度(1/10度単位) */
FW_NORMAL,/* フォントの必要な幅 */
0,/* イタリック体ならTRUE */
0,/* 下線をつけるならTRUE */
0,/* 取り消し線をつけるならTRUE */
SHIFTJIS_CHARSET,/* キャラクタセット */
OUT_DEFAULT_PRECIS,/* 必要な出力精度 */
CLIP_DEFAULT_PRECIS,/* 必要なクリッピング精度 */
DEFAULT_QUALITY,/* 必要な出力品質 */
DEFAULT_PITCH | FF_DONTCARE, /* フォントのピッチとファミリの指定 */
"MS ゴシック" );/* フォント名 */
質問いいでしょうか.わかる方いらしたら,一発返答お願いしやす. Win32コンソールアプリでキー入力をチェックしたりできますでしょうか? コマンドプロンプトでどこまでやれるのか気になりまして. getchar使うとか,そうゆうのではなく,,,ってなると, 結局イベントを扱えるかどうかにかかってきますね. そうゆうAPIあるのかどうか,教えてえらい人!
vcならkbhitとか
>>959 どうもゴッツァンっす! 答えてくれてありがとう.アイリスペクトユー!
このスレ的にはReadConsoleInputとか言ってほしいところだが
>>961 押忍! kbhitでいろいろ調べていたら,
ReadConsoleInputにも自然とたどり着いたです.ありがとう〜
963 :
デフォルトの名無しさん :03/06/19 08:58
すいません、質問させてください。 フォルダ内のファイル一覧を得るためのWin32APIはありますでしょうか。 ご存知の方、申し訳ございませんが、教えていただけたらうれしいです。
ある。以上。
>963 FindFirstGirl FindNextGirl
>>965 FindFirstGirlが失敗するんですがどうしてでしょうか
>966 どっちで失敗してるんだ?
*.* ウフッ
もてない奴は探すだけ無駄ということだろう
FindFirstFile/FindNextFile
>969 冗談のつもりだったのだが・・・ 俺の負けだ! Girl(女の子/少女の意味、知らんのか?)をFileに置き換えよ! さすれば汝は救われる。 つーかヘルプ読め!
リンクエラーの前にプロトタイプが無くて叱られると思うのだが・・・
Cならプロトタイプなくてもコンパイルとおらんか? 一応
>>954 IISと同じように…っつーなら、IISと同じようにサービスにすりゃよかろ。
IIS自体にUIはないけどな。
いいから次スレを・・・
>>977 では君に頼もう、次スレ立ててくれたまえ
痔スレですか? イタイタシイデスネ
.NET Framework一回使うともうWin32APIには戻れないね。
戻れないというか、MFCと同じで結局足りない部分をWin32APIで補わないとやっていけない
>>965 良い関数だ…でも、俺の場合…
「0 個のGirlが発見されました」
になるのは何ででしょうか?(why
983 :
デフォルトの名無しさん :03/06/19 22:20
PCで利用可能なCOMポートを全て確認(列挙)したいのですが、 全てのポートについてオープンを試みる単純な方法以外に より正当な方法をご存知の方が居ましたら教授ください。 Webサイトドキュメント等へのポインタでも構いません。
CodeProjectで見つかりました。
>>981 MFCよりも便利で、足りない部分をWin32APIで補うだけだからいいってことでしょ。
全部MFCやAPIでやる方法には戻れないよ。
1000
1000!
σ _、_ ヽ ( ,_ノ` )σ 989ゲッツ!! ( )ノ 〉 〉
990BX
今だ! 991ゲットオォォォォ!!  ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ (´´ ∧∧ ) (´⌒(´ ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡  ̄ ̄ (´⌒(´⌒;; ズザーーーーーッ
992ゲットだな ∧_∧ ∧_∧ (´<_` )さすがは兄者、中途半端だな ( ´_ゝ`) / ⌒i / \ | | / / ̄ ̄ ̄ ̄/ | __(__ニつ/ FMV / .| .|____ \/____/ (u ⊃
993 :
デフォルトの名無しさん :03/06/22 13:58
∧_∧ 〔^^〕 _,( ´∀`)⌒ i | (⌒ ー 一 r.、! 〉 ヽ弋 。 人 。 イ(` ー' 〔勿\ ヽ ) r⌒丶 ) ドカ ドカ ドカ / ! |'´ ドカ / /| |‖ ドカ ( く ! ||‖ ドカ ドカ \ i | ‖|‖| ,__> ヽヽ从/∧∧ ⊂⌒ヽ从/ つ ゚д゚) <993ゲトー
994 :
デフォルトの名無しさん :03/06/22 14:06
ノノハヽo∈ 从 `,_っ´) プッ
('A`) 995マンドクセ
996 :
デフォルトの名無しさん :03/06/22 21:05
誰か!
987 名前:デフォルトの名無しさん :03/06/20 04:06 1000 988 名前:デフォルトの名無しさん :03/06/21 14:46 1000!
1000 (σ・∀・)σ ゲッツ!!
1000かよ!
1000!!
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。