1 :
デフォルトの名無しさん :
2007/04/18(水) 01:54:51 スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんやお姉さんたちが答えてくれるかも。
過去スレ、関連リンクは
>>2-5 くらい。
■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。英語版(
http://msdn.microsoft.com/library/ )の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで
, -‐- 、 r‐-、__ ヽ '´ ̄ ` / ' ヽ. ヾ ヽ L_/ ; l i ! ヽ. . / / ナフ ノ リ ナ ノ)) 〉 / i , ァ'´l` fヽ. ! リ / . / l l ヒ'l´! ト| lヽ ん、_リ、 丶 ー' _,' ‐ ,.' ゝ ヽ \ヽヽ __ ィ ゝ` ` `゙, ー 、lヽ.,'.,、,、,、,、,、,、,、,、,、,、,、,、,、,、,、,、,、,、,、,、,、,、,、,、 / ヽヽ!|,、 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄| / ‐- 、 ヽ// テ ン プ レ | ,'´ l`ー/ ニi. | ! i ∧ ァノ こ こ ま で | ト !' `/ |
リナックスと言うと一目で頭悪そうじゃん? FreeBSDって書くと通っぽいの思われ。
誤爆乙 いちおつ
9 :
デフォルトの名無しさん :2007/04/18(水) 09:10:24
LoadResource(wavファイルを)でロードしたメモリは、 手動(FreeResource)では開放はしないものなんでしょうか。 LoadImageの場合は、リソースのロード、ファイルのロードに限らず、 DeleteObjectで開放するので、 メモリの種類みたいなのは、同じだと思うんですけど、 LoadResourceのメモリは普通のと違ったりするんでしょうか。
10 :
デフォルトの名無しさん :2007/04/18(水) 09:22:36
>9 どこからLoadResourceするのかで違うのでは?
11 :
デフォルトの名無しさん :2007/04/18(水) 09:39:13
13 :
9 :2007/04/18(水) 10:37:44
ありがとうございます。
>>10 BCCで猫とかみたいにオーソドックスにリソースファイルに書いて、
ロードは以下みたいにやっています。
get = LoadResource(hInst, FindResource(hInst, (char *)IDR_WAVE*, "wave");
>>11 そのPEというのについて調べてみます。
>>12 訳してみました。
FreeResource機能は、16ビット用に残してあるもの。
32ビットの場合、RoadResourceの場合、開放する必要はない。
ただ、以下の物に付いては、開放する必要がある。
(FreeResourceを以下の機能に取り替えた)
Accelerator:DestroyAcceleratorTable
Bitmap:DeleteObject
Cursor:DestroyCursor
Icon:DestroyIcon
Menu:DestroyMenu
ガンガンDVD思い出した
15 :
9 :2007/04/18(水) 13:30:40
少し調べてきました。
>>10 >>11 >どこからLoadResourceするのか
>あらかじめPE(実行ファイル)に含まれたリソースなら
実行ファイルに含まれたリソースだと思います。
リソースに含むと、その分exeの容量が増えますので。
そもそも、それ以外のリソースがどういうものか分かりません。
>予めメモリに展開されてるからロードしても体積は増えん
それは、直にリソースからwavを使ってもあまり変わらないという事でしょうか。
PlaySound(HGLOBAL, NULL, SND_MEMORY | SND_ASYNC); を以下にする感じで。
PlaySound((char *)IDR_WAVE**, hInst, SND_RESOURCE | SND_ASYNC);
ビットマップをLoadImageするのは、メモリを確保するから速くなるのではなく、
HBITMAPに変換するから速くなるという事なんですかね。
>>15 >それ以外のリソースがどういうものか分かりません。
「実行ファイルに含まれたリソース」と「実行ファイルに含まれてないリソース」
「実行ファイルに含まれたリソース」は基本的にプログラムを実行した時点でメモリにロードされる
「実行ファイルに含まれてないリソース」はLoad*****されるまでメモリの上には無い
LoadImageで速くなるかどうかはしらんが
オブジェクトをハンドルで管理する理由は細々としたデータを管理しなくて良い所にある
17 :
デフォルトの名無しさん :2007/04/18(水) 13:51:03
>>15 リソースを何か特殊なもんだと勘違いして内科医?
テキストファイルだってリソースだよ?
リソースを直訳してみ。
利葬巣
これは酷い
20 :
9 :2007/04/18(水) 15:53:05
>>16 >>17 >それ以外のリソース
> == 実行ファイルに含まれてないリソース
> == テキストファイルだってリソースだよ?
それらは外部ファイルという風に言っていました。
実行ファイルに含まれてないリソースと外部ファイルの違いが分かりません。
>「実行ファイルに含まれたリソース」は基本的に
DISCARDABLEとかですか?
>LoadImageで速くなるかどうかはしらんが
始めはDIBの状態なので、DDBにすると早くなるという意味です。
>細々としたデータを管理しなくて良い所にある
きっちり管理したいです。
64M、128Mメモリとか、ロートルマシンなので、
ある程度の量(5Mぐらい?)メモリを使うと極端に遅くなるんです。
どうしてSetWindowsHookExを使うとけ#pragma data_seg〜って書かないといけないの?
>>21 フックするプロセスごとにDLLがロードされるので、変数をプロセスを跨いで共有する必要がある。
へぇ
書きたくなければFMOでも使うといいさ
何度言っても分からない それがム板クオリティ
MSDNライブラリも2006/06と2006/12の両方を載せるのは無駄。
>>4-5 は整理しろよ。
>>22 複数のプロセスがロードしないなら書かなくておk?
>>28 良いと思うよ。DLLにする意味も薄くなるが。
いや、グローバルフックはDLL化必須じゃん?
>>28 ローカルフックならそう。そもそもDLL関係ないし。
グローバルフックなら CallNextHookEx に渡す HHOOK を共有しなければいけない。
>>30 複数のプロセスからロードしないならグローバルフックじゃない気がするが
え?別にDLLのフックを呼び出すのが単一でもグローバルフックはグローバルフックだろ?
それとも
>>30 と同じく俺も勘違いなのか?
>>前998&999 ありがとうございました、何とかなりそうです
>>21 はグローバルフックとは一言も言ってないんだよね。
この時点ですでに勘違いなのかもシレン。
要
>>21 のレス。
36 :
32 :2007/04/18(水) 22:39:10
俺も語弊があるなw >複数のプロセスからロードされないなら だな
>>36 それが良くわからんのだが
フックには特定のスレッドを対象にしたもの(これがローカルフック)と
特定の対象スレッドを指定しないグローバルのものの2種類のスコープがあって
後者はフックプロシージャがDLLにないと出来ない
で、たとえばWH_GETMESSAGEなんかは
ローカルだと対象のスレッドのメッセージだけ取ってくるし
グローバルだととにかくどこのメッセージでも取ってくる
ローカルとグローバルの違いってこれだろ?
SetWindowsHookEx呼ぶDLLの関数を複数のプロセスが呼ぶかとか関係無いと思うんだが
>フックには特定のスレッドを対象にしたもの(これがローカルフック)と 違う。 ローカルフックは自分自身のスレッドのみを対象としたもの。 他のスレッドを指定してのフックはグローバル。 もちろんスレッドを指定せずシステム全体が対象の場合もグローバル。
DestroyIconとDestroyCursorの違いってなに? CreateIconIndirect で作ったらDestroyIconで処分するってMSDNに かいてあるんですが
DestroyIcon はアイコンを破棄する。 DestroyCursor はカーソルを破棄する。
っていうレス以外でお願いします
CreateWindowExのheightやWidthを弄って実行しても 何故か画面に反映されません・・・ エスパー回答でもいいので助けてください・・・
>>40 言われた通りにしとけばいいだろ
哲学的な答えが欲しいならモニターにキーボード投げつけろ
>>43 CreateWindowExを呼んでる部分晒してよ
ShowWindow
>>44 2画面分割のスプリットウィンドウで、親ウィンドウの上に
子1&2ウィンドウを作っており、その子2のCreateWindowです。
CreateWindowは、親のProcのWM_CREATEで呼んでいます。
+--+-------+
|子1|子2 |
| | |
+----------+
+----------+
(a)の行をg_c2w.height-20にしても変化しません・・・
20はステータスバーの高さです。
// 子2ウィンドウ作成
g_hChild2 = CreateWindow(
clsChild2,
(LPCWSTR)"",
WS_CHILD | WS_VISIBLE | WS_BORDER,
g_c1w.width - g_frame,
0,
g_c2w.width,
g_c2w.height, ←(a)
hWnd,
NULL,
hInstance,
NULL
);
>>40 CreateIconFromResourceExとCreateIconIndirectは
与えたパラメータによってはカーソルを返すこともあるが、
そのハンドルがカーソルであったとしても、DestroyIconで破棄しなくてはならない。
>>46 g_c2w.heightの中の値は確認した?
>>48 すみません、今解決しました。
親のProcのWM_SIZEの中に子2ウィンドウのサイズを変更する個所が
ありまして、それがWM_CREATEで設定したg_c2w.heightを上書きして
いたようです。WM_SIZEでも-20してやると希望通りに動作しました。
ウィンドウ作成時にもWM_SIZEが走るとは知りませんでした・・・
∧∧ ヽ(・ω・)/ ズコー \(.\ ノ 、ハ,,、  ̄  ̄
自己解決しました。 50にカチンときたので教えません。 バーカ!
53 :
40 :2007/04/19(木) 01:54:44
エクスプローラで、コンテキストメニュー項目を追加したいのですが、 ファイルやフォルダを無選択時の場合(新規作成(W)とかが出るやつ)に 使用されるレジストリはどこなのでしょうか?
*に書いておけばいいんじゃね?
>>54 HKEY_CLASSES_ROOT\Directory\Background\shellex\ContextMenuHandlers
だけど、これだけを聞いてちゃんとContextMenuHandlerを作れるのか?
57 :
デフォルトの名無しさん :2007/04/19(木) 10:31:39
任意のアプリのウィンドウを SetParentで子ウィンドウにするプログラムを作りたいんですが 普通にSetParentしただけでは描画に問題がでました。 それでCreateRemoteThreadで同じプロセスに作ったスレッドの ウィンドウを親にしてみても同様に描画の問題がでますた。 なのでSetParentは同じスレッドじゃないとまともに動かないと結論付けて 今度は別のAPC未対応のスレッドにウィンドウを作らせるか、 もしくはウィンドウを別スレッドで作ってからウィンドウのハンドルを 別のスレッドに関連づけるような方法を試してみたいのですが そんな方法はありませんか?
58 :
デフォルトの名無しさん :2007/04/19(木) 14:48:06
>>58 念のために聞くけど、
猫の画像ファイル(bitmap1.bmp)は自分で用意しないといけないけど用意した?
60 :
デフォルトの名無しさん :2007/04/19(木) 15:05:27
アイコンとビットマップ両方用意してあります。 ちなみに、フォルダでexeをみると、アイコンは変わって 表示されてました。
>>60 .rcのファイルにちゃんと
MYBMP BITMAP DISCARDABLE "bitmap1.bmp"
の行がある?
62 :
デフォルトの名無しさん :2007/04/19(木) 15:20:26
>>61 あります。
もしかしてビットマップが大きすぎたりすると
表示できないとかありますかね。。
でもDlgの左上にアイコンも表示してくれないし・・・
63 :
54 :2007/04/19(木) 15:21:57
>>55 >>56 どうもありがとうございます。
>>56 やっぱりそれしかないんですか・・・
そこだとActiveXオブジェクトである必要がある訳ですよね・・・?
HKEY_CLASSES_ROOT\*\shell\foo\command
みたいに適当なEXEとかでできる所はないんでしょうか・・・
ないですか・・・そうですか・・・
でも何でDirectoryなんでしょうか・・・?
>>62 当たり前だけど .rcのファイルのダイアログの定義のところに
CONTROL "MYBMP",IDC_STATIC,"Static",SS_BITMAP | SS_REALSIZEIMAGE,
19,18,13,14
の行はあるよね?
"MYBMP"の綴り間違ってたりしてないよね?
こっちの環境では2000x2000ピクセルのサイズでも、
モノクロビットマップでもちゃんと表示されるんだけどなぁ・・
普通のBitmapじゃ表示されないよ アイコン用Bitmapを作るツールで作らないと
66 :
デフォルトの名無しさん :2007/04/19(木) 15:45:48
>>64 あります。ビットマップが表示されないだけで
ほかのはきちんと機能します。
67 :
デフォルトの名無しさん :2007/04/19(木) 15:55:31
>>65 ビットマップの新規作成から
こぴぺしてつくりました。
アイコンは **.icoでBMPは **.bmpです。
>>67 エクスプローラとかデスクトップを右クリックの「新規作成」のことだろうか?
作っただけのそのままのファイルだと何も表示されない。
一度、ペイントブラシで適当に色塗っただけのBMP作って試してみたら?
69 :
デフォルトの名無しさん :2007/04/19(木) 16:04:56
>>68 VCのリソースエディタに貼り付けました。
なんか色数が多いらしく、減色&小さめにリサイズして
貼り付けました。
リソースタブからプロパティをみると表示されています。
実行すると表示されません。
とりあえずビットマップ・描画関連APIの戻り値見て、どこまで成功してるのか調べた方がいいかもね。
71 :
58 :2007/04/19(木) 17:04:34
いろいろすみません もうちょっとがんばってみます。
スタティックコントロールが"MYBMP"で参照しているのに、 ビットマップはMYBMPで定義されている件について。
IDB_MYBMP
皆様、質問があります。 コンソール画面で ipconfig > "c:\ipinfo.txt" とすると、リダイレクタより、 ipconfigの標準出力がc:ドライブ下のipinfo.txtに出力される。 これをCreateProcess関数のlpszCommandLineに、 「ipconfig > \"c:\\ipinfo.txt\"」と指定しても、 c:ドライブ下のipinfo.txtに出力されるものなんでしょうか? (自分はうまくいかない) それとも、 > はcmdの機能? パイプで組まなきゃダメなんかなぁ・・・
>>74 シェルの機能なのでcmd.exeごと起動する。cmd /? をチェキ。
76 :
74 :2007/04/19(木) 22:06:48
>>75 納得!!
cmd.exeに委託しているんですかー。
ありがとうございます。
CreateWindowのEDITで、書き込みとか書き換えを不可能にするために EnableWindow(h1, FALSE)をしたところ、背景が灰色になって文字も薄くなりました。 書き換え書き込みは不可能なまま、背景白、文字黒に直したいのですが どうすればいいのでしょうか?
>>77 ES_READONLY
WM_CTLCOLORSTATIC
でどう?
>>78 できました!ありがとうございます!
しかし、目的のEDITのウィンドウの背景を変えるにはどのように指定すればいいのでしょうか?
>>79 親ウィンドウでWM_CTLCOLOREDITを捉える
リストビューの行にチェックボックスはどうやって付けるのでしょうか ↓こんな感じです _______ |__|_____ |□ | |□ | |□ |  ̄ ̄ ̄ ̄ ̄ ̄ ̄
>>72 それでした。
""を追加したら表示されました。
ありがとうございました。
ReadFileで読み取ったファイルを1行づつ二次元の配列に格納して 構文解析したいです ReadFileの第二パラメータのバッファから、二次元の配列に移すAPI はありますか?
CopyMemory
物臭もここまでくると素晴らしいな MSが何の為にそんなAPI用意するんだろうか
88 :
デフォルトの名無しさん :2007/04/20(金) 11:50:11
質問です。 ツールバーを作ろうとしているのですが、色々なサイトを調べても、ツールバー上にはボタンしか置いていないようです。 コンボボックスをツールバー上にのせたいのですが、可能でしょうか? ツールバーと似た、レバーコントロールというものの上におけるのは調べて発見できたのですが…
>レバーコントロール 思わずふきだしてしもた。
エクセルでオープンしているファイルを、 CreateFileでオープンしたいのですが、どうすれば出来るでしょうか。 エクセルでオープンしていなければ、CreateFileでオープンできるのですが、 エクセルでオープンしていると、CreateFileでオープンできないようです。 ただ、他のファイルビュアーでは読めたりするので、どうやればそれができるのかわかりません。
CreateFileのリファレンス読めば明らかだと思うが・・
93 :
85 :2007/04/20(金) 13:06:25
ReadFileの第二パラメータのバッファの中は 111\r\n222\r\n333\r\nEOF と連続した文字列なのはわかったのですが、これをCopyMemoryを使って、 1行づつ二次元の配列に移す場合、バッファを先頭から1文字づつ読んで\r\n 毎に切り分けて格納するしかないのでしょうか・・・ 定番の読み方(例えば仕事(?)でやられる方)が知りたいです ↓こうしたい char hairetsu[5000][1024] (5000はファイルの行数、1024は1行の最大の長さ) hairetsu[0][1024]に111\r\n hairetsu[1][1024]に222\r\n hairetsu[2][1024]に333\r\n hairetsu[3][1024]にEOF
94 :
85 :2007/04/20(金) 13:07:03
てかCの標準関数にそのものズバリなのあるじゃねぇか
バッファはそのまま使いつづけて
各行開始位置のポインタ値を保持する変数配列を用意し
バッファを一旦頭から末尾まで全部捜査し
行開始位置のポインタをとりつつ\r\nを\0\0に書き換えていく
これで文字列系関数にもポインタを渡すだけで行ごとに処理が可能に!
つーか
>>93 みたいな多元配列はメモリの無駄だし
97 :
デフォルトの名無しさん :2007/04/20(金) 14:00:55
Win2000+VC.net2003の環境で QueueUserAPCをコンパイルすると error C3861: 'QueueUserAPC'識別子は、引数依存の照合を使用しても見つかりません。 と出るんですがどうすれば解決できますか? winbase.hをインクルードしてもkarnel32.dllとリンクしても駄目みたいなんですが。。
_WIN32_WINNT を 0x0400 以上の値で define した後にヘッダーをインクルード (コンパイラ設定でマクロ設定する でも可)
子ウィンドウが開かれていて、親ウィンドウの上を移動させる時、 9x系と再描画されて、XPだと再描画されないのですが、 9x系とXPでは、再描画の挙動が違ったりしているのでしょうか。
そりゃあ、OSの設定の問題だろ 移動を終えてドラッグ止めたら再描画されるだろ?
101 :
99 :2007/04/20(金) 15:35:25
>>100 ありがとうございます。
されないです。
最小化して標準に戻すのでもダメです。
WM_PAINTが来てない可能性すらあるので、
そこらへんから実験してみます。
それはあれか、全く同じEXEを9xとXPで動かしてるのか? >WM_PAINTが来てない可能性すらあるので、 ネェヨwwwww
子ウインドウは動かしただけでは再描画されなくても正常だが WS_EX_LAYERED付なら親でも
そういえばレイヤードウィンドウなんてありましたねぇ 全然必要性を感じないから使ったこと無いですが
レイヤードウィンドウは雑誌やスクリーンショットで見る分にはかっこいいが 実際に使ってみると使いにくくてしょうがない
>>95 ありがとうございますstrtok確認しました
>>96 >\r\nを\0\0に書き換えていく
このやり方で行きます目から鱗です
こういうテクニックって本に書いてあるんでしょうか?
ウェブでも本でも見たことない・・
>>105 完全不透明のレイヤードウィンドウもつくれるよ。
見た目は普通のウィンドウと変わらないけど、WM_PAINTは激減する。
外部プロセスのCPU使用率を強制的に制限する方法を探しています。 最初に、CreteProcessのPROCESS_INFORMATIONから得られるhThreadに対して SuspendThread/ResumeThreadを試しましたが、 複数スレッドがある場合に対応できない様です。 次にCreateToolhelp32Snapshotによるプロセス内のThreadの列挙で SuspendThread/ResumeThreadをやろうとしましたが、 Thread32First/Thread32Nextで得られるThreadIDに対し、 OpenThreadでHandleへ変換しようとすると失敗してしまいました。 また、JobObjectの関連付けでJOB_OBJECT_LIMIT_JOB_TIMEや IDLE_PRIORITY_CLASSで時間制限を掛けてみましたが、このオプションは 設定時間にプロセスが終わってしまうだけみたいなので目的と違う様です。 使用率制限を行うツールとして既にBESという物がありますが、 あれはどうやっているのでしょうか?
すいません、BESはソースが公開されていますね。 調べてみます…。
110 :
99 :2007/04/20(金) 17:12:42
>>102 はい。基本は9xで作っているんですけど、
動作確認のためxpで動かそうと思いました。
>>103 再描画されて欲しいのは、下にある親ウィンドウの方です。
ただ、最小化→標準化とすると、子ウィンドウの方も再描画されません。
WS_EX_LAYEREDについても調べてみます。
111 :
108 :2007/04/20(金) 17:27:28
できました。Thread32First/Thread32Nextの方法でよかった様です。
画像を扱うのにBMP用のAPIは見つかったのですが、 PNG用のAPIは、外部ライブラリを探すしかないのでしょうか? OSはXPです。
113 :
デフォルトの名無しさん :2007/04/20(金) 17:40:00
GDI+でも検索汁
つ gdiplus
StretchDIBitsって出力先がメモリDCや拡張メタファイルでもPNGを出力できるんだろうか
116 :
112 :2007/04/20(金) 17:50:23
ありがとうございます。勉強してきます。
WM_CREATEメッセージ中に、子ウインドウのレイアウトに従い 自身のサイズを変更したいのですが、CREATESTRUCTを修正しても MoveWindow/SetWindowPosでも変更できないようです 何かいい方法はないでしょうか?
サイズの変更をポスト
>MoveWindow/SetWindowPosでも変更できないようです 可能性 ・自分の WM_SIZE ハンドラで、引数と無関係の値にサイズ変更している ・自分の親が 親のWM_SIZEのタイミングで 自分をMoveWindowしやがってる
あれ?ウィンドウ生成時にもWM_SIZEが発行されるんじゃなかったっけ?
>WM_CREATEメッセージ中に、 リソースインダイレクトを使っているというオチではなかろうな。
ウィンドウを作らずに通知エリアの追加は出来ないの
通知エリアって?
>>122 できたとして、どうやってメッセージを受け取るつもりだ?
125 :
97 :2007/04/20(金) 19:43:23
>>98 ありがとうございます。
その通りにやったら、できました。
>>126 「通知エリアのメッセージ」と分かっているのにフックしなければならない理由があるの?
北がキチガイなのは世界中公認の周知の事実だが 南は中身は同じなのに私達先進国ですという皮をかぶってるのがウザス
同意するがスレ違いだ
>>106 さぁねぇ
プログラムの本なんて数多あるから、似たようなのが載ってる本ももしかしたらあるかもしれないな
俺はとりあえず見たこと無いが
ランゲージリファレンス系の本しか持ってないしな
ていうか今回のくらいのは、自分で思いつくくらいにはならんといかんのじゃないかと思うよ
>>96 >行開始位置のポインタをとりつつ\r\nを\0\0に書き換えていく
これポインタ取るのはわかるけど、書き換えは出来ないんじゃね?
バッファってchar*だから一旦配列なり、mallocで取った領域なりに
バッファ丸ごとコピーして、そこを書き換えないと
ファイルマpp(ry
>>131 constでもリテラルでも無い、普通にメモリ上に動的確保したバッファ内の値が書き換えできないと申すか?w
>>131 おまえの言ってるバッファはいったい何のバッファだ?
ReadFileに渡すようなバッファがWriteAccess不能なメモリ領域だと言うのか?w
バッファの語源はやっぱ水牛?
シリアル通信について質問させて下さい。 通信がうまくできません。 以下は流れです。 CreateFile( "COM1", GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0 ); GetCommState(); DCBパラメータを書き換え SetCommState(); GetCommTimeouts(); タイムアウトパラメータを変更 SetCommTimeouts(); WriteFile(); // 1byteのコマンド送信準備 FlushFileBuffers(); // 送信 ReadFile(); // 1byte受信(受信できるまで10回繰り返し) 0x0Fを送れば、0xF0が返ってくるはずなのですが 何も返ってこなくて。手順的な見落としなどがあれば ご指摘頂けると幸いです。 秋月のTDS01Vというセンサーキットを自前のプログラムで 読んでみようと始めたのですが、最初から躓きました。 センサーの動作は添付のプログラムで正常動作を確認しています。 全てのAPIからはエラーは返ってきていません。
どんな引数を指定しているかも DCBの設定内容も隠してどこがいけない?と聞かれてもな・・・
>>137 申し訳ない、行数制限に引っかかったので
どこを削ろうかなと。
DCBはGetした後は、キットのドキュメントにある
パラメータをセットしてるつもりです。
(他はGet時のまま)
m_CommDCB.BaudRate = CBR_9600; // 9600bps
m_CommDCB.fBinary = TRUE; // bynary mode:always TRUE
m_CommDCB.fParity = FALSE; // parity no check
m_CommDCB.ByteSize = 8; // byte size
m_CommDCB.Parity = NOPARITY; // no parity
m_CommDCB.StopBits = ONESTOPBIT;// 1 stop bit
タイムアウトはWeb上でみつかったサンプルの値を引っ張って
来ています。
m_CommTimeouts.ReadIntervalTimeout = 100;
m_CommTimeouts.ReadTotalTimeoutMultiplier = 10;
m_CommTimeouts.ReadTotalTimeoutConstant = 500;
m_CommTimeouts.WriteTotalTimeoutMultiplier = 10;
m_CommTimeouts.WriteTotalTimeoutConstant = 500;
bRtn = WriteFile( m_hCommHandle, m_pTxBuff, 1, &dwCount, NULL );
FlushFileBuffers( m_hCommHandle );
dwCount = 0;
for ( int i = 0; i < 10 && dwCount == 0; i++ ) {
bRtn = ReadFile( m_hCommHandle, m_pRxBuff, 1, &dwCount, NULL );
// 戻り値チェックしながらリトライループ
}
ここで、for文が10回回って出てきてしまいます。dwCountは0のまま
bRtnは確認したの?
>>139 レスありがとうです。
上のソースは抽出でして、全てのAPIの戻り値は
チェックしていて、エラーが返ってきていないことは
確認しています。
141 :
デフォルトの名無しさん :2007/04/21(土) 00:51:40
>>140 はCOMポートを増設してクロスケーブルを買ってくるべきだな。
で、ケーブルで首ry
タブコントロールをEnableWindow()で無効にしても、 タブの文字が淡色表示にならないのだがそういう仕様?
そう
GRAYEDにしなさい?
145 :
デフォルトの名無しさん :2007/04/21(土) 19:34:52
>>141 ワロタw
まさに泣いて馬超を斬るを地でいった訳かw
CreateWindowのEDITで、文字を入力してENTERを押したときに動作を設定したいのですが、 どうすればいいのでしょうか?EDITにフォーカスがないときには出来るのですが、 EDITにフォーカスがあるときは改行されてしまいます。
サブクラス化
>>146 エディットコントロールをマルチラインに設定するのをやめる。
>>148 メッセンジャーみたいな感じで、Shift(Ctrlだったかも)+Enterで改行、
通常のEnterで別の動作みたいな感じにしたいのですが、
マルチライン設定だと無理なのでしょうか?
151 :
デフォルトの名無しさん :2007/04/22(日) 00:31:32
XP Homeでファイルのアクセスをプログラム側で検出することは出来ますか? Proならファイルの監査が利用できるですが。
152 :
デフォルトの名無しさん :2007/04/22(日) 02:03:44
>>151 おまえのエクスプローラーはどうなってる?それが答えだ。
フォルダの変更は監視できたと思うけど。
逆にpro側の監査機能が良くわからないがfilemonのようなことしたいのかな?
ReadDirectoryChangesW FILE_NOTIFY_CHANGE_LAST_ACCESS 監視中のディレクトリ、またはサブツリーで前回のファイルアクセス日時が変更されると、 変更通知の待機操作から制御が返ります。
157 :
151 :2007/04/22(日) 11:11:30
>>152-156 レスありがとうです。
ReadDirectoryChangesWなどでは、なんらかの更新が発生しないとダメな気がします。
(今から確認します)
簡単に試してみると、メモ帳でテキストファイルを開いても"アクセス日時"が変わらないような。。。
158 :
151 :2007/04/22(日) 11:14:24
連投申し訳ないです。
>>155 そうですね。filemonの簡易版(最低限アクセスがあったことをトリガーにしたい)のです。
監査かけてイベントビューアからゲット
160 :
デフォルトの名無しさん :2007/04/22(日) 11:20:19
仮想リストビューでカラム幅を調整する方法を教えてください。 リストビューは詳細表示。ダイアログは使わずにCreateWindowで作ってます。 普通のリストビューを使っていたときはヘッダとデータを全部作り終わった後に カラム数分 ListView_SetColumnWidth(ハンドル, インデックス, LVSCW_AUTOSIZE) をしていました。 仮想リストビューに変更してLVN_GETDISPINFOのときに ListView_SetColumnWidth(ハンドル, pDispInfo->item.iSubItem, LVSCW_AUTOSIZE); をやったら固まりました。 環境:VC6, SDK
>>159 最初はそうしようと思ったんだけど、XP homeって監査がないんです。
>>160 LVSCW_AUTOSIZEするためにはその列の一番長い文字列の幅が必要だから
そのときにLVN_GETDISPINFOが呼ばれて無限ループになってるんじゃね?
ファイルアクセスをHOOK
164 :
160 :2007/04/22(日) 12:02:08
LVSCW_AUTOSIZEは使えなさそうですね。 他のタイミングで幅調整するしかないか。
165 :
151 :2007/04/22(日) 12:09:48
explorer.exeだけならCreateProcess系のフックで何とかなると思うけど Windows全体ってことになるとカーネルモードのお仕事になる気がする CreateProcessにしても思いつきで言ってるうえ、あまりにもスマートじゃないが
って ファイルに触る=>CreateProcess=>ファイルパスの取得 が100%成り立つって前提じゃないとだからたぶん無理か スマソ
何らかの変更が加えられたときだけでいいならFindFirstChangeNotificationなどが使えるような気がする
>>168 >>157-158 を見てそういう話が出てくるか普通w
で、その上で、ファイルの監視なんて変更が加えられた時でいいと思うんだがな
開かれたからって、なんかあるか?
>>142 だけど、どなたか淡色表示する方法教えてください。
なるべく簡単な方法で具体的だと助かります。
オーナードロー
172 :
151 :2007/04/22(日) 13:47:32
>>169 特定ファイルへのアクセスのロギングがしたいのです。。。
やっぱり難しそうですね。
174 :
151 :2007/04/22(日) 14:30:52
>>173 >UIがないだけで監査の機能自体は存在する
そうだったんだ! 無知でした。
解決できそうです。ありがとうございます!
ロードランナー
初期のNTからある物をわざわざ外すわけないじゃん
ですよねー^^
178 :
151 :2007/04/22(日) 15:46:42
うーん、LoadLibraryでadvapi32.dllを取り込んで
GetProcAddressしてAuditFreeとかAuditSetSystemPolicyを見つけようとしても
null返してくる。
GetLastErrorは"指定したプロシージャが見つからない(127)"でした。
>>173 のページの説明でもclientは"Requires Windows Vista."ってなっていて
やっぱりXP homeでは駄目なんでしょうか。。。
>>178 すまん、Vistaでしか確認してなかった。XP以前だとこのあたり使うのかな
AddAuditAccessAce (WinNT 3.1)
AddAuditAccessAceEx (Win2k)
AddAuditAccessObjectAce (Win2k)
>>179 ご丁寧にありがとうございます!
GetProcAddressで確認できました。今からヘルプ読みます。
>>180 > GetProcAddressで確認できました。
DependencyWalkerで確認したほうが手っ取り早くね?
183 :
デフォルトの名無しさん :2007/04/22(日) 19:47:55
[Ctrl]+[A]とかをシミュレートしたいのですがどうやるんでしょうか? SendMessage(hWnd, WM_KEYDOWN, VK_CONTROL, 0); SendMessage(hWnd, WM_KEYDOWN, 'V', 0);
>>183 SendInputかkeybd_event
VC買わないと手に入らないと思ってるんじゃね? Platform SDKに付いてる。
知らんヤツの方が多いんじゃね?
ウィンドーを作らないプログラムの場合 タスクバーの右端にアイコンを追加することは出来ますか?
>>183 WM_KEYDOWNはSendMessageで送っては駄目。
PostMessageを使う必要がある。
詳しいことは、PostMessageとSendMessageの違いと
TranslateMessageの働きを勉強してくれ。
>>189 出来る。ただしメッセージは受け取れない。
>>189 確かできると思うけど、非表示のウィンドウでいいから用意しとかないとイベントを受け取れんぞ。
>>189 非表示でウインドウを作ればいいだろ。
知恵が足りない。
かぶりすぎ
98、Me、XPで動いて欲しいソフトを作っているんですけど、 始めにGetVersionExのdwMajorVersionが 10、90、1かであるかチェックすれば大丈夫でしょうか。 dwMajorVersionが同じでもdwPlatformIdが違うとかはないでしょうか。
リロードしたらほんとうにかぶりすぎてて吹いた
>>195 user32.dll,kernel32.dllあたりのリンクの仕方次第では、
そんなんチェックする前にDLLのバージョン不整合で落ちるぞ。
別次元の話だけど、俺ならまずWINVERと_WIN32_WINDOWSを0x0410にする。 それはともかく、2003/Vista及びそれ以降で動かせるようにするつもりはないのか? まあ、そのつもりがなくても互換性モードをオンにすれば動かされるだろうが。
201 :
195 :2007/04/22(日) 23:39:48
ありがとうございます。
>>196 日本語のは見ていたんですけど、さっぱりだったもので。
>>197 90の使い方間違っていますか?下位をチェックするとかですかね。
飛びぬけて数字が大きいので違和感はあったんですけど。
>>199 VC2005で作られたソフトを実行すると、始めに**dllが
見つからないとか出て、実行できないのがありますがそれですかね。
それなら危険がない?と思うので逆にいいんですけど。
>>200 PCを持っているなら、もちろん動かせるようにしたいんですけど、
98、Me、XPしかないので、チェックのしようがないです。
>>201 > 始めに**dllが
そりゃSxSだろ。manifestをちゃんと書いてやれば見つけてくれる。
>>201 いや、動作確認しなくても「保障はしないよ」くらいは言えるでしょ。
GetVersionInfoExの結果が想定していないバージョンだったら一律に実行を拒否する、なんて
コードを書いているのでもない限り。
204 :
195 :2007/04/23(月) 00:08:27
>>202 それとは違いましたか。
そちらについても勉強したいと思います。
>>203 さすがに、「98、Me、XP以外なので実行できません」
と出て終了は良くないですかね・・。
よくMSDNに9x系では○○、NT系では○○と、
分かれても2パターンである事が多いので、
それがMajor4、5であると考えると、
他のOSでもそれなりに動いてくれる気もします。
有名どころで、LoadImageはNT系でファイルから開けないとか、
タイマーの精度で9x系は55ミリ秒とかありますが、
そういうのは性能が落ちる方に合わせては作っています。
205 :
デフォルトの名無しさん :2007/04/23(月) 00:23:14
ステータスバーの右下についてる SIZEGRIPのみ表示させるってできますか?
>>205 SCROLLBAR
SBS_SIZEGRIP
あたりでググってみ
>>204 想定より新しいバージョンのOSは、基本的に受け入れるチェックコードでないと駄目、
って昔のMSDNで見た記憶がある。
特殊なアプリで無ければ、マニュアルに動作保障OS列挙しとけば
チェックコード自体要らないけどな。
208 :
デフォルトの名無しさん :2007/04/23(月) 00:34:45
わかりました! ありがとう
ググってみたけどよく分からん。 NT4.0初期の頃に問題があってSPで修正された、ってことかなあ。 少なくとも2000以降なら問題無いはず。
DialogBoxで呼び出すCALLBACK関数に引数としてポインタを渡したいのですが 出来ますでしょうか?
213 :
211 :2007/04/23(月) 02:02:13
>>212 こんな時間にサンクス
ちょっとやってみる
214 :
195 :2007/04/23(月) 05:00:50
>>207 なるほど、分かりました。
>>209 >>210 何年か前はLR_LOADFROMFILEはNT系では使えない
となってたと思うんですけど、仰るとおり修正されたんだと思います。
>>214 その記述があったのははNT 3.51しか想定してなかったころのすごく古いMSDNライブラリ
英語版はすぐに直ったけど日本語版では長いこと説明が残ったままだった
実際にはちゃんと開ける
Win2000な俺のPCでもLR_LOADFROMFILEできてるからな
UNICODEで書かれている文字列を、strstrで操作した場合、不具合は起きますか? (strcatならlstrcatのようにUNICODEに対応する関数があるのですが、strstrには lstrstrが無いようなのです)
わかりました! ありがとう
>>218 UNICODE対応のstrstrが載っていないようなんですけども、strsafe.hの中の関数を使って
自分で作成するのでしょうか??
API関係ないな
222 :
217 :2007/04/23(月) 10:33:37
自己解決(?) ぐぐったらUNICODE←→ANSI変換APIが出て来た・・・ なんか面倒な事に・・・
win32apiじゃなくていいなら、wcsstr とかなかったっけ?
224 :
デフォルトの名無しさん :2007/04/23(月) 11:35:15
RECT wndrc; wndrc.top = 0; wndrc.bottom = 100; wndrc.left = 0; wndrc.right = 100; int x = wndrc.left; int y = wndrc.top; int w = wndrc.right - wndrc.left; int h = wndrc.bottom - wndrc.top; hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW, x, y, w, h, NULL, NULL, hInstance, NULL); if (!hWnd) return FALSE; RECT rc; if( ::GetWindowRect( hWnd, &rc ) ) { if( rc.top == wndrc.top && rc.left == wndrc.left && rc.bottom == wndrc.bottom && rc.right == wndrc.right ) {} else { ::MessageBox( 0, "ウィンドウサイズが違います", "?", 0 ); } } VC.net2003のwin32のデフォルトで作られるプログラムで CreateWindowの所を上記の様に変更しました。 そしたら自分の想定していた rc.riight == 100 と反して rc.right == 112 になっていました。 何故ウィンドウの幅がcreatewindowで指定した値と12も違うんでしょうか? ちなみにウィンドウプロシージャ等は一切変更していません。
225 :
デフォルトの名無しさん :2007/04/23(月) 13:56:40
>>183 なるほど。
Postの方で正しく送れました。
ありがとうございました。
>>
>>184 SendInputでちょっと下の様に
「A」を入力しるプログラムを書いて実行してみました。
全角入力がONになるみたいなんですが、最後の「変換」の決定(Enterですよね?)の所まで
自動化したい場合はどうすればいいのでしょう?
下のプログラムだと、決定という意味でのEnterは認識されないみたいです…
INPUT inputKey[3];
inputKey[0].type = INPUT_KEYBOARD;
inputKey[0].ki.wVk = 0;
inputKey[0].ki.wScan = 'A';
inputKey[0].ki.dwFlags = KEYEVENTF_UNICODE;
inputKey[0].ki.dwExtraInfo = 0;
inputKey[0].ki.time = 0;
inputKey[1].type = INPUT_KEYBOARD;
inputKey[1].ki.wVk = VK_RETURN;
inputKey[1].ki.wScan = MapVirtualKey(VK_RETURN, 0);
inputKey[1].ki.dwFlags = 0;
inputKey[1].ki.dwExtraInfo = 0;
inputKey[1].ki.time = 0;
inputKey[2] = inputKey[1];
inputKey[2].ki.dwFlags = KEYEVENTF_KEYUP;
SendInput(3, inputKey, sizeof(INPUT));
226 :
デフォルトの名無しさん :2007/04/23(月) 18:01:42
スクロールバーのサイズを、画面のプロパティで設定した値ではなくアプリ側で 任意に設定する方法はありませんか? 後、Vistaのスクロールバーのデフォルト値を教えてください。
227 :
224 :2007/04/23(月) 19:15:41
タイトルバーが100に収まりきらなかったのが原因ですた。スマソ。
228 :
デフォルトの名無しさん :2007/04/24(火) 15:48:40
Vistaのように右端に表示領域を確保して、その分デスクトップの作業領域を小さくしたいんですけど、どのように実装したらイイでしょうか。 (他のソフトのウィンドウ表示を最大化にしても、右端に確保した領域にかぶらないようにしたい) 以上です、よろしくお願いいたします。
AppBarのことか? SHAppBarMessageでググってみ
>>228 OSが分からないと何とも言えないけど、Application Desktop Toolbarsじゃ駄目?
231 :
デフォルトの名無しさん :2007/04/24(火) 18:01:09
複数ウィンドウを作成したい場合は どうすればいいのでしょうか
単数ウィンドウを作るのと同じ手法を複数回繰り返してください。
233 :
デフォルトの名無しさん :2007/04/24(火) 19:36:59
>>232 なるほど
ありがとうございました!
(^O^)
あと複数の親ウィンドウをIDの用に管理する方法はあるでしょうか
もどってくるHWNDで判るだろ?
なんか涙でてきた
ところで、Win32APIってなんですか?
なんかいろんなものでてきた
そういうことして楽しいと思ってるの?
CreateWindow(TEXT("EDIT") , TEXT("文字") , WS_CHILD | WS_VISIBLE | WS_BORDER | ES_LEFT, 248 , 40 , 45 , 22 , hwnd , (HMENU)0 , ((LPCREATESTRUCT)(lp))->hInstance , NULL); このエディットコントロールに表示される“文字”のフォントのサイズを小さくすることは出来るのでしょうか? あと、SendMessage(hEdit, ES_READONLY, 0, 0);みたいな感じで、 目的のエディットコントロールを読み専用に変えたいのですが、↑のだと上手くいきません。 どうすればいいのでしょうか?
フォント設定はWM_SETFONTかEM_SETFONTSIZE使う 読み専用のES_READONLYのES はEDITSTYLEのことであってメッセージではない EM_SETREADONLYをSendMessageに渡す
>>240 WM_SETFONTの方は少してこずりましたが、無事出来ました。
ありがとうございました。
242 :
デフォルトの名無しさん :2007/04/25(水) 08:15:08
ウインドウハンドルをhashtableみたいな構造に突っ込みたいのですが、 一意のキーとすべき値は何を使えばいいでしょうか。 hashtableは文字列をキーとして、値はポインタを渡すようにしています。 put(char* key, void* value)みたいにです。 ウインドウハンドルで一意となる値を文字列としてキーとして使いたいのです。 あとからウインドウハンドルからhashtable経由で値をとりたいからです。 ウインドウハンドルにはunsetという内容が入っているみたいですが、 つかうなと書いてあるWebサイトもあってどうしていいかわかりません。
文字列じゃなくてHWNDをキーに使えばいいだろ。 どうしても文字列にしたければHWNDの値自体を文字列に変換するとか、 なんでその程度の知恵が無いんだ?
244 :
242 :2007/04/25(水) 09:19:29
>>243 回答、ありがとう。
HWNDの値自体とはアドレスのことをいっていますか?unsetの値自体をいっていますか?
HWNDの値と言ったらHWNDの値だろ、アホかw
class Hashtable { put(char* key, void* value); }; HWND hWnd = GetWindow(hogehog); Hashtable h; h.put((char*)hWnd, (void*)GetTitle(hWnd));
いやいやいや
キーに文字列しか使えない環境なら、sprintf とかでHWNDの数値を文字列にするとか
249 :
デフォルトの名無しさん :2007/04/25(水) 11:12:27
GetOpenFileNameでフラグにOFN_ALLOWMULTISELECT|OFN_EXPLORERを指定したとき、 選択したファイルの順序を逆に並べる方法は無いでしょうか? 現状、最後に選択したファイルが先頭に挿入されるようで、 これを最後に付加するようにしたいのです。 (アプリ側で逆にたどることは可能ですが、GetOpenFileName操作時の ファイル名テキストボックスの見た目を前後逆にしたい) 環境はXPSP2です。よろしくお願いします。
>>249 OFN_ENABLEHOOKでどうにかするしかないんじゃないかなぁ
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を文字列にしたらアドレスが文字列としてとれるんだと思っているんですが、
間違えていますか?
壮絶に違う
HWND ポインタの中身(大きさも含む)は謎
つか
>>248 でいいじゃん
書かないとわからん? sprintf(buf, "%p", hwnd); とすれば? ってことだ
デスクトップやコントロールパネルなどの 主要なシェルフォルダを指すGUIDのリストってどこかにないでしょうか?
>>253 に便乗だけど
マイコンピュータとかコントロールパネルとかかもしれないpIDLがあるとき
CLSIDみたいな::{...}に変換する術ってないすか?
SHGDN_FORPARSING
サブクラスを使って、エディットコントロール内でEnterキーを押したら メッセージボックスを出すようにしているのですが、その後、 エディットコントロール内で改行されてしまいます。 Enterを押したときにメッセージボックスだけを出して、 その後改行しないようにするにはどうすればいいのでしょうか?
259 :
242 :2007/04/25(水) 17:17:16
>>252 つきあってくれてありがとう。
sprintf(buf, "%p", hwnd);
ってやるとbufにはhwndのアドレスが入るとおもってるんですが間違いですか?
アドレスって再利用されて一意ではない気がするんです。
>>259 >ってやるとbufにはhwndのアドレスが入るとおもってるんですが間違いですか?
間違いです。何のためのハンドルかと。
エクスプローラもどきを作っています。 現在、アイコンをGetIconOfで取得しているのですが こいつは該当フォルダの中のアイテムのアイコンしか取得できず、 デスクトップ自身のアイコンを取得することができません。 何か良い方法があれば教えてください。
262 :
228 :2007/04/25(水) 17:35:02
>229さん、230さん レスありがとうございました。 頂いた情報で実装出来そうです、ありがとうございます。
そもそもハンドルはポインタじゃないから、中身を気にしてはならんと思うんだが。
264 :
242 :2007/04/25(水) 18:23:07
>>260 >>263 考えてみました。
ハンドル=構造体へのポインタと勘違いしていました。
付き合ってくれた方、ありがとう。というか、すんませんでした。
ハンドルが構造体へのポインタとして実装されていたとしても、わざわざ「ハンドル」 と読んでいるのは何のためなのかと。
>>258 Enterキーを処理した後、EDIT本来のプロシージャに処理回してない?
>>267 エディットコントロールのプロシージャの最後は
return CallWindowProc(DefInProc, hwnd, msg, wp, lp);
にしてます。これをどうすればいいのでしょうか・・・
return 0;とかにしてもエディットコントロール自体が消えてしまいます;;
>>267 Enterキーの時だけ、プロシージャに処理を渡さないようにすればいい
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); }
WM_CHAR
274 :
258 :2007/04/25(水) 19:29:27
WM_CHARにしてみたら文字の入力すら出来なくなったのですが・・・;; きっと基本的なことなのでしょうけど、何時間も止まってると泣きたくなってくる・・・
そりゃそうだよなぁ。
>>258 if文をよ〜く見直してみろEnterキー以外もトラップしてるぞ
277 :
258 :2007/04/25(水) 19:45:58
>>276 Shiftの事でしょうか?Shift全部はずして、単純にif(wp==VK_RETRUN){}にしても
やはり同じ結果になりました。これは一体何がどうあghwrへあぃtjr
>>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);
}
できました みなさま本当にありがとうございました
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); }
>>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にしてたせいで入力されないようになってたみたいです。。。 ありがとうございました
>>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") だと失敗します。 ドライブの中身をまるまるコピーすることはできないのでしょうか? 初歩的な質問かもしれませんが、よろしくお願い致します。
pFromはあくまでもファイル名を指定するためのバッファらしいので "H:\\*"みたいにワイルドカードを使うってのはダメ?
288 :
デフォルトの名無しさん :2007/04/25(水) 21:50:56
>>287 教えていただいた方法で解決できました!
結構長い間ひっかかっていたので、助かりました。
ありがとうございました。
GUIアプリからコンソール用のアプリを影で動かし(て、その結果をエディタに送り)たいんですけど そういうAPIってありますか?
はぁ?
無い はい次
あります
ありますが、 はい次
APIに関係することか、わかりませんがお願いします。 自己解凍書式によくあるような > copy /b hoge.exe + datafile でつくった hoge.exe から datafile の中身を取る プログラムを作りたいのですがやり方を教えて頂けないでしょうか?
*** main(char**arg,int argl) ...................................................
>>294 「リソース」をキーワードに基本から勉強しなおしなさい
copyで連結したものをリソースとして扱えるか? 俺にはイメージヘッダからイメージサイズを見て、 それを元にdataの先頭領域を求める方法になる気がする。 違ったらすまん
copy /b hoge.exe + datafile + datafilesize
ぐぐってみたらこういう方法だそうです プログラムに4バイトのリソースを埋め込む。 そのリソースを読み込んでその値だけ、読み飛ばして自分自身を解凍するプログラムを作る。 何らかの手段で4バイトのリソースに自己解凍プログラムのサイズを書き込む。 自己解凍プログラムの後ろに実際のデータを書き込む。
かなりコンパイラ依存な質問ですが・・・
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見ても解決方法わからないし・・・
>>289 名前なしパイプを使ってリダイレクト。
CreatePipe, DuplicateHandle,
CreateProcess(STARTF_USESTDHANDLESがヒント),
PeekNamedPipe, ReadFileなどの関数を使う。
待機関数を使ったプロセスの終了判定と、
PeekNamedPipeとReadFileの順序を巧く管理しないと止まるので注意。
じゃぁ、約束のおっぱいをうpしてね
(・) (・)
D / ∩___∩ \_WW/ ・ ≪ | ノ ヽ ≫ D ≪ V ≪ / ● ● | ≫ ・ ≪ ・ ≪ | ///( _●_)//ミ ≫V ≪ D ≪ 彡、 |∪| 、`\ ≫ ・ ≪ ! ≪ / \ ヽノ /_> / ≫ D ≪ ≪ \| ・ ・ / / ≫ ! ≪ MMM\ | / ̄ /MMM\ | /\ \ | / ) ) ∪ ( \ \_)
>>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;
}
ところでDVDってドメスティックバイオレンスオブダイナミカルなの?
>>300 どのディレクトリに対して実行しても結果は同じですか?
>>300 c:\directory\*
c:\\directory\\*
じゃねーの?
310 :
デフォルトの名無しさん :2007/04/25(水) 23:41:24
見た感じFindNextFileが必ずゼロを返してるような動き。 一個だけ正しく見つけてあとはサヨウナラだな。
FindFirstFile に渡される引数の内容(argv[1]) が違うから 表示させてみれば疑問は解決するはず
そこで、ダブルクォーテーションですよ
ぼ・・・僕ハッカー
WTLでCToolBarCtrlを使ってツールバーを作っています。 manifestを指定してXPスタイルにしているのですが、 そうするとアイコンサイズと比べ、ボタンサイズが大きくなりすぎてしまいます。 どうしても小さくしたいのですが、SetButtonSizeを指定しても無視されてしまい 自動でサイズが決定されてしまいます。 ボタンのサイズを小さくしたいのですが、どうすればできますか。
ビットマップを印刷する処理でカラープリンタに出力するとおk、なんですが、 白黒プリンタに印刷すると真っ黒画面(プリンタドライバのメモリ不足でよくおきるヤシ)となります。 Win32APIで、印刷時にビットマップを描くとき、白黒プリンタを意識する指定ってありましたっけ?
317 :
デフォルトの名無しさん :2007/04/26(木) 10:09:59
ShellExecuteで起動したソフトが起動しきったかどうかを確認する方法を教えてください
起動しきった、の定義は? メッセージループが回りだしたでいいのかな
CreateProcessのほうがいいかもね
320 :
デフォルトの名無しさん :2007/04/26(木) 10:34:52
>>318 起動してから表示されるまでに時間がかかるソフトがあるので
画面が表示されたらと思っていました。
>>319 ShellExecuteよりShellExecuteExのインスタンスハンドルで何とかなりそうでしょうか?
316もヨロ
>>320 ShellExecuteはシェルに命令投げるだけなので実際の起動処理は全部シェルがやる。
だからShellExecuteで起動したプロセスの処理を監視するならフックとかの回り道が必要になるし、
CreateProcessに比べて面倒極まりないから
>>319 の言うとおり
起動したプロセスの監視をしたいならCreateProcessがよろし。
>>316 正解なのかどうなのかわからんが…
printerなDCに直接 StretchBlt したときに真っ黒出力されたことがあった。
printer と同じ解像度のメモリDCに一旦StretchBlt して、
そのメモリDCをprinterなDCに BitBlt で回避できた
>>317 ShellExecuteExでfMaskにSEE_MASK_NOCLOSEPROCESSを指定すると
起動したプロセスのハンドルがhProcessに返されるので
WaitForInputIdleを呼べばいいかと。
>>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が動作しないとか???
白がちゃんとした白じゃないから黒くなるのでは StrechBltMode変えたら
>>328 GetDeviceCapsでRASTERCAPS調べて
RC_STRETCHBLTビットが立ってれば、
StreathBltを使って良いとか、そういう話し
あと、StretchDrawDIBってMSDNにはないけど・・・?
ググっても、自作っぽい関数にしか引っかからないぞw
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 ありがとうございます。
それでちゃんとできました。
>>333 WaitForInputIdleはコンソール不可なので注意ね。
335 :
316 :2007/04/26(木) 12:21:16
つまり、 >OldMode := SetStretchBltMode(Canvas.Handle, COLORONCOLOR); を、 COLONCOLORから変えればよいんだ。 BLACKONWHITEとWHITEONBLACKって何で2つもあるよ。。。
>>335 >BLACKONWHITEとWHITEONBLACKって何で2つもあるよ。。。
ANDとORの違い。
>ANDとORの違い。 普通の印刷ではどちらを使うんですか?
>>337 普通の印刷はどうかしりませんが、
BLACKONWHITEは 0 & 1 = 0で黒が残る
WHITEONBLACKは 0 | 1 = 1で白が残る
ただそれだけ。
まあ両方やってみればわかる モノクロビットマップにStrechBltして画面表示してみるのもいいかもな
340 :
デフォルトの名無しさん :2007/04/26(木) 13:21:11
>>334 了解しました!
ありがとうございます!!
341 :
デフォルトの名無しさん :2007/04/26(木) 15:39:58
あるウィンドウを親として、新たに作った子ウィンドウを貼り付けたい(親側をドラッグすると、子ウィンドウもそれに追随するような)のですが、どのように実装したらよいかアドバイスいただけませんでしょうか。 よろしくお願いいたします。
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のスプールにまだ残っているかどうか、判断する方法はありますか?
具体的にそうなるコードを出してみては そもそも真っ黒になるのはプログラムが悪いんだから
347 :
316 :2007/04/26(木) 17:30:29
自己解決しました、お騒がせしてすみません。
348 :
316 :2007/04/26(木) 18:30:21
347は偽者です。 コードは332です。
StartPageしたあとに毎回SetStretchBltModeしてない とかいう落ちか?
いままでの流れ。
>>あーや
・質問
ビットマップを印刷する処理で
カラープリンタ→出力おk
白黒プリンタ→真っ黒画面
なんで?
>>324 → あーや
プリンタのDCに直接StretchBltした時、真っ黒出力経験あり。
キャッシュDCを作成してStretchBlt→BitBltの提案。
>>326 → あーや
GetDeviceCapsでプリンタ能力も調べろと提案。
>>あーや
>>324 の方法でカラーはおk。白黒プリンターはやっぱりダメ。
>>326 のいうGetDeviceCapsに初耳。
>>329 → あーや
白≒黒より、StrechBltModeの設定を推測。
>>330 → あーや
GetDeviceCapsのRC_STRETCHBLTフラグの意味を教える。
(つづき)
>>あーや → 329
昼飯はトンカツ定食にしようか悩みつつ返信。
>>あーや → 330
GetDeviceCapsを理解。
お昼だけにソースをさらしてみる。
>>あーや
SetStretchBltModeのBLACKONWHITEとWHITEONBLACK気付く。
なお、ここで返信した336,338,339は、実は奇遇にも同じ町内。
>>あーや
とりあえず、カラープリンタ、白黒プリンタ出力おkっぽいが、
連続印刷した場合、白黒プリンタがやっぱりダメ。
なぜか、StrechBltModeは関係ないと断定。
そして、あーやの興味はスプールへ・・・
>>あーや → 347
少しカチンと来る。
>>349-350 解答発表?
ダイアログボックスを作って、初期のフォーカスをダイアログボックス内のエディットコントロールに SetForcusで配置したいのですが、ダイアログボックス内のエディットコントロールのハンドルが 分からないので出来ません。というよりも、ダイアログボックス内のウィンドウにはどのように ハンドルをつければいいのでしょうか?
GetDlgItem
ダイアログベースでBS_DEFPUSHBUTTONを指定すると 「Enter」を押した時、ボタンを押下できるけど普通にリソースを 使わず(CreateWindow等)で作成したボタンに対して「Enter」は反応を 示さないんだけど。これはどうやって解決すればいいんでしょうか? 因みに「Enter」に反応するのはIDOKでそれ使ってもいいんですが、 できれば自分が指定したコントロールIDに変更できればいいなと思って 探してDM_SETDEFIDなるものを発見してSendMessage使って試したんだけど やっぱりうまくいかなかった。これはダイアログにしか通用しないのかな。 因みにSendMessageはこんな感じ(WM_CREATE内で使ってる) SendMessage(hWnd, DM_SETDEFID, (WPARAM)ID_CONTROL, 0L);
>>354 ありがとうございました。無事フォーカス設定することができました。
しかし、エディットコントロールにフォーカスを持っていったら何故か
ボタンをクリックしても動作しないようになりました(Enterキーでは動作する)。
フォーカス外すと普通にボタンの機能は復活します。これは何が原因なのでしょうか?
357 :
デフォルトの名無しさん :2007/04/27(金) 08:01:56
付箋紙ソフトのように、たくさんのウィンドウを表示してもタスクバーに何も表示されないようにするには どうしたらいいのでしょうか?
>>356 Enterキー以外の処理(else側)はスルーしてるんじゃないの?
>>357 いろいろ手法はあるけど?
統括管理ソフトを、時計横のタスクバーに駐在させるとか・・・
想定するターゲットを詳しく
>>357 っ不可視の親Window
っWS_POPUP
363 :
355 :2007/04/27(金) 12:23:56
>>362 ダイアログでの作成じゃない場合(メインウィンドウ)の
時どうやってダイアログと同じように実現すればいいのかを知りたい。
ウィンドウプロシージャで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
仕様書嫁
そもそも正しく動く、動かないとはどういうことか
370 :
316 :2007/04/27(金) 17:13:14
PCのメモリを1ギガにしたら解決しました。 フォトプリンタってのは、普通のプリンタよりメモリを食うものなんでしょうか。 それからStrechBltModeは無意味というか無関係ですね。 プリンタドライバも流石にStrechBltModeが間違っててもエラーを起こさないようにしてんじゃないですか? >>>あーや → 347 > 少しカチンと来る。 ↑ だから347はニセモノです。
ニセモノが出るって事は、キミのやりとりに問題があるってことだよ
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ファイルの位置変更したら解決しました. アホな質問してすみませんでした
>>363 IsDialogMessageは、ダイアログでない普通のウィンドウも対象にできる。
>>370 >PCのメモリを1ギガにしたら解決しました。
その場しのぎとしてはセーフだが、
調査したほうが良いよ。
ドライバのver upで能力差とか、
ソースのメモリDC解放してないとか、
どっかで使いまわしているとか、
BitBltを使った初期化(WHITENESS、BLACKNESS)とか
ビットマップをダンプしてみるとか・・・
376 :
371 :2007/04/27(金) 21:54:30
WH_KEYBOARD_LLはコマンドプロンプトに通用するですか?
>>377 cmd.exeでDOS窓を開いたときの動作の話なら、通用した(今試した)
とん
こつ
フォルダのデフォルトのアイコンって取得できますか?
はい
>>381 みたいな聞き方をするからBOOLで返されちゃうんだよ
>>381 に対する一番正確な答えになっているしな。
自己解決したような気がします SHGetFileInfo と SHGFI_SYSICONINDEXあたりすか
>>372 CreateWindowはCreateWindowExのマクロに過ぎないので
CreateWindowExAにする必要がある
>>381 に便乗質問だけど
SHGetFileInfo に空文字渡すとフォルダのアイコンが返ってくるけど、
これでいいんですか?
おまえらほんと捻くれてるよな
必要な戻り値の型推論ができないだけ
GetMessageの戻り値みたいに融通効かせてください><
キャストしろ
僕を神にしてください
キャストしろ
delete[]すればいんじゃね?
洞窟の出口で秘宝を奪うべく待ってればいいと思うよ
APIもせめて同じような定数は列挙型に纏めるとかしたらすっきりするんじゃないの?
SDKとAPIを混同するな
397の文脈ではAPIでもいいと俺は思う。 関数なんかだけではなく、それを呼び出すために必要な定数や型もひっくるめてAPIと言うのだと思う。
勝手な定義を脳内で作って知ったかするのはやめておけ。
ApplicationPrigramInterfaceと SoftwareDevelopmentKit の違いがわかりません先生
ヘッダファイル自体やライブラリや関連ツールなどがSDK ヘッダファイルやタイプライブラリなどで定義されている内容がAPI だと思っていたが実際のところ正しい定義なんて考えたこともなかったな
そもそもどこまでがAPIなんて誰もそんなことを定義していない。 C/C++以外からAPIを利用する場合は列挙型も何も存在しないし、 変なところで勝手に決めてしまうと他の言語から使うときに、 API以外の何か謎な物を使っていることになってしまう。
他の言語であらかじめされている定義が無いということね。
あれだ、web系のアホが紛れ込んでるのかもしれん。 「APIと言えばwebサービスのインタフェースを指すようになった」 らしいぞ。
整数も渡せるだろ
JAVAのinterfaceには定数(もどき)を定義できるし、定数を含めて問題あるまい。 というか既に定数無いか?
何か美味そう
画面に表示しないプログラムを作りたいのですが 時計の横にアイコンを登録することは出来ますか?
タスクバー? 可能です。
GT-Rは5台持ってますよ R32がVspecIIのガンメタとNISMOの白 R33がVspecのシルバー R34がMspecのホワイトとVspecII Nurのベイサイドブルー
ま、俺のGTOには敵わないだろうけどな。
NAだけどな。
>>411 だからなんでみんな戻り値がboolなんだよw
出来るって分かれば自分で調べるだろ
S_OKだけなら猿でも返せる
>>410 メインウィンドウを非表示で作ればいい。
あとはタスクトレイ アイコンとかでググれ。
なんかこの質問・回答にデジャヴを感じる
間欠泉のようなもんだから
Shell_NotifyIconだったっけか
423 :
422 :2007/04/29(日) 16:02:09
かすかな記憶を頼りに書いてみて調べてみたらビンゴだった 俺の記憶力もまだ捨てたもんじゃないな
ワレのドタマカチ割って脳みそストローでチューチュー吸うたろか!
自分の頭を割るというのもなかなか豪儀だな
なめとんかいわれ
貝割れ大根を嘗めているのか。あれは舌にピリッと来るよな。 しかし倒置法とはなかなか巧みじゃないか。
じょんだらりん
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);
MultiByteToWideChar
431 :
429 :2007/04/29(日) 20:21:39
テキストファイルはSJISで中身は abc と入っているだけです。
"abc"のバイナリ表現はShift_JISやUS-ASCIIと、UTF-16とでは異なる。
433 :
429 :2007/04/29(日) 20:42:04
読み込むファイルはSJIS固定 MultiByteToWideChar 変換元がPCSTR 変換後がPWSTR これはひょっとしてUNICODE版でビルドしてる場合だけ MultiByteToWideCharを使って変換をかけるって事ですか?
いいえ
ファイルをダウンロードしたときなど、完了すると「チロン!」という音が鳴りますが、 この音を鳴らすapiがあれば教えてください。
MCI
437 :
435 :2007/04/29(日) 20:48:57
440 :
439 :2007/04/29(日) 21:15:28
ありがとうございました。
441 :
429 :2007/04/29(日) 21:16:01
ちがう。429でした。
ウモンドウ作らずにWM_〜受取れますか?
はい。ウィンドウをお作りいただけば可能です。
ウィンドウ要らないなら非表示にしとけばいい。
WM_〜 = window message
一瞬普通に読んでしまったが、ウモンドウってwww
umondou? umondow?
タスクトレイのアイコンの画像を取得する方法ってありませんか? もしくは特定のアプリのトレイにあるアイコン描画をフックしたいのですが。
SetWindowsHookExのWH_KEYBOARD_LLはAltとかミ田キーも弄れますか?
>>450 可能。つか、自分でやってみれ。
想像以上に簡単だから
ミ田キーワロタ
Runasで起動したIEのウェブページのハンドルの入手の仕方おしえてください。
454 :
デフォルトの名無しさん :2007/04/30(月) 10:17:54
少しでも画面を有効に使うためにメニューバーの高さを極限まで細く したいのですが、win32apiで可能でしょうか? 高さの取得はGetSystemMetricsで出来るのはわかったのですが、 設定がどうやっったらよいものか分かりません。どなたかやり方を教えて頂けませんでしょうか。
0じゃいかんの?
>>452 「ウェブページのハンドル」とは何ぞや?
>>454 レジストリに書いてWM_SETTINGCHANGEをブロードキャスト?
457 :
452 :2007/04/30(月) 10:34:23
>>456 IEで表示したサイトのページをFindWindowAでゲットした値のことです。
>>454 SystemParametersInfo で SPI_SETNONCLIENTMETRICS
他のアプリケーションにも影響を与える操作なんだが、自アプリケーションで制御するような代物なんかな?
# デスクトップ - プロパティ で設定するのを自動化したいのか?
# それはそれで、迷惑な造りかもしれんが…
460 :
デフォルトの名無しさん :2007/04/30(月) 12:06:48
bccでDLLを作成してそのDLLを LoadLibrary(TEXT("HOOKTEST.dll"));で読み出したら DLLエントリーポイントが実行されたみたいなのだが 暗黙的に読み出したらDLLエントリーポイントが実行されないんだが これは普通なのか?それとも何か設定が間違っているのか?
あと 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になってるみたいなのだが何故?
その、「実行されない」ってのはどこから解ったんだ?
463 :
デフォルトの名無しさん :2007/04/30(月) 12:12:46
どうしてボーランドの言語仕様ってあそこまで見苦しいの? クラスや関数名なんて汚らしいしIDEも不細工極まりない C++にしろパスカルにしろ目障りで読む気すらしないね。
bccの#pragmaにdata_segなんてないぞ。
>>466 WINDOWSプログラミングスパイスって本にのってたからそのまま使ってみたんだが、だめだったか・・・
_tDllMainな
>>443 PeekMessageをスレッドの最初に呼んでおけば
そのスレッドにメッセージキューが作られるから
あとはスレッドメッセージで処理すればいい。
送信はPostThreadMessageで
受信はGetMessageのMSG構造体のHWNDが0のやつが
スレッド宛のメッセージ。
BOOL WINAPI _tDllMain(HINSTANCE hInstance,DWORD dwNotification,LPVOID lpReserved){ hInstDLL=hInstance; return TRUE; } 修正
ドラえもーん、これガソリンはレギュラーでも走るの? いやガソリンでは無理だよ。もっとパワーのあるやつじゃないと。 プルトニウムだよのび太君。
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; } にすると問題ないみたいなんだけど・・・ グローバル変数にコピーできない なぜだ?
WinAPIの質問じゃないような気がしてきた
とりあえずフック抜いてインスタンスハンドルだけコピーするDLLでも作ってろ
窓は作らずに(非表示ではなく) DLLの関数からShell_NotifyIconで登録してGetMessageでメッセージを受取れますか?
不可能
Shell_NotifyIcon から タスクトレイアクションを invoke できるようにするために窓が必要
なんか最近この質問多いな
間欠泉のようなもんだから(2回目)
タスクトレイ と フック は源泉なのでしょう
フックは多少ややこしいから分からんでもないけど… トレイアイコンの方は潔癖症に近くねぇ? いいじゃねーかウィンドウ一つくらい
メッセージ通知用ウィンドウなんてたくさん使われているよ。DDEとかシステム周りでもね。
そもそも「窓作らずメッセージ受け取れますか?」ってやってみればすぐわかるじゃねーか
EnumWindowとかで窓一覧を取得するとあきれるほど非表示ウィンドウだらけだからな。 いまさら一つ増えたところで・・
Winsock の Async の面倒見るのも見えない Window でやりくりしてるな
まあ落ち着けよ
WindowがなくてもHWNDもらう方法はないの?
>>475 やってみた
MainDllないではグローバルインスタンスハンドルにコピーできてるみたいだけど
makehookを呼び出すとNULLになってるみたい
逆に考えるんだ makehook内で参照してるのがグローバル変数ではないのではないかと考えるんだ
>>476 HWND_DESKTOP名義で登録してHOOK
493 :
477 :2007/04/30(月) 15:13:39
>>489 メッセージ送信先のウィンドウをデスクトップにでもしておいて
グローバルフックで定義したメッセージを引っ掛ければできなくはない
ウィンドウ作らない分フックにリソース消費するけどねw
久々に綺麗なケコ-ン
ウィンドウズ自体の欠陥ですか
いいえ
/ / . : ヘ/! \ // / . /: : ∠、ム| . ヽ / ィ . / :/|: |: :/ ノ: 人: ハ i/ . : . | .|{‐ |=ヘ{‐'! ` =ナ左、 V:|: .ハ / | :|: : |: :八 | o ヽ| ´ o ∨/: i | |:i: : . 、 |{ ヘ! .彡 , ミ、 /メ| . ハ| ヽ|ヽ: : .`| .三´ _____ ̄彡'/ . ://リ > .\ |ニ. 二、,二.ヽ| /: // / : : ハ`` V: : : : :ン∠イ : : ヽ ァハハ八八ノヽノヽノヽノ \ノ \ / \ / \ / . : :/ : \ \――/ /: :|: : : . :ヽ / . : : : :ィ: > ` ̄ イ: : 、 、、: : : : .ハ / . :/i/ "´ |  ̄ | `^``゙^\:、 : . ハ i/ . :/ へ ノ __ Vニ、 ヽi、:、: i ハ i:/ ∠.... iく__ 彡⌒ソ > ‐ 、 ヽi、! V / ̄、 ̄\\ ∠ニ -‐_厂 ヽ. ` / |: レ  ̄ ̄` 厂| ̄,r ̄- 、: |. i / .|/ 厂 | '´ V: 丶 「 ̄ ̄`ヽ/. : : : . . / ハ . : : : : : . V/ ̄`ヽ ,ノ二二.ヽ {. : : : : : :∧ヽ/∧: : : : : : : : :} . ニニヽ < ̄ィ―- 、ヽV: : : : : :\//: : : : : : : : ノ//. --t、ヽ `7 ヽ.ハ: : : : : : : :`´|: : : : : : : : : {彡''´ |/
>>473 そもそもDllMainでuser32.dllの関数を呼び出してはいけない(もちろんMessageBoxも)
>>492-493 そっちのほうがよっぽど気持ち悪いんだが潔癖症の方々はウィンドウを作らないこと自体
が目的化してるんですかね。健康のためなら死んでもいいみたいな。
>>489 とか見てると釣りのようにも思えるけど
やってみることに意味があるんだろう 無いけど
ShellExecuteでファイルを開くと新しいウィンドウで開かれますが、 既存のウィンドウ内に表示させることは可能でしょうか? 具体的にはswfなどのファイルを、BMPをペタペタ貼るような感じで使いたいのですが・・・
ActiveXでFlashコントロールをホストすればー
503 :
デフォルトの名無しさん :2007/04/30(月) 19:22:13
っていうかWindow作るのダサいし
504 :
デフォルトの名無しさん :2007/04/30(月) 20:09:44
MSXML6.0でXMLをロードするときに関数にIXMLDOMDocumentをポインタで引き渡すと値が返ってきません。 関数の内部での値はとれているのですが。 こういう仕様なのでしょうか? OKの場合 CComPtr<IXMLDOMDocument> xmldom; if(CoCreateInstance(CLSID_DOMDocument, NULL, CLSCTX_INPROC_SERVER, IID_IXMLDOMDocument, (void**)&xmldom) != S_OK){ return; } xmldom->put_async(VARIANT_FALSE); xmldom->load(_variant_t(FileName), &result); if(result != VARIANT_TRUE){ return; }
505 :
デフォルトの名無しさん :2007/04/30(月) 20:11:04
NGの場合 if(LoadXML(FileName,xmldom) == false){ return; } bool LoadXML(const char* FileName,IXMLDOMDocument *xmldom) { VARIANT_BOOL result; if(CoCreateInstance(CLSID_DOMDocument, NULL, CLSCTX_INPROC_SERVER, IID_IXMLDOMDocument, (void**)&xmldom) != S_OK){ return false; } xmldom->put_async(VARIANT_FALSE); xmldom->load(_variant_t(FileName), &result); if(result != VARIANT_TRUE){ return false; } return true; }
引数でポインタを返したければ、その引数はポインタのポインタである必要がある、って いうCの基本のお話なのかな?
×bool LoadXML(const char* FileName,IXMLDOMDocument *xmldom) ○bool LoadXML(const char* FileName,IXMLDOMDocument **xmldom)
まあ、ポインタ参照にしてもいいけどネ
509 :
デフォルトの名無しさん :2007/04/30(月) 22:21:03
#define STRICT #include <windows.h> #include <windowsx.h> #include "ResHOOKTEST.h" #include "HOOKTEST.H" static HWND hWndmain; static HINSTANCE hInst; LRESULT CALLBACK mainDlgProc(HWND hDlg,UINT message,WPARAM wparam,LPARAM lparam){ switch(message){ case WM_COMMAND: if(wparam==HOOKON){ makehook(); return TRUE; } if(wparam==HOOKOFF){ unhook(); EndDialog(hDlg,TRUE); } default: return FALSE; } return TRUE; } int PASCAL WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){ UNREFERENCED_PARAMETER(hPrevInstance); UNREFERENCED_PARAMETER(lpCmdLine); UNREFERENCED_PARAMETER(nCmdShow); hInst=hInstance; LoadLibrary(TEXT("HOOKTEST.dll")); DialogBox(hInstance,"MYDLG",NULL,(DLGPROC)mainDlgProc); return 0; }
511 :
デフォルトの名無しさん :2007/04/30(月) 22:48:04
あああああああもうだれかたすけてえええええええええええええ
513 :
504 :2007/04/30(月) 23:08:00
>>506 ポインタで引き渡しているのに、ポインタのポインタで渡さなければならないのですか?
すみません。この辺理解がよくできてないです。
>>507 変更してみたのですが、
xmldom->put_async(VARIANT_FALSE);
の箇所のメンバ指定の方法がよくわかりません。
こういう感じで変更してみたのですが、コンパイルエラーが無くなりませんでした。
*(xmldom)->put_async(VARIANT_FALSE);
APIよりC言語の基本のほうを勉強したほうがよさそうですね・・・
>>513 (*xmldom)->put_async(VARIANT_FALSE);
'->'の方が優先順位が高い。
もちろん、CoCreateInstanceの方も (void**)xmldom に直してあるよな。
後CLSID_DOMDocumentだと、MSXML3以前のインスタンスが返されていると思う。
MSXML4以降の機能を使いたければ、個別のCLSIDを指定する必要がある。
MSXML6なら、CLSID_DOMDocument60って感じで。詳細は英語版MSDN。
515 :
491 :2007/05/01(火) 02:07:50
>>510-511 今思ったんだけどさー
別にhInstanceをグローバル変数にコピーしなくても
GetModuleHandle(”dll名”)に置き換えれば良いんじゃないの
さすがジョースター卿w 発想の転換だなw
>>473 DLL側本体は int makehook(HINSTANCE)
>>510 利用側は makehook();
根本から間違ってねーか?
UrlDownloadToCacheFileでWeb上の頻繁に更新されるファイルを取得した場合、 キャッシュ済みのデータが戻ってきたりで必ずしも最新のファイルでない場合がよくあるのですが、 強制的に更新させる方法はないのでしょうか? 自分でソケット使って書くのマンドクセ('A`)
ファイルを一度削除してから再度実行すれば?
#include <windows.h> #define EXPORT extern "C" __declspec(dllexport) HINSTANCE hinst; BOOL WINAPI DllMain(HINSTANCE hinstDLL,DWORD dwDllMainEvent,LPVOID lpvReserved){ if(dwDllMainEvent==DLL_PROCESS_ATTACH) hinst = hinstDLL; return TRUE; } EXPORT int func(void){ char buf[15]; wsprintf(buf,"%d",hinst); MessageBox(NULL,NULL,buf,MB_OK); } dllにして外部から呼び出すとインスタンスハンドルはコピーされている 460=461がコード内で妙なことしてるとしか思えない
VC買え
Windowsの窓ありきな設計思想に問題があるんじゃないかな。
static HMODULE g_hModule = NULL; BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) { switch (ul_reason_for_call) { case DLL_PROCESS_ATTACH: g_hModule = hModule; break; case DLL_THREAD_ATTACH: case DLL_THREAD_DETACH: case DLL_PROCESS_DETACH: break; } return TRUE; }
>>523 非表示の窓を作れないorやたら面倒なら確かに問題があるかもな
>>510 どこでGetProcAddressしてるの?
GUIを必要としないのに非表示の窓を作るのは倫理的に間違っている。
528 :
デフォルトの名無しさん :2007/05/01(火) 11:22:50
知らないならレスするな
GUIが必要だからタスクトレイに表示するのでは( ̄ー ̄)
>>527 ネットワークサービスだけ立ち上がればいいのに、GUIでしか起動できないWindowsは間違っている。
だからCUIのみでも使えるLinuxでも使えば?
クッキー焼いてみたの、ちょっと味見してくれない? 勘違いしないでね、別にあんたの為に作ったんじゃないんだからね。
Longhorn ServerはついにGUIレスモードが
そもそもサービスは・・・
>>532 当然タスクトレイも使えないわけだが
ウィンドウはいらないけどタスクトレイは必要なんて頭のおかしい要求する奴以外は
問題ないわな
タスクトレイのアイコンでクリック連打するとクリックした回数に応じて 他アプリを立ち上げるランチャーなんてどうだろう
つクイック起動
ppmフォーマットの画像を読み込ませてウィンドウに表示したいのですが どうしたらいいですか? LoadImageだとppmは読めないので困ってます
ppmをDIBに変換すればいいんじゃね
ppmはグレイスケールの画像で、fscanfで独自に読み込んで るんですけど、そのDIBには頑張れば変換出来そうですか?
できるけど、そもそもLoadImage使おうとしたのは何なんだ
CreateDIBSection → BitBlt のコース WM_PAINT で SetPixel ぐるぐる回すコース
LoadImageで読み込めたら表示も楽に出来ると 思ってました・・・ CreateDIBSectionってやつで頑張ってみようと思います
Susie Plugin とか使うとか // 懐かしい響きだな
545 :
デフォルトの名無しさん :2007/05/01(火) 18:30:14
SQLConfigDataSourceでMySQLをODBCに登録する方法を教えてください
OOの話でよく、 「OOはデータと操作とカプセル化しちゃって、その部品を使うこと」 みたいなこと書いてあるの見ることあるけど、 これって構造化の話だよな?
>>546 構造化と言うと、普通はDijkstraの「gotoやめれ」でしょ。OOよりだいぶ前。
OO はカプセル化が基本ではあるが、 ポリモーフィズムが一番の肝だと思うんだぜ。
>>527 不合理ではあるが、HWND_MESSAGE なんてのもあるな。
ネ申
>547 構造化は、TopDownとBottomUpと複合設計って事だよ。
>>545 SQLConfigDataSourceでODBCにMySQLを登録する方法を教えてください
の間違いじゃね?
これ、C:\Program Files\Common Files\ODBC\Data Sourcesフォルダ下に
ファイル置くだけじゃなかった?
>>519 亀レス気味だが、
IBindStatusCallback::GetBindInfoが呼び出された時に、
BINDF_GETNEWESTVERSIONフラグ返せばいいんじゃね?
使ったことないから保証はしないが。
555 :
553 :2007/05/01(火) 21:46:58
>>521 #include <windows.h>
#include "ResHOOKTEST.h"
#include "HOOKTEST.h"
LRESULT CALLBACK mainDlgProc(HWND hDlg,UINT message,WPARAM wparam,LPARAM lparam){
switch(message){
case WM_COMMAND:
if(wparam==HOOKON){
func();
return TRUE;
}
if(wparam==HOOKOFF){
EndDialog(hDlg,TRUE);
}
default: return FALSE;
}
return TRUE;
}
int PASCAL WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){
UNREFERENCED_PARAMETER(hPrevInstance);
UNREFERENCED_PARAMETER(lpCmdLine);
UNREFERENCED_PARAMETER(nCmdShow);
/*LoadLibrary(TEXT("HOOKTEST.dll"));*/
DialogBox(hInstance,"MYDLG",NULL,(DLGPROC)mainDlgProc);
return 0;
}
でよみだしたけどやっぱり無理だお
VK_KANAが立っているのに
しかし飽きもせず、おまえらフック大好きだよなー
しかしフック以前の段階で詰まってる罠
僕ハッカー!
僕バッカー
562 :
デフォルトの名無しさん :2007/05/01(火) 23:28:14
俺チンコ
フックはひとつのDLLで二つとかセット出来ますか?
『日本初・民営刑務所 囚人が「ソフト開発」』だってよw ある意味俺らは囚人だww
初心者ですみません。 gdi+のライブラリの中身を解析したいのですが、可能でしょうか? それともうひとつ、図々しいですが jpgファイルの構造を教えてくれるところはないですか? DIBのピクセルビットを操作するようにjpgのピクセルを操作したいのです。 お願いします。
568 :
デフォルトの名無しさん :2007/05/02(水) 08:29:10
アタッマきた
569 :
567 :2007/05/02(水) 08:49:01
俺が先に云うね
567にカチンときたので教えません。 バーカ!
>>568 これでいい?
570 :
566 :2007/05/02(水) 10:07:04
>>567 ありがとうございます。
試してみます。
>>566 GDI+は、ソース公開されていないよ。
逆アセンブルするんだとか言うなら誰も止めはしないが、せいぜいライセンスは気にかけておけ。
JPEGは、画像を圧縮して記録していて、解凍しないと画像は取り出せない。
仮に編集するとしたら、編集終了後にJPEGとして保存するために再び圧縮することになる。
不可逆の圧縮に対して解凍というのは違和感有りまくり
>>572 同意。
今の時代は質よりも、
聞こえればいい、見えればいいの時代なのね
JPEGはハフマンの強さを見せ付けられる圧縮技術。
フーリエ先生も自分の考えてたことが数百年後に役に立つと予想出来たであろうか
577 :
デフォルトの名無しさん :2007/05/02(水) 11:36:04
それは屁理屈 展開でいいじゃん
素材そのものではないのに 素材の名前をつけた料理には違和感ありまくり
タイヤキ
ミスタードーナツのメニュー
可逆だろうが不可逆だろうが圧縮に対して解凍は違和感あり 展開・復元でいいでしょ 不可逆に対して復元は語弊あるけど
解凍って言い回しはアーカイブファイルでないとしっくり来ない まあ意味は伝わるからどうでもいいけどね
まあな。文脈さえ読めればおk 宮廷に仕えてるわけでもないしねw
解凍って言い回しはLHarc(現LHAの前身)の頃に作者の吉田さんが使い始めたんだよね。 当時のパソ通コミュで(それこそvoidも含めてw)多くのエンジニアからやめろと言われたにも関わらず。 吉田さんが自粛してくれていればこんなことには……
おかわり
どうでもいい
588 :
デフォルトの名無しさん :2007/05/02(水) 15:44:05
>>555 ありがとうございます。
こんな感じでやってみたのですがダメでした・・・・
どこが悪いでしょうか
BYTE *drv = "MySQL ODBC 3.51 Driver";
BYTE att[512];
::wsprintf( &att[0], "DSN=%s\0", "test1" );
::wsprintf( &att[::lstrlen(att)+1], "Server=%s\0", "testserver" );
::wsprintf( &att[::lstrlen(att)+1], "UID=%s\0", "root" );
::wsprintf( &att[::lstrlen(att)+1], "PWD=%s\0", "1234" );
::wsprintf( &att[::lstrlen(att)+1], "DATABASE=%s\0\0", "testdb" );
::SQLConfigDataSource( NULL, ODBC_ADD_SYS_DSN, drv, att );
文字列を文字列として渡す関数に \0 をつけるのは無意味 よって、\0 も \0\0 も意味がない。 それ全部はずした上で、配列に直接\0入れてやれ
>>589 意味はないけど間違いでもない。
wsprintfで入れてくれるから後から入れるのはもっと無意味
>>590 あのさ、直接入れるのは\0\0と2つ重ねる話なんだけど
あと、strlenだと、最初の\0 間でしか数えないから、sprintfの戻り値を足してやれ
593 :
デフォルトの名無しさん :2007/05/02(水) 16:04:22
HINSTANCE hLib = LoadLibrary("xxx.dll");
を実行すると、下記のエラーが出力されます。
error C2664: 'LoadLibraryW' : 1 番目の引数を 'const char [12]' から 'LPCWSTR' に変換できません。(新しい機能 ; ヘルプを参照)
1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。
解決方法を教えてください。
参考ページ:
ttp://homepage2.nifty.com/DSS/VCPP/DLL/dlldynamiccall.htm 環境:WindowsXP, Visual C++ EE 2005
>>588 最初のstrlen(att)+1以外のstrlen(att)+1が全て間違っている。
それでは長さが全部同じになるから、先頭アドレスは足していかないと
>>593 HINSTANCE hLib = LoadLibrary(_T("xxx.dll"));
で、どうか?
>>595 ありがとうございます。
読み込めました。
597 :
デフォルトの名無しさん :2007/05/02(水) 16:48:27
初歩的な質問で申し訳ありません。 VC++でダイアログベースのプログラムの作成中です。 プロシージャ内でクラスを宣言して使用したいのですが、エラーになります。 たとえば以下のようなプログラムのがあるとします(Fooクラスが別途存在します) LRESULT CALLBACK DlgProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) { switch (msg) { case WM_INITDIALOG: Foo foo; return FALSE; case WM_HOGE: foo.hoge(); default: return FALSE; } return TRUE; } この場合、以下のエラーが出力されます 'foo' の初期化が 'case' ラベルによって行われませんでした。 調べた結果、WM_HOGE内でFooクラスの宣言がなされてない(初期化がされていない)のでエラーになっている、ということはわかりました。 ここで質問なのですが、Fooクラスの宣言というのは一般的にどこで行うべきなのでしょうか? プロシージャの最初のswitchの外で宣言してしまってもいいものなのでしょうか。
>>588 DriverとAttributesは以下で判断
@.ODBCドライバを落とし、インストールする。
http://dev.mysql.com/downloads/connector/odbc/3.51.html A.コンパネから“管理ツール”の“データソース(ODBC)”を開く。
B.ファイルDNSタブから[追加]ボタンを押す・
C.データソースMySQL ODBC 3.51 Driverを選択し、[次へ]を押す。
D.データソース名に"MAROYUKI"と入力し、[次へ]を押す。
E.とりあえず完了させる。
F.次にConnecter/ODBCダイアログが開くので、必要情報を代入し[OK]を押す。
G.\Program Files\Common Files\ODBC\Data SourcesフォルダにMAROYUKI.dsnができる。
H.MAROYUKI.dsnをテキストエディタで開き、lpszDriverとlpszAttributesに一致するか確認。
LRESULT CALLBACK DlgProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) { switch (msg) { case WM_INITDIALOG: { Foo foo; } return FALSE; case WM_HOGE: foo.hoge(); default: return FALSE; } return TRUE; } こうすればいいがー
>>594 こんなのSQLConfigDataSource()を呼ぶ所でattの512バイトがどうなってるのか見ればすぐわかるのにね。
しまった! ↓のcaseでfooつかっとるかこれ! んじゃ、外に定義でいいんじゃね?
>>599 それは、case WM_HOGE でfooが使えないべ
>>597 switchの外でいいよ。
case WM_HOGE の時に Foo foo を通過してないまま foo を使うことになるべ。
フォールスルー考えてのことならいいんだが 期待しているのは static のような気がする
要は、そのfooをどこでどう使いたいか、どういう仕様か、によりけりだな。
605 :
597 :2007/05/02(水) 17:07:02
レスありがとうございます。 LRESULT CALLBACK DlgProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) { Foo foo; // ←switchの外で宣言 switch (msg) { case WM_INITDIALOG: return FALSE; case WM_HOGE: foo.hoge(); default: return FALSE; } return TRUE; } というプログラムで期待通りの動作を確認しました。 ありがとうございました。
うーむ、INIT_DIALOGはなんだったんだろうw
レンジのアイコンだから解凍で良いだろ
蒸し返すなw
>>607 アホかい。
解凍と言う用語があったから、電子レンジのアイコンが作られたに決まっておろうが。
>>584 吉田じゃなくて吉崎だな。
石化なんて表現もあったからなw
俺:「ファイルの圧縮で、反対の言葉が解凍ってのはどうかと話題がでてるが、 姉ちゃんならどういう言葉が妥当だと思う? 姉:「うーん、レンジでチンして解凍みたいだから、解チンってのはどう?」 俺:( ゚д゚)ポカーン
つまらん
圧縮の対義語は伸張やろが!
圧縮解凍って言葉が昔から対になってんだから小さい事気にすんな 日本語して意味がおかしくて気に食わないならpack、unpackって言え
圧縮/伸張、compress/decompressでFA。
>>614 おいおい、昔って言ったって、吉崎某が使い始めてから未だ20年経ってないぞ。
#あ、充分昔かw
DB関係の作った事ないし詳しくないからとんでもなく見当違いな事言ってるかもしれないけど教えてくれ。 APIでDB触れるのってODBCだけ?oo4oとかADOとかDAOとかAPIとして持ってないのか?
符号化の結果縮むのが圧縮。 符号化の結果伸びるのが伸長。 復号化が解凍。 じゃないのか?
>>617 何を聞きたいのかよくわからん
それらは最終的にODBC使うんじゃなかったっけ
エンコード/デコードで
>>616 実際にはもっと昔から使われていた。
それ以前にはスタンダードと言えるほど広まっているツールが
なかったからLHA発祥という誤解が定着してしまっただけだ。
っYZ1
LHA は圧縮だけじゃなくて書庫の機能も持っているから、展開が妥当だと
>>619 そうだったのか。いや俺も実際何を聞きたいのかよくわからないんだがw
つまりODBCAPI以外にDBを触れるAPIがあったら知りたかった
oo4oもADOもDAOも、みな関数と言う形ではAPIを持っていないと思う。
oo4oなつかしいなw
>>611 俺が「それはカユイちんこみたいだな」って言ってたって言っておけ
あと「俺のチンコが痒いです」とも言っておけ
うぐいすパンはうぐいす入ってるだろ
東京ばな奈とか?
631 :
デフォルトの名無しさん :2007/05/02(水) 23:58:26
JETはどうした
だからコンパイルエラーはWin32APIとはなんも関係ないっつーの
>605 static つけないと呼び出されるたびに初期化されるんじゃないの まあ動くならいいけど今後のこともあるし
static 必要っぽい気はするな。 WM_INITDIALOG で new してユーザ領域にそのポインタを置いて それを使うともっといいんじゃないかとは思うけど。 同時に複数起動する必要がないならいいけど。
WM_PAINT内で BeginPaint〜EndPaintを二回以上やると 2回目からの描画内容が画面に出ないんですけど どうしてですか?
EndPaint で更新すべき領域をクリアしてしまうんじゃない?
フォアグラウンドのIMEの状態を調べてIME_CMODE_ROMANがない場合VK_KANAを有効にしたいのですが。 チェックするタイミングはキーフックとタイマーのどちらが良いでしょうか?
入力対象が確定していれば、 そいつのWM_SETFOCUSメッセージ時じゃだめか?
状態が変化する前に、処理すればいいのに
641 :
デフォルトの名無しさん :2007/05/03(木) 11:53:57
WM_PAINTのタイミングで描画しています ウィンドウを大きくするときは再描画されるのですが小さくするときはされません どちらでも再描画されるようにするにはどうすればよいでしょうか?
>>641 もう少しくやしく。
もしかしたら、違う要因かも知れないから。
WS_HREDRAW/WS_VREDRAWとか?
644 :
641 :2007/05/03(木) 12:28:08
>>642 最大化ボタンを押したりウィンドウの右下をドラッグしてウィンドウを大きくした場合、
それに連動してウィンドウ内の画像が書き換えられます。
そのときにcase WM_PAINT:を通過していることをMESSAGEBOXを表示させて確認しました
最大化から元に戻す場合やウィンドウの右下をドラッグしてウィンドウを小さくした場合、
ウィンドウ内は再描画されません
(同様にMESSAGEBOXで確認しました)
>>643 MSDNやGoogleを検索しましたがなかなか情報がでてきません
関連資料あればお願いします
>>645 CS_HREDRAW CS_VREDRAW
>>647 LRESULT WINAPI MsgProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam )
{
switch( msg )
{
case WM_DESTROY:
Cleanup();
PostQuitMessage( 0 );
return 0;
case WM_PAINT:
MessageBox(hWnd, "ok", "check", 0);
Render();
ValidateRect( hWnd, NULL );
return 0;
}
return DefWindowProc( hWnd, msg, wParam, lParam );
}
エクスプローラの縮小版表示で独自の画像形式を表示させたいんだけど、 どうやったら出来ますか?
>>649 独自の画像形式とは?
自分が考えたオリジナルフォーマット?
652 :
649 :2007/05/03(木) 13:33:52
>>650 自分が考えたフォーマットもありますし、RLAなどの標準で表示されないフォーマットもあります。
>>649 IExtractImage を実装してレジストリに登録
>>641 WM_SIZE で InvalidateRect すれば?
>>655 WM_PAINTをWM_SIZEに書き換えたところうまくいきました
相談にのっていただいた皆様本当にありがとうございました
WM_SIZE でレンダリングしたのか。 それっていいのか? というか、WM_PAINT は処理しないのか?
>>657 WM_SIZEでInvalidateRectをコールし、 WM_SIZE時の範囲を更新範囲に追加したんお
レンダリング?
レスどうも
>>639 入力中の英和混在入力のモード切替に対応したいので
WM_SETFOCUSじゃ無理なんです。
>>637 >フォアグラウンドのIMEの状態を調べてIME_CMODE_ROMANがない場合
>VK_KANAを有効にしたいのですが。
>チェックするタイミングはキーフックとタイマーのどちらが良いでしょうか?
>>662 >入力中の英和混在入力のモード切替に対応したいので
>WM_SETFOCUSじゃ無理なんです。
エスパーじゃないんで要点を詳しく。
現状の具体的な問題点と、その解法にIMEをもってきた理由を特に。
(難解が平易に変わるかも)
つ[辞書]
>>664 Render ってのが見えないのだろうか。
【他動-14】 《コ》 〜をレンダリングする、 〔画像{がぞう}などのデータを〕実際{じっさい}に描画{びょうが}する、 〔三次元{さんじげん}のオブジェクトを〕二次元{にじげん}の画像{がぞう}にする ◆データを解釈・計算して視覚的に表示すること。 ・ Different browsers render HTML differently. ブラウザによって HTML のレンダリングは異なります。
話の流れを読まずに、文字の綴りだけをあげつらった揚げ足取りなんだから そんなに反応することないのに・・ ちょっと前にも、こういう質問とは本来関係ないことで脱線しなかったか?
おや、本当だ Render()見落としてたわ・・・・
>>667 広義には与えられたデータを元に視覚表示すること全てレンダリングだけど
広く一般にレンダリングと言ったら3Dモデルのレンダリングのことを指すのが言葉の難しいところだ
HTML レンダリングもよく使うと思うけど。
>>663 簡単に言えば、
「窓使いの憂鬱」と言うソフトにカナロックON/OFFで
キーマップを切り替える機能があるんですけど。
IMEの英和混在入力を使うとずれるんですねこれが。
原因は、IME_CMODE_ROMANとVK_KANAがシンクロしないからなんで、
グローバルフックかけて外部から梃入れしようかなと。
>>671 表示全てをレンダリングと言うよりは使うとは思うけど
それも結局ソッチの道の人がほとんどだしさ
まぁ、どうでもいいことだと思うけどw
アタシのことでけんかしないで!
675 :
649 :2007/05/03(木) 16:31:19
>>672 開発は終わってるんだな・・・
これソース公開してないかい?
hook.cpp n.m_isKanaLockToggled = !!(GetKeyState(VK_KANA) & 1); これを HWND hWnd = GetForeGroundWindow(); ImmGetContext(hWnd); ImmGetConversionStatus(hImc, &dwc, &dws) n.m_isKanaLockToggled = (dwc & IME_CMODE_JAPANESE) && (dwc ^ IME_CMODE_ROMAN); ImmReleaseContext(hWnd, hImc); VS2003でないから試せないけど。
おーいXOR…
n.m_isKanaLockToggled = (dwc & IME_CMODE_JAPANESE) && (dwc & ~IME_CMODE_ROMAN);
&~でも^でもどっちでもよくね? ダメな理由があるなら別だけど
っ どっちもだめ
>>681 XORとNOT&ANDが同じ動作とでも思ってるの?
CPUの中身は全部XORの組み合わせ
00001000 ^ 11111111 = 11110111 TRUE 00001000 ^ 11110111 = 11111111 TRUE
10以外の位取りはゆとりで教育課程から消えたけど ビット演算も学校で教えてたっけ?
ビット演算まではなかったと思う。
学校で習ったかどうかなんて関係ない。
工業乙
どっちかのbitが立ってることを確認するために if(hoge & 0x000000C0) みたいな書き方出来ると思うのですが 両方のbitが立ってることを確認したければ if(hoge & 0x000000C0 == 0x000000C0) って書くしか方法ないですか?
hoge & 0x000000C0 & 0x000000C0がある
if((hoge & 0x000000C0) & 0x000000C0)
全部不正解
00001000 ^ 11111111 = 11110111 TRUE 00001000 ^ 11110111 = 11111111 TRUE を 00001000 &^ 11111111 = 00001000 &^ 11110111 = にするとどうなるの?
>>690 ゆとり教育なんか学力の低下に関係ないと言いたいわけですね。
マスクすれ
プログラムの勉強の前に情報技術基礎から勉強する事を勧めたいね
こうするんだよ if(!((hoge & 0x000000C0) ^ 0x000000C0))
if((hoge & 0x00000080) && (hoge & 0x00000040))
>>680 これだろ
n.m_isKanaLockToggled = (dwc & IME_CMODE_JAPANESE) && ~(dwc & IME_CMODE_ROMAN);
何で皆向きになってるんだwwwwwwwwwww血だなwwwwwwwwwそんな俺もwwwwwwwwwwww
↑ ~→!
定数が複数あるのが美しくないな。 if(~(hoge | ~0x000000C0)) こうだろ。
>>708 お前の美しいという言葉に全米が泣いた
だがそのコードはとても美しいとは思わない
これが美しいコードの見本だ
if(0)
ここは Win32API スレだっつーの!
そして皆我にかえるわけだが チェックボタンやラジオボタンでBS_ICONなどでアイコンにする事はできるんですが、 そのアイコンにマウスをあわせたら文字が浮き出るようにするやり方がわからないです。
>>712 マウスメッセージ拾って、コモンコントロールのToolTipでガンバレ
>>714 あー、やっぱマウスメッセージ拾うしかないのか
サンクス
連休的優しさ乙。
720 :
708 :2007/05/03(木) 20:24:11
ちょっと間違えただけじゃないか。 指摘ついでに訂正しておいてくれよw if(!~(hoge | ~0x000000C0))
ウィンドウを作らずに音量とかハードウェアの安全な取出しがあるところにインジケータを追加出来ますか?
非表示のウィンドウを作れ
いい加減あからさまな釣りに反応するのやめろよ
考え方を変えれば良いんだ。 表示されるまではウインドウじゃない、ただのハンドルなんだと。
僕ハッカー
僕バッカー
WM_CREATEを華麗にスルーだ!
バカバッカー
残り3日
俺チンコ
if(!(~hoge & 0x000000C0))
なんでZARDが入ってないんだよ
WANDSじゃダメか?
>>721 最近3日に1回はその質問見てるような気がする
間欠泉のようなもんだから(3回目)
DLLから窓へデータを送るにはどうすればいいの?
WM_COPYDATA
WORDとハンドルがひとつなんですけど
自分でメモり割り当ててlpDataにポインタ入れるんだよ
構造体使えばいいだろ
>>740 それくらいだったらSendまたはPostMessageで直接独自のメッセージを送りつければいいと思う
MMF
映画見に行った?海賊のやつ。 ああコナンね。 ( ゚д゚)ポカーン
(´・ω・`)知らんがな
コナン・ザ・グレードよりコマンドーだろ
た゛っちゅーの
SetWindowsHookExのコールバックをクラスのメンバ関数にする場合 どう書けばいいの? (HOOKPROC)CMainDlg::KeyboardProcとすると error C2440: '型キャスト' : 'overloaded-function' から 'HOOKPROC' に変換できません。 と怒られます。
staticなメンバ関数から呼び出す
行方不明じゃん
え?
そもそも静的にしないと住所不定
この処理は既に実行されています。 みたいな感じの時はHRESULTはどれを使えばいいんでしょうか?
E_KONOSHORIHA(略
E_ABORT
HRESULT hr = AtlHresultFromWin32(ERROR_ALREADY_INITIALIZED);
それがエラーではないというのならS_FALSEという手もある。 勿論その場合S_KONOSHORIHA(略も可。
AtlHresultFromWin32(ERROR_BUSY); でいいんじゃ。
その文章だと二つの意味に取れるな。 1.現在処理中なので、受け付けることができない。 2.この呼び出しを二回以上する必要は無い。
この呼び出しを二回以上する必要は無い。 なんですけど。FACILITY_ITFで自分で定義できるみたいですね。 どうもありがとう。
FORMAT_MESSAGE_FROM_SYSTEMは最大で何文字まで返ってくる可能性があるの?
∞
64KB。Unicodeで32K文字ってとこか。
実メモリが許す限りじゃね? 各エラーコードに対応するメッセージが全部わかれば最大どれくらいか解ると思うけど つか、FORMAT_MESSAGE_FROM_SYSTEMはFORMAT_MESSAGE_ALLOCATE_BUFFERと一緒に使うもんだと思ってたんだけどw
>>764 詳しく
余談だけど、Unicode=2バイトじゃ無い
へぇ〜
>>766 内部的に使ってるUNICODE_STRING構造体の制限。
あとWin32のW系APIで文字と言ったら暗黙にUTF-16符号単位のことを指してると思っていい。
FormatMessageへ渡すバッファってLPWSTRになってるけど 実際渡すのはLPWSTRへのポインタでは?
>>769 それは、FORMAT_MESSAGE_ALLOCATE_BUFFERの時ね
この事実に気付いた者は抹殺さr
自動的にメモリ確保してくれるんだろ 後LocalFreeしないとダメなんだよな使い終わったら。
あらかじめ確保したものを渡す関数と 勝手に確保して返してくれる関数の違いは 関数の仕様見て確認するしかないんですよね ネーミングのルールとかありますか?
呼び出し側でバッファを用意して渡す場合、 バッファサイズも渡さないとイケナイから、わかる。
CopyMemoryの成否の判断ってどうするんでしょう
CopyMemory が失敗する状況って、メモリが壊れてる時とかか?
CopyMemoryってmemcpyの#defineじゃなかったっけか。
しかもmemcpyはコンパイラによってはインラインに展開される。 そんなものが失敗するような状況じゃエラーチェックの判定だって正しく行われるかどうか 分からんぞ。つまり考えるだけ無駄
memcpyはこういうときにエラーを返すということが定められていなかったと思う。 エラーになりそうな状況を考えると、思い付くのはヌルポインタなどメモリにアクセスできないとき。 それならWindowsが例外を投げてくるだろう。SEHで処理しろ。
IMAGE_IMPORT_DESCRIPTOR についての質問です。 Advanced Windows のAPIフックに関するソースコードを読むと、 モジュールのベースアドレス(modBaseAddr)と、 モジュールのハンドル(hModule)は "常に同じ" として 扱われているみたいですが、 これは保証されている事なのですか?
パケット取得でもするのかい?
特に用途はないです。 ただの興味本位ということで・・・
コンボボックスでドロップダウンリストが1行しか表示されません。 複数行を表示するにはどこを設定すればよいのでしょうか? OS:WinXP 環境:Visual Studio 2005 言語:C++
下に広げる
コントロールのデザインのとこで、コンボボックスのドロップダウンボタンをクリックすると コントロールの大きさを変えるのとドロップダウンリストの大きさを変えるのが切り替わる
786 :
783 :2007/05/05(土) 18:28:22
>>784 エディット画面で選択項目表示部分を選択すると
縦方向に伸ばすことができなかったのですが
矢印ボタンのところをクリックすると縦方向に伸ばせました。
ありがとうございました。
ファイルマップオブジェクトにthisポインタの値を書き込むにはどうすれば良いですか?
>>787 thisポインタの値を書き込めばいいと思います
thisポインタの値とは?
thisポインタの値のことだろ
メニューバーのオーナードローをするにはどうすれば良いでしょうか? Adobe Reader(8.0)のメニューバーのような感じにしたいです。
メニューバー? Reader8のメニューは普通だと思うが? ツールバーか?
どうしてnCodeがマイナスだとすぐにCallNextHookExを返すの?
そういう決まりだから
795 :
791 :2007/05/06(日) 00:18:21
メニューバー
メニューにアイコンをつけたいとかそういう話?
質問です、以下のようなプログラムを現在制作しています。 コンソールアプリケーション テキストをドラッグ&ドロップすることで、一定の処理をテキストファイルに対して行う。 「一定の処理」は、このアプリケーション用に書かれたDLLのによって変化する。 それで、DLLの検索&ロードをFindFirstFileとFindNextFile、LoadLibraryを用いて行っています。 そのプログラムなのですが、IDE(VC7)からでは設計通りに動作するのですが、それ以外では動作せず…。 どうやらFindFirstFileなどで、DLLが検索に引っ掛からないようなのです。 (おそらくはカレントディレクトリの問題なのでしょうが)、何故このようなことが起こるのでしょうか? また、対策を教えてください。よろしくおねがいします。
799 :
791 :2007/05/06(日) 01:11:24
アイコンは別にいらないのですが、Adobe Readerみたいにメニューバーの通常状態の色や、選択状態の色を変えたいのです。 あと、右上端にあるバツ印もどうやっているでしょうか?
GetModuleFileName
>>798 >(おそらくはカレントディレクトリの問題なのでしょうが)
そう思うなら、まずはGetCurrentDirectory()で調べるべきでは?
802 :
デフォルトの名無しさん :2007/05/06(日) 01:56:35
DLLを実行ファイルに含めて、一つの実行ファイルにすることって可能でしょうか?
>>802 無理やりリソースとして埋め込んで、実行時に復元すれば?
hIconSm を放置してるとか?
806 :
798 :2007/05/06(日) 02:17:35
>801 ありがとうございます、さっそく調べてみました。 すると、カレントディレクトリがC:\Document and Settings\(ユーザー名)となっているようです。 これは何故なのでしょうか、理由をどなたか知っていれば教えていただければと。
>>805 素早いレスありがとうございます。
hIconSmの存在も調べました。
でもwindows95以外はWNDCLASSEXを使えないらしく、だからhIconSmも使えないそうなんです。
実際hIconSmも指定してビルドするとWNDCLASSにはhIconSmは存在しないってエラーがでました。
理由を考えるよりカレントディレクトリに依存しないようにプログラムを変えろ
>>807 Windows 95 以降全部で使えるぞ。
むしろどこに Win95 以外使えないって書いてるのか教えてくれ
Windows 95のころのSDKじゃね? 当然「Windows 95以外」が意味してるのはNT 3.5とかWindows 3.1とか
hIconSmで指定しても駄目でした。 ちなみにVC++ 6.0をつかってます
あ、16 ビット版のアイコンをエディットしてないとかはどうか? 確か VC++ 6.0 あたりは、アイコンを新たに作成したときは 32 ビット版と 16 ビット版が両方作られてたはず。 どっかでエディット対象を選択できるんで、 それで 16 ビット版の方もエディットすればいいはず。
ちゃんと WNDCLASSEX 使ってるか? WNDCLASS じゃないぞ
>>815 一つしか作られてないと思うのですが、どこに作成されるのでしょうか?
>>816 WNDCLASSEXに変えても駄目でした。
>>817 1つのファイルに2つのアイコンが入ってるはず。
ビットじゃないやw ドットだ。
>>818 一つしかアイコンはありませんでした・・・
もちろん32のほうだけしかありません・・・
>>821 アイコンの保存場所がワークスペースがあるフォルダなのでそこを確認しました
WNDCLASSEXでhIconSmを指定してる箇所のソースを ここに張り付けた方が解決が早い予感
>>823 アイコンの中身は見ました。
プロパティも確認しました。
メインのとこだけ貼り付けます int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow) { MSG msg; //メッセージ情報格納用構造体 WNDCLASSEX wc; //ウィンドウクラス HWND hWnd; //ウィンドウハンドル //*****ウィンドウクラスの設定*****// wc.cbSize = sizeof(WNDCLASSEX); //構造体サイズ wc.hInstance = hInstance; //インスタンスハンドル wc.lpszClassName = szClassName; //ウィンドウクラス名 wc.lpfnWndProc = WindowProc; //ウィンドウプロシージャ名 wc.style = CS_HREDRAW|CS_VREDRAW; //ウィンドウスタイル wc.hIcon = LoadIcon(hInstance,"IDI_ICON1"); //アイコンハンドル wc.hIconSm = LoadIcon(hInstance,"IDI_ICON1"); wc.hCursor = LoadCursor(NULL,IDC_ARROW); //カーソルハンドル wc.lpszMenuName = "saisei"; //メニュー wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); //ウィンドウの背景色セット //*****ウィンドウクラス登録*****// if(!RegisterClassEx(&wc)) return FALSE; //登録失敗 //*****ウィンドウの作成*****// hWnd = CreateWindow(szClassName,"再生プログラムだべ",WS_OVERLAPPEDWINDOW,440/*CW_USEDEFAULT*/,650/*CW_USEDEFAULT*/,400,100,NULL,NULL,hInstance,NULL); /*hWnd = CreateWindow(ウィンドウクラス名,ウィンドウタイトル,ウィンドウスタイル,ウィンドウの水平座標位置,ウィンドウの垂直座標位置,ウィンドウの幅,ウィンドウの高さ,親ウィンドウのハンドル,メニューのハンドル,インスタンスハンドル)*/ //*****ウィンドウの表示*****// ShowWindow(hWnd,nCmdShow); //ウィンドウの表示状態設定 UpdateWindow(hWnd); //ウィンドウの表示領域更新 //**********メッセージループ*************** while(GetMessage(&msg,NULL,0,0)){TranslateMessage(&msg);DispatchMessage(&msg); } /*while(メッセージの取得){メッセージの変換,メッセージをプロシージャへ送信}*/ return msg.wParam; }
>>806 IDEから実行したらおそらくカレントディレクトリはプロジェクトファイルのあるディレクトリになってるはず。
ファイルをドラッグ&ドロップして起動した場合は、ファイルのあるところがカレントディレクトリになってるはず。
理由?知らね。そのほうが都合がいいからだろ。
DLLをEXEと同じディレクトリに置くことにしてるのなら
>>800 とか。
アイコンファイルをうpってみたら?
確かに 32 ドットのしか入ってないね・・・。
>>826 も別に変には思えないし。
じゃ、16 ドットのも作ってみたらどうかな。
>>826 "IDI_ICON1"
を
MAKEINTRESOURCE(IDI_ICON1)
に置換すれ
ウチの環境では、それでうまくいった
MSDNより >LoadIcon 関数がロードできるのは、GetSystemMetrics 関数の SM_CXCURSOR と SM_CYCURSOR > の各フラグに相当するサイズのアイコンだけです。それ以外のサイズのアイコンをロードするには、 >LoadImage 関数を使ってください。 wc.hIconSm = LoadImage(hInstance,"IDI_ICON1", IMAGE_ICON, 16, 16, LR_DEFAULTCOLOR); でどお? >SM_CXCURSOR と SM_CYCURSOR これ誤植っぽい、SM_CXICON が正しい。
32 ドットのアイコンを hIconSm にセットしたら、 自動的に縮小された(もちろん画像は粗い)なったはずなんだがなあ・・・。
835 :
デフォルトの名無しさん :2007/05/06(日) 11:45:27
WTL
驚異的に改行されてねえ とか思ったけどIEだとOKなのか
>>831 うまくいけました。
ありがとうございます!
>>832 なんか
error C2440: '=' : 'void *' から 'struct HICON__ *' に変換することはできません。
っていわれました。
みなさま数々のご教授ありがとうございました。
またなにかエラーのときはよろしくおねがいします。
840 :
デフォルトの名無しさん :2007/05/06(日) 12:33:32
Wininetに関して質問なんですが、InternetOpenはアプリの起動時に実行すべきでしょうか? それとも通信の必要がある場合にその都度の方がいいですかね?
ダイアルアップの人もいるし、、、ノートで出先とか
>>840 アプリの起動時、ネットにつながっていなくてもInternetOpen
は成功する。
実際にネットに接続するAPIが呼ばれるまでにネット接続
が確立すればOK。
ということはどちらでも良いって事でしょうか。 タイムアウトもその都度設定するのはアレなんで起動時に呼ぼうと思います。 ありがとうございました!
タイムアウトは効いたっけ?効果なかった気がする
へ ヘ │ /∧ヽ__/∧ヽ_ 〜∞ /ハ \_/ 八 │ ∞〜 /ノ ヽ;;;;;;;;;丿/ ヽ\\ 〜∞ /_______) │ (;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;) {_____愛●国_| │ [_愛●國______] . |ミ/ ー―◎-◎-). │ (__ (__ ミミミミミミミミ| (6 (_ _) ) │ ) ミミミミミミミ) ノ/| .∴ ノ 3 ノ イエーイ.. │ ( ノ(。。 ) ι∵)リ||σ)ミミ) ノ/ _\_____ノ__ │ 丶 ε U j ノミミ) ノ/ / ) 嫌 ≡ ;;;; ) `__ノフ. │ イエーイ ヽ ,,_ U ___,,ノ / U |__|. 韓 ≡ ;;; )_/ ∈) │ \,,______,ノ 〈 | | .流 ≡ ) ̄ ̄ ̄´ │ _∩ 厶_______ノ⌒丶. ヽ \ ) │(S 〉 / ANTI KOREA
847 :
840 :2007/05/06(日) 17:10:49
すいません、
>>844 さんのリンク先でサンプル見つけました。
タイムアウトも効かないみたいなので非同期で実装しようと思います。
ありがとうございました。
これはどういう意味ですか? イベント ID (0) (ソース testsrv 内) に関する説明が見つかりませんでした。 リモート コンピュータからメッセージを表示するために必要なレジストリ情報またはメッセージ DLL ファイルがローカル コンピュータにない可能性があります。 この説明を取得するために /AUXSOURCE= フラグを使用することができる可能性があります。詳細については、ヘルプとサポートを参照してください。 次の情報はイベントの一部です: Service started.
849 :
デフォルトの名無しさん :2007/05/06(日) 18:15:18
>>837 参考になりました。ありがとうございます。
>>848 >詳細については、ヘルプとサポートを参照してください。
どうしても行き詰まってしまい質問させて頂きます。 現在、HICONのキャッシュを作成し、次回からはキャッシュを元にHICONを復元させるプログラムを組んでおります。 GetDibsを使いHICONのカラーとマスクをそれぞれ、32bit, 16bitで取得し吐き出せています 吐き出させる直前の内容をCreateIconIndirectでHICONにし描画すると問題はありません しかし、キャッシュから得た内容でHICONを作成し描画すると、アイコンによって透明可に失敗しています 皆様お知恵をお貸しくださいorz
吐き出す前と後で何か情報が変わってんだろ
そのキャッシュは正しく作れてんの?
レスありがとうございます。 吐き出すデータとキャッシュに格納したデータのチェックサムを取ってみました所一致しました。 キャッシュ側のテストもかなり行っておりますので、キャッシュ側の問題とはやはり考えにくいですorz 現在、何故かWinrarのアイコンだけが不透明にならないという摩訶不思議な状態です; もう一度、アイコンの取得全体を作り直して見たいと思います
まず、
@キャッシュなしで、想定する動作になるか確認。
A数キャッシュ(2個ぐらい)で、想定する動作になるか確認。
B
>>851 で失敗したキャッシュ数の半分のキャッシュ数で、想定する動作になるか確認。
んで結果は?
>>855 さん
@現在はテスト中ですので、キャッシュから取得に失敗した場合は何もしないようにしています
A確認済みです。
B確認済みです。特定のアイコンのみが意図した通りの描画がされず、また、チェックサムを見る限りキャッシュデータ自体は問題ありませんでした。
いまいち
>>851 の流れが見えん。
問1.HICONのキャッシュとは何?
独自フォーマットのデータ?
問2.吐き出させる直前の内容とは?
exe.dlなどのモジュールに入ってるリソースそのものの事?
問3.キャッシュから得た内容でHICONを作成し描画する関数は何?
CreateIconIndirectの事?
問4.
>アイコンによって透明可に失敗しています
>Winrarのアイコンだけが不透明にならない
ここを詳しく
Alpha付き32ビットアイコンの予感
レス有り難うございます。
意見を頂けて大変恐縮です。
>>857 さん
こちらでは動作上は成功と見ています
>>858 さん
問1: 保存したいHICONをGetIconInfoで詳しい情報を取得した後に、カラーとマスクのビットをGetDIBBitsで取得します
そして、取得した情報をキャッシュとして保存するようにしております。
問2: 直前の内容はカラー、マスクのピクセル情報です。ビットマップの画像ビットと同じですね(^^;
問3: その通りです。キャッシュから、カラー、マスクのピクセル情報を得た後、CreateIconIndirectでHICONを作成し、DrawIconで描画するようにしております
問4: Winrarのアイコンだけは本来透過される所が黒くなっていますorz
カラーとマスクをそれぞれ別に描画させてみると、
カラーではきちんとWinrarの本が束ねられている所以外は黒く
マスクでは、本が束ねられている所は黒く、それ以外は白くなっている事は確認済みです
BitBltを用いるとうまく透過されるのですが、今度はBitBltでは別の問題が発生するという状態に・・・
長文申し訳ありません
WinRARのアイコンは32bitカラーだったりしない?
862 :
851 :2007/05/07(月) 01:55:06
>>861 さん
確認してみた所、32bitではありませんでした;
それと、何とか解決することができましたorz
GetDIBBitsを使わず、別の方法でビットを取得した所うまく行きました…
原因が全く分かりませんが、このまま作っていきたいと思います
こんな質問に付き合って下さった皆様本当に有り難うございました。
>>862 CreateIconIndirectで使うマスクは2bitビットマップのはず。
16bitでなく2bitでキャッシュしてみたら?
なんか解決しちゃったみたいだけど。
>>862 そうやね、可能性あるね。
使う色が違う他のアイコンにしたら、また問題が出るんではないかと
865 :
デフォルトの名無しさん :2007/05/07(月) 11:24:07
>>863 アイコンのマスクビットマップは2bitじゃなくて高さ2倍の1bitじゃないか?
WM_PAINTについて、OSによってはメッセージループに来ず、 直接コールバックに来るとかなどの、 詳しい挙動が載っているサイトとかありましたら教えてください。
868 :
866 :2007/05/07(月) 21:55:47
環境 Win2000, Excel2000, VC++6, SDK
>>866 >>868 CLSIDFromProgID(L"Excel.Application", &clsid);
こいつは、ProgIDからCLSIDを求めている。
んで、そのCLSIDからExcel.ApplicationインターフェイスのpXlAppを取得してる。
pXlAppからWorkbook伝いにWorksheetsを求めればいいんじゃない?
870 :
869 :2007/05/07(月) 22:07:39
メソッドとかのノードがわからんだったら oleviewとかで調べてみてわ?
>>867 来ないから安心しろ
来るといったらせいぜいSendMessageした時くらいだろ
×てわ ○ては
>>871 SendMessageはメッセージループから来るだろ・・・
875 :
867 :2007/05/07(月) 22:13:59
>>871 自分が実験した感じでは、9xでは起動時に、
XPでは通常時でも半々ぐらいで直接コールバックに来るみたいです。
また、XPで直接コールバックに来た場合、
DefWindowProcをしない場合に、メッセージループにも来てくれるみたいです。
876 :
866 :2007/05/07(月) 22:15:49
// Call Workbooks.Add() to get a new workbook... IDispatch *pXlBook; { VARIANT result; VariantInit(&result); AutoWrap(DISPATCH_PROPERTYGET, &result, pXlBooks, L"Add", 0); pXlBook = result.pdispVal; } この後です。pXlBook を使ってどうAutoWrapを使えばいいのかが分かりません。 ブック.Worksheets(xxx).xxxxxxxx
>>875 同一スレッド内で UpdateWindow の類が発生したときには直接コールバックに来る。
他スレッド(プロセス)からの場合はどうだったか覚えてない。
ウィンドウが Activate/Deactivate されたときの再描画の挙動も普段の WM_PAINT とは
違っていたような記憶もある。
878 :
867 :2007/05/07(月) 22:33:47
>>877 >Activate/Deactivate
自分も違うような感じがしていました。
もう一度実験してみます。
879 :
869 :2007/05/07(月) 22:52:06
このオブジェクトは大きな流れとして
Application → Workbooks → Workbook → Worksheets → Worksheet
とある。
んでこれ・・・
AutoWrap(DISPATCH_PROPERTYGET, &result, pXlBooks, L"Add", 0);
pXlBookのAddメソッドを、AutoWrapという補佐関数を介して呼んでいる。
なお、Addメソッドの結果は、追加した新しいブックのインターフェイスポインタが入ってる。
(Workbook& Workbooks.Add()な感じで、結果はresultにある)
メンバ一覧
http://msdn2.microsoft.com/ja-jp/library/microsoft.office.interop.excel.workbooks_members (VS.80).aspx
しかし、DISPATCH_PROPERTYGETとは言うけど、Addはメソッドだよなー
結果、pXlBookには、いい値が入ってる?
880 :
デフォルトの名無しさん :2007/05/07(月) 23:19:32
WindowsMediaPlayerのパス位置をAPIで取得したいのですが、 どうやればできるでしょうか? マイドキュメントとかはSHGetSpecialFolderLocationで取得できましたが、 アプリ個別は絶対パスで指定方法しか使えませんか? よろしくお願いします。
COMなレジストリを探索するのはどう?
882 :
デフォルトの名無しさん :2007/05/08(火) 00:00:18
PATHにないのに、startやファイル名を指定して...で起動できるものは HKLM\Software\Microsoft\Windows\CurrentVersion\App Paths\ の下にwmplayer.exeがあるよ
その中を漁ると、消したはずのエロゲーのパスとかが残っていて、他人の環境で確認すると楽しいよ。
>>880 playerを起動させて、プロセス一覧から取ってくるとか。
ユーザが入力しなくていい分、楽かもしれない。
calc, notepadみたいに、Shellでwmplayerって打てば開くんやね
>>882 LoadLibraryに"wmplayer"でパスを取る解法もあるのか
システムドライブ+\Program Files\Windows Media Player\wmplayer.exe
16、24、32、48の各サイズを含むアイコンから ExtractIconExで取得される 小さいアイコンは16×16と24×24で 大きいアイコンは32×32になるのでしょうか? DrawIconExでアイコンハンドルをhIconSmallにして、サイズを16より大きくすると 24×24のアイコンが表示されます。 また、ハンドルをhIconLargeにし、サイズを32より大きい値を指定すると 32×32のアイコンが拡大されて表示されてしまいます。 たとえばサイズ16のアイコンを24に拡大して表示とか サイズ48のアイコンの表示が出来ません。 分かりにくくて申し訳ありませんが、 分かる方いたらお願いします。
LoadImage でサイズ指定してロードしたらどう?
>>882 へー、880じゃないけどすごく参考になった。サンクス
>>889 すいません、説明が足りませんでした。
dllやexe, iclなどからのロードもあるので
アイコンインデックスを指定する必要があったので
ExtarctIconExを使ってました。
893 :
866 :2007/05/08(火) 05:43:59
>>866 ,869,876,879
aaaa.bbbb
↓
AutoWrap(DISPATCH_PROPERTYGET, NULL, aaaa, L"bbbb", 0);
aaaa.bbbb(cccc)
↓
AutoWrap(DISPATCH_PROPERTYGET, NULL, aaaa, L"bbbb", 1, cccc);
aaaa(2).bbbb
は出来ないのでしょうか?
895 :
880 :2007/05/08(火) 08:47:01
いろいろな方法があるのですね。 皆さんのおかげで解決できそうです。 ありがとうございました。
指定したテキスト(ローマ字とか)をしゃべらせるモジュールって MS系であります?
MSのSAPIと、それを使ったやつってこと?
もしもLoadBitmap()でエラーが出てるなら、ソースじゃなくてリソースファイルのほうの問題だ リソースのほうで、"MYBMP"となってるか? もし、ダブルクオート無しの MYBMP になってるなら、 LoadBitmap(hInst, MAKEINTRESOURCE(MYBMP)); こうしてみ
>>899 MAKEINTRESOURCE(MYBMP)にしたら出来ました!
ありがとうございます!
MAKEINTRESOURCE・・・調べてみます!
ビットマップ上にTextOutで文字を書いたり、 エディットコントロールを置いたりすると、文字の背景が白(デフォルト)に なると思うのですが、これを透過して後ろのビットマップを見えるように することは可能でしょうか?
えっきすおあ
TextOut 側は SetBkMode(... TRANSPARENT) でなんとか コントロール側は… WS_EX_LAYERED する?
>>903 BitBltの最後の引数のところですか?SRCINVERTでXORとったら
BMPが真っ白になりました。まぁ当たり前なのですが・・・。
CreateWindow()の中で背景とXORを取れるようなのがあるのでしょうか?
>>905 ありません。
WS_TRANSPARENT にして WM_PAINT 時に上書きする程度。
あるいは SetWindowRegion でくりぬく
(背景 AND マスク) XOR 文字
TextOutについては
>>904 さんので上手くいきました。
CreateWindowEx()にかえてWS_EX_LAYEREDしたら、文字も消えますね。
結構分からないこと多いので
>>906-907 について調べてみます・・・
>>908 コントロール側を Layered Window にって意味で書いたが… 正解かどうか微妙
BitBltしてる側の window style でどうこうできる代物ではないのは確実だと思われ。
# SetWindowLong(コントロール側wnd, WS_EX_LAYERED) して SetLayeredWindowAttributes(コントロール側wnd)
WS_EX_LAYEREDはWS_CHILDは無理
コントロールをサブクラス化して、WM_PAINTをがんばる
912 :
909 :2007/05/08(火) 18:44:56
>>910 ありがと。 WS_CHILD 相手はダメであったかー
簡易切り替え有効状態のXPまたはvistaで、ユーザー名とパスワードがわかってる 別のユーザー(未ログオン状態)にAPIだけで切り替えって無理ですかね。 すでにログオンしてるならWinStationConnect()で切り替えられるってとこまでは何とか なったんだけど、未ログオンのユーザーのログオンを自動化する方法が解らなくて・・・ というか方法無さげ?
フックってあの赤くて毛むくじゃらで頭にプロペラがついたやつ?
WM_INITDIALOGの反対はWM_DESTROYとWM_CLOSEどっち
どっちも違う
多分 WM_CLOSE 呼び出されるタイミングで、まだ 子供window が生き残ってるから WM_INITDIALOG は子供window が出来上がった後に来るしね
子供window
child window の直訳と考えれば別に間違ってるわけでもない
出来た子供がオスかメスかはどう判断すればいいの?
ちんこ見ればいい
BOOL GetWindowSex( HWND hwnd, LPWINSEX lpWinSex ); 書いてて虚しくなった
Win3.1まではWINS構造体 32bit時代からはWINSEX構造体
925 :
デフォルトの名無しさん :2007/05/08(火) 21:44:37
FOX★公認!!!
俺たちのクリックで日本を一位にしようぜ!!
“30年は日本に手は出せないな”という勝ち方をしたい
http://wwwww.2ch.net/test/read.cgi/news4vip/1178602852/ 1. ポーランド 139,797,680
2. チリ 137,040,439
3. ★日本 86,475,213★
4. イスラエル 80,930,530
5. スロベニア 57,137,042
6. フィンランド 40,857,499
石を投げる戦争から人は進化・進歩を遂げ、剣や槍などの武器をもって戦うようになった
人間はさらに発展し兵器を使う戦争を始めた
そして今、指先一つを武器とした電脳戦争が勃発したのであった・・・
皇国を勝利へと導くには貴様らの参戦が不可欠である
・戦場
http://www.clickclickclick.com/default.asp ・まとめサイト
http://www33.atwiki.jp/clickvip/
>>887 せめてProgram Filesの位置はSHGetFolderPathで取ろう
実行ファイルのアイコンを設定するにはどうすればいいんですか? ウィンドウの左上のアイコンは変えれたのですが・・・
>>925 BitBlt() じゃなくて StretchBlt() 使えって。
じゃあこれから子ウィンドウの事は子供windowって言おうぜwwwwwwwwwwwwwww
>>929 んじゃ親ウインドウは、大人ウィンドウかww
>>918 WM_DESTROYでも子ウィンドウが生きてることは保証されてるぞ
>>927 エクスプローラーでは一番若いIDのアイコンが表示される
何かおばちゃん細胞みたいなノリだな。
親ウィンドウが、ダイアログボックスとかを開いている状態で、 親ウィンドウにSendMessageはできるが、 PostMessageができない状態であるか 調べるやり方がありましたら教えてください。
EnableWindowでいいんじゃね?
IsWindowEnabledだ。
>>933 モーダルダイアログ開いててもPostMessage出来るぞ
>>931 それで、アイコンが変わらなかったのか・・・
ありがとうございました!無事解決しました。
>>937 更新タイミングの自由度は低いがアイコンハンドラを作ればエクスプローラ上での
実行形式ファイルのアイコンも変更可能だぞ。
939 :
933 :2007/05/09(水) 00:14:08
>>934-936 ありがとうございます。
IsWindowEnabledでいけそうです。
後、MessageBoxはモーダルダイアログですかね。
第一引数をHWND、NULLどちらの場合でも、
WM_PAINTがメッセージループには来てくれないみたいです。
InvalidateRectをしても直接コールバックの方に来てしまいます。
>>939 MessageBoxでは内部でメッセージループが回ってるんだよ
UpdateWindowしてないか
942 :
933 :2007/05/09(水) 01:03:39
>>940 >>941 少し理解できました。
UpdateWindowはしていません。InvalidateRectはしています。
UpdateはSendMessage(WM_PAINT)、InvalはPostMessage(WM_PAINT)
だと思うので、意図したメッセージループに来てほしいのですが、
MessageBox独自のメッセージループに移行してしまうので、
処理が変わってしまう感じですかね。
>>942 InvalidateRectは無効領域を追加するだけ。
無効領域があり、かつメッセージキューにメッセージが無くなったときに
システムはWM_PAINTを生成する。
944 :
933 :2007/05/09(水) 01:44:32
>>47 linux自体Solarisや*BSDから見ればカスなんだが
僕バッカー!
>>942 そこらへんのメッセージループでもなにか特定の処理を行いたい場合には、
ローカルフックを使うのが簡単。dllもいらないし。
949 :
デフォルトの名無しさん :2007/05/09(水) 16:03:32
>> ありがとうございます。やってみます。
953 :
デフォルトの名無しさん :2007/05/10(木) 04:15:56
>>951 EnumResourceNamesの第1引数に指定するHMODULEはどうやって取得すればよいですか?
LoadLibraryでHMODULEを取得しようとしましたがshell32.dllではエラーになり、
APPWIZ.DLLではLoadLibraryは成功しましたがEnumResourceTypesがTRUEを返しました。
ググレカス
>>953 > LoadLibraryでHMODULEを取得しようとしましたがshell32.dllではエラーになり、
エラーとは何か?
> APPWIZ.DLLではLoadLibraryは成功しましたがEnumResourceTypesがTRUEを返しました。
TRUEを返すと何か問題が?
CreateFile の hTemplateFile って使えないの? ↓のようにやってもtest.txtの属性が、test2.txtにはコピーされないみたい。 HANDLE hFrom = ::CreateFile("c:\\test.txt", GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL); HANDLE hTo = ::CreateFile("c:\\test2.txt", GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, hFrom); ::CloseHandle(hFrom); ::CloseHandle(hTo); >[in] Handle to a template file, with the GENERIC_READ access right. The template file supplies file >attributes and extended attributes for the file being created. This parameter can be NULL. 最後の一文って一体。。。
俺も使ったことないな、最後の引数
Explorerの右上の旗のロゴを隠したいのですが、 SetWindowPosやShowWindowで隠そうとしても、枠が残ってしまいます。 専用の関数みたいなものがあるのでしょうか?
>>958 HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Toolbar\Explore/ShellBrowser
ITBarLayoutのアドレス0x10のバイトの下位3bit目をオフ
下位3bit目じゃなくて下位4bit目だった。ようするに0x08
質問です HTMLのFORMタグでSUBMITすると何も指定していなければ FORMのACTIONで指定したURL等に ?---=---&___=___と付とついて送信されますよね? その時日本語が値のときにエンコードされているように見えるのですが、 これはAPIとして提供されている機能でしょうか? そうであればAPI名を教えてくれませんか?
そんなWin32APIはありません。
METHOD=GET の話か まあURLエンコードでググれ
IMultiLanguageインターフェイスのConvertStringメソッドとかあるけど、 ここじゃスレ違いかもね
BitBltについて質問です。 転送元と転送先が同じDCの場合でも、この関数はちゃんと動く保障はありますか?
>>966 厳密にはない。
GetDeviceCaps関数のRASTERCAPSで確認。
WINDOWPLACEMENTのshowCmdあたりをいぢってて質問。 最大化してたウィンドウが最小化したあと、元の状態に戻すにはどうすればよいですか? SW_RESTOREだと最大化状態が解除されてしまうので。
969 :
デフォルトの名無しさん :2007/05/11(金) 00:50:22
Windows Picture and Fax ViewerをCreateProcessで実行したいのですが、 notepad,mspaintのような起動方法は可能でしょうか?
関連付けのレジストリを見れば分る
時々エディットコントロールのボーダーが見えなくなったり、 エディットコントロールが見えなくなって下のBMP画像が出てきたりするバグで 困っています。これらはWM_PAINTで再描画された時に直るのですが、 むしろ、WM_PAINTで大きなBMP画像が毎回毎回再描画されているせいで エディットコントロールの表示がおかしくなるのではないかと思ってます。 BMP画像は壁紙としてウィンドウと同じサイズのものを使用しているのですが、 WM_PAINTでことある毎に再描画せずにずっと表示させるようなことは可能なのでしょうか?
972 :
デフォルトの名無しさん :2007/05/11(金) 05:35:42
システムを終了するときの終了オプションダイアログ(コンピューターの電源を切る)のような 完全なシステムモーダルなダイアログボックス、或いはウィンドウってどうやって作ればいいんでしょう? ダイアログボックスにシステムモーダル属性を付けてもだめでしたorz タイマーでフォーカスを取り返し続けるっていうのは無しで、なにかいい方法ありますか?
HWndにNULLを入れて
974 :
デフォルトの名無しさん :2007/05/11(金) 06:32:30
グローバルフックしたら?
システムモーダルつけてアド民では?
システム乗っ取るようなものじゃないかそれ? そんなお手軽に実現できていいのかなあ
978 :
972 :
2007/05/11(金) 08:14:53 どうしても乗っ取りたいんです。