Win32API 質問箱 Build3
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん
NGNGやさしいお兄さんたちが答えてくれるかも。
でも、最低限Web検索ぐらいはしてね。
前スレ
Win32API 質問箱
http://pc.2ch.net/test/read.cgi/tech/991576947/
Win32API【2】
http://pc.2ch.net/test/read.cgi/tech/1006783012/
参考
MSDN Online
http://www.asia.microsoft.com/japan/developer/
猫でもわかるプログラミング
ttp://www.kumei.ne.jp/c_lang
0002デフォルトの名無しさん
NGNGおよそ32000と書いてあるのですが、正確には何文字で、適当な定数宣言されてますか?
おそらく32768文字だとは思うのですが、正確なところどうなのでしょうか?
0003デフォルトの名無しさん
NGNG片方で確保したものをもう片方で開放するようなことは可能でしょうか?
暫定では、DLL側で HeapAlloc( GetProcessHeap() ... ) で作った LPVOID を
エクスポート関数の戻り値とするインターフェースで、
受け取った側の EXEで HeapFree( GetProcessHeap() ... ) に渡して開放してます。
とりあえずうまくいってるようなんですけど、問題が無いかどうかちょっと不安です。
もっといい方法などあれば教えてください。
0004デフォルトの名無しさん
NGNGテキストを挿入するにはどうすればよいでしょうか?
試した方法は、
1. 目的のテキストをクリップボードにコピーして、WM_PASTEをGetForeGroundWindow()
で得たウィンドウ(VC++)に送る
2. GetForeGroundWindow()で得たウィンドウを親として、EnumChildWindows()ですべての
子ウィンドウにWM_PASTEを送る
3. WM_PASTEの変わりにWM_SETTEXTを送る
です。ほかのエディタでは上手くいったものもありましたが、VC++ではどれも失敗でした。
わかる方いましたら教えてください。よろしくお願いします
0005デフォルトの名無しさん
NGNG安心したいなら、ShellのIMalloc関係を使えや。
0006デフォルトの名無しさん
NGNGShellNamespaceの列挙は体感できるほど遅いから、避けたいのですが・・・
0007デフォルトの名無しさん
NGNG(゚Д゚)ハァ?
IMalloc使うのとShellNamespaceを列挙するのはまったく別な話だが
0008デフォルトの名無しさん
NGNGそうなの?
SHBrowseForFolder()とか使うときに使うもんだから、
てっきりそうなのかと思ってた。
0010デフォルトの名無しさん
NGNGつくられたような機能だから。
Inner-ProcessでのAllocation,DeAllocationの共通化
ただし、IMallocの実装が共通なのは当然、条件。
00113
NGNG利点があるとは思えないのですが、、、。
質問しといてすいませんけど、EXE側で作ったヒープハンドルを
DLL側エクスポート関数に引数で渡すという改善案でいくらか安心しときます。
ヒープハンドルはプロセスをまたがない限り有効、だと信じて。
突っ込みあればおねがいします。
0012デフォルトの名無しさん
NGNGWindows2000serverでデーモン(サービス)を作るには
どうすればいいんでしょう?
0013デフォルトの名無しさん
NGNG00143
NGNGぐぐるやMSDNをあさってみましたが、やっぱり11の認識が変わるような
記述にはお目にかかれませんでした。
「勉強したほうがいい」っていうことは3や11に書いた方法では問題あるっていうことですか?
また振り出しに戻ってしまいましたょ、、。
ダレカオシエテー
0015デフォルトの名無しさん
NGNG同一プロセスにあるDLLなら、別に11のHeapAlloc、HeapFreeでいいんじゃないかと
思うんだけど、何がどう不安なんだろう?デバッガでちゃんと解放されているか
確かめてみたらどう?
IMallocはプロキシなどを意識せずにデータを他プロセスに飛ばす機構です。
かといって実際にプロセスを越えてメモリを渡せるわけではないので、
特にIMallocを使えばどうこうなる訳ではないです。
COMを使っているなら、こちらで実装した方が綺麗だけど。
0016デフォルトの名無しさん
NGNG問題ない。そういうプログラムを書いたことある。
00173
NGNG不安だったのはCRTのmalloc/freeみたいにモジュールをまたぐときの
問題があるのではないかということでした。
でもカーネルのAPI直呼びだったらEXE/DLLをまたいだかどうかを
カーネルは認識できないはずだから、問題が起こるはずが無い、
ということで、やっぱり安心デス。
0018デフォルトの名無しさん
NGNG>>17
CRTでモジュールをまたいだことによってってどんな問題があるの?
モジュールをまたいでるからじゃなくてヒープがばらばらに管理されてるから
問題だと思ってたんだが。
0019デフォルトの名無しさん
NGNGpDesktop->BindToObject(pidlParent, NULL, IID_IShellFolder, (void**)&psfParent);
psfParent->ParseDisplayName(NULL, NULL, L"test.bmp", &chEaten, ppIdList + count, &dwAttributes);
psfParent->GetUIObjectOf(NULL, count, ppIdList,IID_IDataObject, NULL, (void**)&pDataObj);
これでtest.bmpの IDataObject を取得しているのですが、
c:\bmp\test1.bmp
c:\jpg\test1.jpg
この2つをDnDするためのIDataObjectはどのように作成するのでしょうか?
0020デフォルトの名無しさん
NGNGファイルの IDataObject なぞ要りません。
0021デフォルトの名無しさん
NGNGディレクトリを取得するには何を使えばいいですか?
0022デフォルトの名無しさん
NGNGお前の目
0023デフォルトの名無しさん
NGNGIDataObjectの実装がめんどくさかったので19のようにしたのですが、
やっぱり手抜きはよくないですね。
>>21
EnumChildWindowsでComboBoxを取得
0024デフォルトの名無しさん
NGNG0025デフォルトの名無しさん
NGNG0026デフォルトの名無しさん
NGNG<コピー>を対象ウインドウに発行して、クリップボード経由で
もらう、というのが比較的汎用的であろうかと思われる。
0027デフォルトの名無しさん
NGNGEdit ControlならEM_GETSELTEXT
0028クジラ
NGNGProxyアドレスの取得の際に、IEの接続で「自動設定」
しかしていない場合にProxyアドレスを取得する方法を教えてください。
今考えているのは、一旦自動設定に書かれているアドレスに接続し、
アドレスを取得し、そこで構文解析し、アドレスを取得するという手法を
考えていますが、こんなくどいことしないで済みそうなのですけど・・。
力技でどうにかなりそうなのですけど、もっとうまい方法は
ないのでしょうか?
情報が無く困っています。だれか教えて
0029デフォルトの名無しさん
NGNG0030デフォルトの名無しさん
NGNGヒントだけでもいいですから
教えてください。もう泣きそうです
0031デフォルトの名無しさん
NGNGCreateThread()
0032デフォルトの名無しさん
NGNG0033デフォルトの名無しさん
NGNG95系で使えないから結局使ったことないんだが・・・
0034デフォルトの名無しさん
NGNGコンストラクタの引数でわたす方法しかないんでしょうか?
003534
NGNGクラスにウィンドウハンドル等を何もわたさずに、
クラス内部で呼び出し側プロセスの
インスタンスハンドルを取得する方法を探しています。
ご存じの方教えてください。
0036デフォルトの名無しさん
NGNGはずなので、呼び出されたプロセスは、
呼び出し側プロセスがどれなのかわからないはず...
#昔msjでwin95の内部構造体を暴いて親プロセスを探す記事が
あったような、なかったような。
0037デフォルトの名無しさん
NGNGプロセスのインスタンスハンドルはいつでも GetModuleHandle(NULL)
で取得できるけど、これじゃダメかな。
003825
NGNGだから、汎用的なヤツの方が良いです。
003934
NGNGレスありがとうございます。
HMODULE は HINSTANCE と別物だと思っていたら、
VC++ 6.0 の WINDEF.H でこうなっていますね。
typedef HINSTANCE HMODULE;
ありがとうございます。解決しました。
0040デフォルトの名無しさん
NGNG(゚Д゚)ハァ?
だから何?汎用的な方法は>>26が言ってるが?
0041デフォルトの名無しさん
NGNG0042デフォルトの名無しさん
NGNGGetCharWidtn32()がWin9x環境で使えないので、代替えを探しているのですが。
テキストエディタを作っているので、GetCharFloatI()文字ごとに判定するには
速度に不安が残ります。
0043デフォルトの名無しさん
NGNG0044デフォルトの名無しさん
NGNG小数点以下を切り捨ててるからずれてくるって事なのかな?
GetTextExtentPoint(32)じゃダメなの?
004542
NGNGhttp://www.microsoft.com/japan/developer/windows/techart/FixedPitchFont.asp
これ関係って言うことでしょうかね。
起動時にGryphが存在する文字のすべての幅をテーブルに持たせておく方がいいのかもしれませんね。
0046デフォルトの名無しさん
NGNGマルチラインのエディットボックスに文字列追加するAPIあります?
SetWindowTextだと前に表示した文字列消えちゃって。。。
教えてください。
0047デフォルトの名無しさん
NGNGMFCなら知ってる。
http://www.linkclub.or.jp/~rfuji/Nmura/soft/help011.html
0048デフォルトの名無しさん
NGNG004946
NGNG大感謝です。
0050デフォルトの名無しさん
NGNG0052デフォルトの名無しさん
NGNG0053デフォルトの名無しさん
NGNG0054デフォルトの名無しさん
NGNGリッチエディットにログを表示させているのですが
追加個所に自動スクロールさせたいのです。
ただのエディットボックスなら48さんの方法で出来るのですが
リッチエディットでは、うんともすんとも言いません。
どなたか教えてください。お願いします。
0055sage
NGNGCOBOLとどっちがセールスエンジニアになりやすいのですか?
0056デフォルトの名無しさん
NGNG0057プログラミングは楽しい
NGNGそのウィンドウを終了させたら、Access Violationだと。
デバッグしてみたら、新しくつくった方のウィンドウを終了してるとこまではいいだけど、
call命令読んでる(元の親ウィンドウへ戻ろうと?)とこで、ストップしてます。
賢いプログラマーの方々、この辺の原理と対処法をお教えください。
0058デフォルトの名無しさん
NGNG0059デフォルトの名無しさん
NGNGEM_SCROLLCARETか、EM_LINESCROLLは?
0060デフォルトの名無しさん
NGNG0061デフォルトの名無しさん
NGNGユニークじゃないとだめですか?
もしそうならどうやればユニークになるんでしょ
0062デフォルトの名無しさん
NGNGシステムが用意してるクラス名&自分が登録した他のクラス名と衝突しなければ、どんな名前でも良いよ。
006354
NGNGEM_SCROLLCARETで出来ました。
0064デフォルトの名無しさん
NGNG98以降なら使えるぞ
0065デフォルトの名無しさん
NGNGは?
0066デフォルトの名無しさん
NGNGhttp://msdn.microsoft.com/library/en-us/dllproc/prothred_548i.asp
> Windows NT/2000/XP: Included in Windows NT 3.51 SP3 and later.
> Windows 95/98/Me: Included in Windows 98 and later.
なんでいちいち馬鹿丁寧に書いてやらないと
教えてクンにこっちが煽られるかね。
うんざりだ。
0067デフォルトの名無しさん
NGNG手元にある日本語解説が98だめって書いてあったので
0068デフォルトの名無しさん
NGNGESCやTABを押すとBeepが鳴ってうるさいので、これを無効化する方法はないでしょうか?
ダイアログに貼り付けている訳じゃないので、IsDialogMessage()でチェックすることはできません。
0069デフォルトの名無しさん
NGNGユーザーはほとんど知らずに「同じWindowsじゃないか!」と
怒鳴ってくるからタチが悪い…
0070デフォルトの名無しさん
NGNG微妙な違いくらい吸収しないで偉そうにしてるんじゃねぇ!
0071デフォルトの名無しさん
NGNGサブクラス化してWM_KEYDOWN, WM_CHAR, WM_KEYUPでキーコードをNULLにすれば?
0072デフォルトの名無しさん
NGNG0073デフォルトの名無しさん
NGNGそんなことしたらEDITボックスに文字が入力されなくなる。
0074デフォルトの名無しさん
NGNGクレームの例だと思われ。
0076デフォルトの名無しさん
NGNGあ・・・本気でボケてました。
ありがとう(汗
0077デフォルトの名無しさん
NGNGサンプルなどがあるサイトはありませんでしょうか?
0079デフォルトの名無しさん
NGNG完璧です。どうもありがとうございました。
0080デフォルトの名無しさん
NGNG戻り値などのブール値は、
BOOL(4Byte)
bool(1Byte)
どちら使ってますか?
0081デフォルトの名無しさん
NGNGstd::vector<BOOL>とstd::vector<bool>の違いがわかってればBOOLなんか使わないはず
0082ServiceMain
NGNG>>12
ATL COMウィザードで作るのが一番簡単。
もっと詳しく知りたければ、マーシャルブレイン著の
「Win32システムサービスプログラミング」 第9章
あたりを読んだらよいと思います。
最近Windows2000用の改訂版が出たはず。
0083デフォルトの名無しさん
NGNG実はわからん。
BOOLはtrue,false以外の値も取り得るってことかな?
0084デフォルトの名無しさん
NGNG>BOOLはtrue,false以外の値も取り得るってことかな?
ブールさんに怒られるぞ・・・。
0085デフォルトの名無しさん
NGNGvcでのboolはcharと同じサイズの組み込み型。
0086デフォルトの名無しさん
NGNGExitWindowsEx()でできます?
0087デフォルトの名無しさん
NGNG0088デフォルトの名無しさん
NGNG試したことないけど
0089デフォルトの名無しさん
NGNG結局型がちがうってことね。キャストすれば何とか受けれると。
0090デフォルトの名無しさん
NGNG内部できちんと1ビット扱いされてるってことでわ?
0091デフォルトの名無しさん
NGNGboolは0か1しか受け取れない、という事が重要。
bool b=3; // b==1
0092デフォルトの名無しさん
NGNGえ、そうなの?
0093デフォルトの名無しさん
NGNGWindows2000で、MMCの「サービス」を開いたまま、DeleteServiceを行っても、
レジストリからそのサービスのキーが消えません。
で、「サービス」を開いたまま、このサービスを再度インストールしようとすると、
レジストリが消えてないせいか、サービスがインストールされていることになってしまいます
(つまり、OpenServiceに成功してしまうということです)。
私のプログラムでは、古い同名のサービスが存在すると、削除してからインストールするようにしているので、
DeleteServiceのところで、997エラーが発生してしまいます。
この現象ってサービスプログラミングの世界では、常識なことなのでしょうか?
また、対処法ってあるんでしょうか?
0094デフォルトの名無しさん
NGNGそーだよ・・・って実装に依るけど
0095デフォルトの名無しさん
NGNG実装による……って、boolってVCオンリーの組み込みだと思ってた
うわ〜恥ずかしい
>>93
SCMでサービスを停止できるはずです。
具体的にはSetServiceStatusでSERVICE_STOPPEDにすればいいはず
(確認してません。あと本当に終了したかチェックする必要もあるのかな?)
(本当に終了したかのチェックは多分いりませんね)
その後、改めてDeleteServiceをすればいいんじゃないでしょうか?
まったくの勘違いレスだったらごめんなさい。
0096デフォルトの名無しさん
NGNGどうもです。
サービスは停止していても起動していても関係ないです。
(現状ではご指摘の方法でとめています)。
少し説明不足でした。
DeleteServiceでサービスを削除したあと、MMCでF5を押します。
サービス名が消えると思いきや、なぜか「無効」になります。
で、この状態の時、OpenServiceは成功し、DeleteServiceは977エラーになります。
009795
NGNG素直にMMCを閉じてDeleteしたような……
恐らくMMCがハンドルを開いているので削除できないのだと思いますが全くの憶測です。
強制的にサービスのハンドルを削除する方法があれば何とかなるかもしれませんが、
すみませんが私の知識では解決策は提供できません。
009895
NGNGQueryServiceLockStatusでロック状態を取得できるようなので、
自分自身のサービスをロックしているハンドルを片っ端から
UnlockServiceDatabaseで解除していくのはどうでしょうか?
確認せずに憶測だけで申し訳ない
009993
NGNG>>97
なるほど。レジストリの削除をちゃんとやってくれるか不安ですが、
明日にでも試してみます。
ありがとうございました。
010193
NGNG>100!
しもた(w
> >>99
> レジストリの削除は、DeleteServiceさえ成功したら必ず行われているはずですよね?
> エラーコードを返さなくなったら大丈夫のはずです。
と思いきや、上にも書きましたが、MMCを閉じるまでは消えないんですよ。
regsvrで何度もF5連打しましたがだめでした。
ちなみにXPではこの問題は解決してるみたいです。NT4.0では未確認です。
010299
NGNGあ、なぜか最初のDeleteServiceは成功してしまっているのですか?なるほど。
なんか過去の記憶がよみがえってきました。私の場合は確か、
(MMC開いた状態)
DeleteService→成功
CreateService→失敗
(MMC閉じる)
CreateService→成功
でした。なるほど、あの時実はDeleteServiceが成功していなかったのか。
CreateServiceのエラーコードはチェックしなかったと思います。
また根拠のない推論ですが、DeleteServiceはとりあえず成功を返して、
全てのハンドルが閉じられた時にはじめてレジストリから情報を消しているのでは?
だから、一度MMCを閉じた瞬間にDeleteServiceが完遂され、次にCreateServiceを実行した時
うまくインストールできたのかも……。
寝ます(笑)
010393
NGNG> あ、なぜか最初のDeleteServiceは成功してしまっているのですか?なるほど。
> でした。なるほど、あの時実はDeleteServiceが成功していなかったのか。
ほほ同じ状態みたいですね。
> また根拠のない推論ですが、DeleteServiceはとりあえず成功を返して、
> 全てのハンドルが閉じられた時にはじめてレジストリから情報を消しているのでは?
そう。私もそうじゃないかな?と思ってます。
> 寝ます(笑)
おやすみなさいませ。
010499
NGNG>DeleteService 関数はサービスに、サービス制御マネージャのデータベースから削除するための
>マークを付けます。CloseServiceHandle 関数を呼び出して、このサービスの開いているすべての
>ハンドルを閉じ、サービスが動作していない状態になるまでは、このデータベースエントリは削除されません。
というわけで、>>102の推論は当たりでした。
確実に削除したい場合は、
・DeleteServiceを呼び出す。
・再起動を促す
・CreateServiceを呼び出す。
しか方法は無いですね
(途中で終了できないサービスも中にはあるので、その場合はWindowsを落とすしかない)
しかし、恐らく
・サービスを止める。
・DeleteServiceを呼びだす
・QueryServiceLockStatusで列挙したロックハンドルを全てUnlockServiceDatabaseする
で確実に削除できるでしょう。よろしければ、これをやってみた報告を頼みます>>93さん
010593
NGNG>というか、MSDNにそのものの記述がありました。憶測で物を言う前に調べろよ<俺
わざわざありがとうございます。
> しかし、恐らく
> ・サービスを止める。
> ・DeleteServiceを呼びだす
> ・QueryServiceLockStatusで列挙したロックハンドルを全てUnlockServiceDatabaseする
> で確実に削除できるでしょう。よろしければ、これをやってみた報告を頼みます>>93さん
ちょっとこれからやってみてみます。今夜中には報告できるかと・・・
010693
NGNG010799
NGNGhttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/services_1jg3.asp
自宅にWindows2000Serverがあれば自分でチェックできるんですけど、
悲しいかなProfessionalしか無くて……
面倒なら無理に報告して頂かなくても結構ですよ〜ごめんなさいね。
0108デフォルトの名無しさん
NGNGWM_MOUSEWHEELに応答してスクロールさせると、
今度はIntelliPointが入った環境で通常の倍の量スクロールしてしまいます。
どのように解決するのがいいのでしょうか?
010993
NGNGちょっと別の問題も発生してるし・・・
0110デフォルトの名無しさん
NGNGインテリポイントが入っているかどうかを調べて、
入っていたらスクロール量を半分にする。
0111デフォルトの名無しさん
NGNG言うのは簡単だな。
0112108
NGNGWM_MOUSEWHEELで自前スクロールをすると、
その後WM_VSCROLLが送られてきちゃうので、
自分自身にWM_VSCROLLをPostすると、IntelliPoint側で認識して、
スクロールメッセージを生成しないようです。
0113デフォルトの名無しさん
NGNG通りすがりですが、自分もいつだかサービス扱ったときに
DeleteService したときはコンパネ、もとい管理コンソールを
一度閉じて開きなおしていたような気がする。
それで消えたのを見て、別に疑問も持たず、「よしよし」と
作業していたような気が・・・ アホなので悩みが少なくて良かった
0114デフォルトの名無しさん
NGNGVisualC++6.0SEでWin32プログラミングはじめたんですが、
ウインドウにメニューをつけることができません。
一応本に書いてあったとおり、WindowクラスのlpszMenuNameに
メニューのID名入れたんですが、メニューが表示されません。
メニューリソースはVCのリソースエディタで作りました。
IDがダブっていたり、ID名を間違えていたり、ヘッダをインクルード
してないということはありませんです。
なにかやり方間違ってますか?
0115デフォルトの名無しさん
NGNGMAKEINTRESOURCE
0116デフォルトの名無しさん
NGNG???.lpszMenuName = (LPCSTR)リソース名;
てな感じになってるか?
0117デフォルトの名無しさん
NGNGおー!簡単にいけた!
そんなのがあったとは知らん買ったよ!
サンクスコ!
0119デフォルトの名無しさん
NGNGチェックしたいのですが良い方法は無いでしょうか?
GetVolumeInfomationなどを使うと、
挿入しろというMessageBoxが出てしまうので避けたいのですが・・・。
0120デフォルトの名無しさん
NGNG(1)馴れ合い禁止。(一人で来る事。同伴禁止:いても知らぬ顔)
(2)「大盛りねぎだくギョク」を頼むこと。(並盛りねぎだくギョクも可)
(3)各会場ごとに指定時間厳守で現地集合。
(4)食ったら即帰る。
注)吉野家は家に帰るまでが吉野家です。
http://ex.2ch.net/test/read.cgi/entrance/1017935504/l50
http://www2.mnx.jp/carvancle/yoshigyu/ スレよりぬき等
0121デフォルトの名無しさん
NGNG0122デフォルトの名無しさん
NGNG普段 Java 使いで、たいした知識も無く JNI を無理してやってる愚か者です。
DocumentProperties を使いたいのですが、
現状態を取得すると、static な構造体配列を壊してしまいます。
static PRINTER_INFO_2 prninfo[10] ←別関数で取得済み
関数 {
HANDLE phnd;
/* サイズ取得 */
DWORD dwNeeded = ::DocumentProperties(
NULL, phnd, prninfo[target].pPrinterName, NULL, NULL, 0
);
DEVMODE *lpdata = (DEVMODE *)::malloc(dwNeeded);
/* 取り出し */
::DocumentProperties(
NULL, phnd, prninfo[target].pPrinterName, lpdata, NULL,
DM_OUT_BUFFER
);
/* 変更 */
(以下略)
}
取り出しの直後で、prninfo の最後の要素の構造体(4個取得済みなら4個め)が壊れています。
ここを通過するたび、丁寧に一こずつ壊していきます。
というかそもそもポインタ型の宣言やら代入やらキャストやら malloc やらを
大間違いしているような気もするのですが、
ひと目で「おかしい」とか「不備がある」とかいうところはありますでしょうか?
何卒ご教授願います。
0123122
NGNG壊れているのは、prninfo[target].pPrinterName の参照先でした
0124122
NGNGEnumPrinters で取ったプリンタ名は、
いつまでもとっておいてもらえないという解釈でいいのでしょうか。。。
0125
NGNGモードレスダイアログを作成するAPIはないでしょうか?
0126デフォルトの名無しさん
NGNGんなこたーない。
>>125
自分でダイアログ作れば?
0127デフォルトの名無しさん
NGNG最初の引数(親ウィンドウ)の指定をNULLにする。
0128デフォルトの名無しさん
NGNGそんなことしても OK とか押すまで処理が戻ってこないじゃん
普通 modeless dialog box は CreateDialog〜() 関数で作る
012993
NGNG結論からゆうとうまくいかないです。
DeleteServiceの後に、以下のような処理をいれてhSCMのロック状態を見てみたんですが、
ロックは外れてるようです。残念。
if (!QueryServiceLockStatus( hSCM, lpqslsBuf, sizeof(QUERY_SERVICE_LOCK_STATUS)+256, &dwBytesNeeded) )
{ MessageBox(NULL, _T("QueryServiceLockStatus"), m_szServiceName, MB_OK);exit(1); }
if (lpqslsBuf->fIsLocked)
{}
else
{}
013093
NGNGQueryServiceLockStatusってSCMのロック状態がわかるけど、そのハンドルまではとれないのでは?
状況をまとめると、
0. MMC立ち上げ
1.install
2.start
3.stop
4.uninstall
5.MMC F5->状態「無効」。MMCがサービスをつかんだままなので、
データベースエントリから完全に消えない。
6.remove -> サービスがまだあるので、DeleteServiceが行われ、そこでエラー
7.MMC 終了-> データベースエントリからサービスが削除。
8.remove -> 成功
ちゅうことですね。他のプロセスが自分を握ってることをどうやって知ればいいんだ?
ってことですね。
0131けん
NGNGダウンロードするファイルのサイズを取得する方法がわかりません。
どなたか教えていただけませんか?
0132デフォルトの名無しさん
NGNGCONTENT-LENGTH送ってくるから。
0133デフォルトの名無しさん
NGNGいかにも自分でプログラミングしたって言う自己満足感が得られる。
0134けん
NGNGすいません詳しく教えていただけませんか?
013599
NGNGご苦労様でした。
とすると、再起動以外方法無しという事になりますか。
自分自身の中に自殺コードを入れても、ハンドルは別管理だから
どうしようもないですよね……
ありがとうございました。
0136デフォルトの名無しさん
NGNG予想される返答1: RFC嫁。
予想される返答2: こんにちはスレ違いですさようなら。
0137デフォルトの名無しさん
NGNGよく、マウスをジョイスティックでエミュレートするソフトってありますよね。
その逆で、ジョイスティックをマウスでエミュレートするには、どうすれば
いいでしょうか?
現状では、winmm.dllに成りすまし、joyGetPos等をフックする(その他の
APIはオリジナルのwinmm.dllにスルーする)という方法でやっているのですが、
Windowsの流儀には反しているように思います。それに、特定のソフトでしか
動きません。
何か簡単な方法はないでしょうか? やっぱりWDMドライバ書かないとダメ
でしょうか? あんまりカーネルさんと仲良くないのですが。。。
0138デフォルトの名無しさん
NGNGあとは、NumegaのDriverStudioあたりに使いやすいクラスライブラリもついてくる。
0140けん
NGNGよくわかりました!ありがとうございました!
0141125
NGNGやっぱり、自分でダイアログ作るしかないですか?
やってみます。
0142デフォルトの名無しさん
NGNG014393
NGNG> ご苦労様でした。
> とすると、再起動以外方法無しという事になりますか。
今のところそれ以外ないですね。お付き合いありがとうございました。
(野蛮に、iisreset /rebootかなぁ)
0144幼女
NGNGSetWindowWord()で設定すると同じウィンドウクラスを持つウィンドウ全部の
アイコンが変更されて困るれす。
ウィンドウ毎にウィンドウクラスを登録するのは止めたいので
その他の方法で何とかならないれすか。
0145デフォルトの名無しさん
NGNG35歳のおっさんが幼女とか言うとキモイので教えません。
0146幼女
NGNG0147デフォルトの名無しさん
NGNG自前で描け。
WM_NCPAINT捕まえればできる
0148幼女
NGNGクローズボックスとかもれすか…。
めんどくないれすかそれって〜〜〜〜
0149デフォルトの名無しさん
NGNG0150幼女
NGNGちょっと今は開発環境がないので
明日確認してみるれす。
ありがとうれす。
0151デフォルトの名無しさん
NGNGそれってダイアログだろ
0152名無しさん@Meadow
NGNGWindows終了時の SERVICE_SHUTDOWN に合わせて処理を行おうとしています。
shutdownかrebootかによって処理を分けたい(shutdownの時だけ処理したい)のですが、
EWX_REBOOT/EWX_SHUTDOWNのどちらで終了しているのかサービス中から知る方法
無いでしょうか?
0153デフォルトの名無しさん
NGNGこれって何ですかね?
ヘルプに乗ってないみたいなんですけど。
少なくとも
IMN_SETOPENSTATUS IMN_OPENCANDIDATE IMN_CHANGECANDIDATE IMN_CLOSECANDIDATE
IMN_SETCANDIDATEPOS IMN_SETCOMPOSITIONFONT IMN_CLOSESTATUSWINDOW IMN_SETCOMPOSITIONWINDOW
IMN_GUIDELINE IMN_SETCONVERSIONMODE IMN_OPENSTATUSWINDOW IMN_SETSENTENCEMODE IMN_SETSTATUSWINDOWPOS IMN_PRIVATE
以外の何かなのですが…。
Windows 2000 + MS-IME2000 で確認しました。
ご存知の方いらっしゃったら教えてください。
0154デフォルトの名無しさん
NGNGIMN_PRIVATE | something ってことで、IME側が私用領域として
使ってるんではなかろうかね。
0155デフォルトの名無しさん
NGNG「名前」か「デバイス名」を指定して、
イーサネットアダプタのMACアドレスを取得したいんですけど
如何すれば良いんでしょう?
NetBios()関数を使用して取得するまでは巧く逝ったんですが、
上記の条件を満たす方法がまったくわかりません。
ご存知の方、よろしくお願いします。m(_ _)m
0156デフォルトの名無しさん
NGNGフォルダーを開く関数は多分COMだと思うんですけど、こころ
あたりありますか?
0157デフォルトの名無しさん
NGNGShellExecuteでフォルダパス渡せば開けるけど
0158デフォルトの名無しさん
NGNG0159デフォルトの名無しさん
NGNGShellExecuteって一番直接的なのかな、、。
0160デフォルトの名無しさん
NGNGCoCreateInstance〜Releaseまで、思いっきり煩雑じゃん
0161デフォルトの名無しさん
NGNG開くのが少し遅めだからできるだけ速い
基本的な関数を使いたいのだ・・・・・
0162デフォルトの名無しさん
NGNG0163デフォルトの名無しさん
NGNG0164デフォルトの名無しさん
NGNG0165デフォルトの名無しさん
NGNGHKEY_CLASSES_ROOT\Folder\shell\open\ddeexec
0166デフォルトの名無しさん
NGNGXPでの話しなんですが、以下のようにあるプロセスがMutexを握っている間は
他のプロセスは無限待ちをするようなプログラムを作ったんですが、
void CTest::lock()
{
m_hMutex = ::OpenMutex(MUTEX_ALL_ACCESS, FALSE, "Mutex");
if( m_hMutex == NULL )
{
m_hMutex = ::CreateMutex(NULL, TRUE, "Mutex");
cout << "System Locking...";
return;
}
cout << "Waiting For Locking...";
WaitForSingleObject(m_hMutex, INFINITE);
cout << "System Locking.....";
}
Aというユーザでプロセスを実行中なのに、Bというユーザでは上記OpenMutexのところをするっと
抜けてしまい、CreateMutexのところに入ってしまいます。
ユーザが違うと、Mutexの空間も別のものになってしまうのでしょうか?
0167デフォルトの名無しさん
NGNGちなみに OpenMutex() が NULL を返してきたときの GetLastError() は
どうなってる?
なんとなく、アクセス権がらみ何じゃないかっつー気がするんだが。
0168166
NGNGA:Mutex作成者、B:後からOpenする人です。それぞれのAPIの直後にログを入れました。
1:A、BともにAdministratorグループ->排他成功
OpenMutex:<0>この操作を正しく終了しました。
Waiting For Locking...
2:A:Admin、B:Users ->排他失敗
OpenMutex:<0>この操作を正しく終了しました。
CreateMutex:<183>既に存在するファイルを作成することはできません。
---2回目以降(多分エラーが更新されてない?)---
OpenMutex:<183>既に存在するファイルを作成することはできません。
CreateMutex:<183>既に存在するファイルを作成することはできません。
ちなみに2のエラーは最初にAがMutex作るときに出るエラーとまったく同じみたいです。
0169166
NGNGよくはわからないけど、確かにアクセス権っぽいですねぇ。
A:Admin、B:System ->排他
A:Admin、B:User ->突破
A:User、B:System ->突破
こまったですねぇ。
0170デフォルトの名無しさん
NGNGそりゃあんた、Admin がディフォルトで作成した、オブジェクトを
普通のユーザーが全部の権限よこせって言って開いたら、普通はねら
れるよ。
ちなみに、OpenMutex() で (多分 Mutex がないから) エラーになった
ら、CreateMutex() するというなら、素直に最初から CreateMutex()
したほうがいいと思うよ。Mutex 使うぐらいなら、理解できると思うけど
OpenMutex() と CreateMutex() の間だって隙間あるんだしね。
0171デフォルトの名無しさん
NGNG2重起動防止じゃないんだから。
Openに失敗したら一定時間SleepするなりWaitFor〜するなりするんだろ。
0172166
NGNG> そりゃあんた、Admin がディフォルトで作成した、オブジェクトを
> 普通のユーザーが全部の権限よこせって言って開いたら、普通はねられるよ。
自分なりに噛み砕くと、要はCreateMutexのLPSECURITY_ATTRIBUTESのところを
ちゃんとかけっちゅうことですね。
95系列のサンプルにひきづられてしまった・・・
> OpenMutex() と CreateMutex() の間だって隙間あるんだしね。
おっしゃるとおりで。何でこんなコードにしちゃったんだろ・・・
0173166
NGNG混乱してきました。えーと、
1.Openしてないか確認する。
2−2.ないのでCreateする。
2−2.あったので開放されるのを待つ。
1.2の間で別のプロセスがはいってきた場合、
A1、B1、A2、B2
でB2がエラーになる -> 2.でもう一度ちゃんとつくれたか確認しなきゃだめ
=>だったら最初から1で作ったほうがよい。
よしよし。
CreateMutexは、
>> 関数が成功すると、ミューテックスオブジェクトのハンドルが返ります。このとき、
>>GetLastError 関数は、指定したミューテックスオブジェクトが既存であれば
>>ERROR_ALREADY_EXISTS を、そうでなければ 0 を返します。
ということでどっちにしろハンドルはくれるみたいなので、
ERROR_ALREADY_EXISTSかどうかを判定するってことかな。
0174166
NGNGどのサンプル見てもNULLつっこんでるだけだし・・・
0175幼女
NGNGすごいれす。
できたれす。
ありがとれす。
0176幼女
NGNG0177デフォルトの名無しさん
NGNGmutexの名前がグローバルスコープを持ってないんじゃない?
MSDNのCreateMutex参照
0178デフォルトの名無しさん
NGNGフォルダオプションのところで設定されてるので、何らかの方法で可能だとは思うのですが。
0179APIをはじめたばかりです先行者ご指導ください
NGNG一応、私、ソースを書いたのですがそのアプリケーションは起動してくれません;;
下にそのソースを載せておきますので知ってる方はどこが間違いなのか教えて下さい
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
//ウィンドーズデフォルトゲーム「マインスイーパー」の起動ソフト
#include <Windows.h>
void main()
{
//CreateFile関数の使用一連作業
//変数の宣言
LPCTSTR FileName_0 ;
DWORD AccessType_0 ;
DWORD Mode_0 ;
LPSECURITY_ATTRIBUTES KiSyou_0 ;
DWORD Disposition_0 ;
DWORD Flag_0 ;
HANDLE Template_0 ;
//変数の生成
FileName_0 = "C:\WINDOWS\WINMINE.EXE" ;
AccessType_0 = GENERIC_READ,GENERIC_WRITE ;
Mode_0 = FILE_SHARE_WRITE,FILE_SHARE_READ ;
KiSyou_0 = NULL ;
Disposition_0= CREATE_ALWAYS ;
Flag_0 = FILE_ATTRIBUTE_NORMAL ;
Template_0 = NULL ;
//関数の生成
CreateFile (
FileName_0,
AccessType_0,
Mode_0,
KiSyou_0,
Disposition_0,
Flag_0,
Template_0
);
}
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
よろしくお願いします
0180デフォルトの名無しさん
NGNGCreateFile ってその名の通り「ファイルを作る」関数なんだから…。
アプリを実行するなら WinExec とか CreateProcess とか ShellExecute とか。
ファイルを(関連づけに従って)開きたいなら ShellExecute とか。
ファイルを(自分のソフトから読むために)開きたいなら CreateFile で問題なし。
あとどーでもいいがそのソース、変数やら関数を生成してるようには見えんぞ。
0181デフォルトの名無しさん
NGNG> AccessType_0 = GENERIC_READ,GENERIC_WRITE ;
あのー…
0182ACCS告訴断念
NGNGhttp://www.namikare.to/cgi-bin/nami.cgi
良かったな
チャンコロども
http://www.accsjp.or.jp/topics/020403.html
0183デフォルトの名無しさん
NGNGズバリこれでしょう
WinExec("C:\WINDOWS\WINMINE.EXE", SW_SHOW);
{マイクロソフト談:Win32 アプリケーションでは、WinExec 関数ではなく、
CreateProcess 関数を使ってください。}
知るかボケ
0184デフォルトの名無しさん
NGNG\\
……って179から間違えてるのか。
0185166
NGNGそれから、
>>177
> mutexの名前がグローバルスコープを持ってないんじゃない?
> MSDNのCreateMutex参照
MSDNをみたら確かにありました。ありがとうございました。
#うちのローカルのMSDNはえらい古い・・・
で、Globalにしたら、「ユーザの切り替え」でユーザ画面を切り替えてもMutexが有効に
なるようになりました。Terminal Serviceを使ってないときはちゃんとGlobalの部分は
無視されるみたいです。以下関連部分のソースです。
pacl = NULL;
SetSecurityDescriptorDacl(&sd,TRUE, pacl, FALSE);
sa.nLength = sizeof(SECURITY_ATTRIBUTES);
sa.bInheritHandle = FALSE;
sa.lpSecurityDescriptor = &sd;
m_hMutex = ::CreateMutex(&sa, TRUE, "Global\\MyMutex");
0186デフォルトの名無しさん
NGNGMutexの罠に陥ってるんだよな。
一度でもOutputDebugStringしたことのある
Administratorのプロセスやサービスが生きてる限り、
一般ユーザーのプロセスからはOutputDebugStringできないし
(ERROR_ACCESS_DENIEDになる)DBMonも正常に動かない。
0187デフォルトの名無しさん
NGNG0188デフォルトの名無しさん
NGNGAddCounterでカウンタを複数追加した場合に、
追加したカウンタに対応するデータを纏めて取得する方法を知りませんか?
ご存知の方、よろしくお願いします。m(_ _)m
// こんな感じで追加してます。
HQUERY hQuery;
HCOUNTER hCounter;
PdhOpenQuery(NULL, 0, &hQuery);
for(i=0;i<4;i++){
PdhAddCounter(hQuery, szPath, 0, &hCounter); // szPathは任意のカウンタパスです
}
PdhCollectQueryData(hQuery);
// 取得
PdhCloseQuery(hQuery);
カウンタのデータを1個ずつ取得するのは出来るんですが...
纏めて取得出来ないと効率が悪すぎますので...
0190デフォルトの名無しさん
NGNG参考のために、たとえばどんなプロセスがOutputDebugStringつかってるの?
0191デフォルトの名無しさん
NGNG0192デフォルトの名無しさん
NGNGウイルスバスター98(体験版)のシェルエクステンションが入ったexplorer。
それも、MSのサンプルと同じメッセージ。以前、自前のシェルエクステンションの
デバッグしてるとき同じメッセージが出力されるんでワラタ。
今はどうか知らんけど。
0193デフォルトの名無しさん
NGNGどうしたらいいのでしょうか。
0194デフォルトの名無しさん
NGNG以前、便利なAPIを見た記憶があるんですけど思い出せない。
0195デフォルトの名無しさん
NGNGEnumDisplayDevices EnumDisplaySettings GetDeviceCaps 辺り
0196デフォルトの名無しさん
NGNGStringFromGUID2 ?
0197デフォルトの名無しさん
NGNG0198デフォルトの名無しさん
NGNGいや、それ以前にPCのシリアルチップだと
BSC手順の通信はできないだろ、違ったか?
専用のI/Fボード、モデムと、それに付いて
きたライブラリでやったよ、漏れの時は。
0199デフォルトの名無しさん
NGNGINVALID_HANDLE_VALUEだったりNULLだったりするのですが、
この辺のガイドラインってどこかにないですか?
0200デフォルトの名無しさん
NGNG0201デフォルトの名無しさん
NGNGサンクス。やっぱり普通のPCじゃ無理なのねー
0202デフォルトの名無しさん
NGNG0203デフォルトの名無しさん
NGNG0204デフォルトの名無しさん
NGNG0205デフォルトの名無しさん
NGNGWindowsのservicesファイルからポート番号を取得しようと思い、
getservbyname()というAPIの使用を考えています。
このgetservbyname()を使用するには、前処理としてWSAStartup()
を呼ぶ必要があるらしいのですが、
例)
WSADATA wsa_data;
if( WSAStartup( MAKEWORD( 1, 1 ), &wsa_data ) != 0 ){
// ソケットの初期化に失敗
}
ここでWSAStartup()を呼ぶ前に、ソケットの情報を取得しているらしい変数(?)、
wsa_dataを初期化する必要は無いんでしょうか?
どなたかお知恵をお貸しください。
0206デフォルトの名無しさん
NGNGネタか?
*WSAStartupで* 初期化される。
0207デフォルトの名無しさん
NGNGAPIで用意されている構造体は一般にAPIの初期化関数で、
呼び出されたAPIがその構造体を初期化して返すという仕様です。
一部、最初のメンバ変数に自分自身のサイズを指定する奴もあります。
マジレスカコワルイ
0209デフォルトの名無しさん
NGNGポップアップメニューを表示させるにはどうすればよいのでしょうか?
プロパティシートのプロージャのWM_RBUTTONUPで処理させてみましたが
リストビューの外でしかメニューは表示されませんでした。
0210デフォルトの名無しさん
NGNG強引な気もしますがマウスのウィンドウ座標をスクリーン座標に変換して
TrackPoupupMenuで表示させるのはどうでしょう。(MFCでスレ違いですが)
void CVideoLabView::OnRButtonUp(UINT nFlags, CPoint point) {
RECT rectWnd;
GetWindowRect( & rectWnd );
m_menuPopUp.TrackPopupMenu( TPM_LEFTALIGN | TPM_RIGHTBUTTON,
point.x + rectWnd.left, point.y + rectWnd.top, pWnd );
//m_menuPouUpは初期化済みCMenuオブジェクト
//pWndはowner window(CxxxListView * ?)
0211デフォルトの名無しさん
NGNGstatic void CALLBACK TimerProc(UINT uID, UINT msg, DWORD dwUser, DWORD dw1, DWORD dw2)
の第一引数と第三引数をどのように使い分けるのか悩んでいます。
uIDがtimeSetEventの戻り値で、dwUserがtimeSetEventの第四引数ということを調べたのですが、
CALLBACK関数の中ではどちらを使ってタイマーの識別をするのでしょうか?
また、2つもタイマーを識別できる値があることにどのような意味があるのでしょうか?
0212デフォルトの名無しさん
NGNG識別用に使うのは uID。 ID=識別子。
dwUserは、ユーザーが自分の好きなデータを入れるところ。
例えば構造体とかクラスのポインタをDWORDにキャストして
入れといて、TimerProcの中で使うとか。
まぁ、使いたければ別に識別に使ってもいいとは思うけど。
0213211
NGNG色々なサイトを回ってもHWNDを入れていたり、1を入れていたりしていて
こんがらがっていたのですが、そういう様に使う物だったんですね。
ご丁寧にありがとうございました。
0214デフォルトの名無しさん
NGNGASPがNothingで開放した後でも、しばらくの間COM自体はプロセスとして残ってしまって
いるようなんです。
これをASP(呼び出し側のプロセス)が終了したと同時にCOM(dll)も終了するようにしたいんですが、
そんなことってできるんでしょうか?
0215デフォルトの名無しさん
NGNGキャッシュ効率を高めるために残しているのでは?
0216デフォルトの名無しさん
NGNGそうかもしれないですね。
IISがキャッシュしてるのか、COMの仕組みがそうしてるのかで対処がかわってきますね。
COMかなぁ?
0217デフォルトの名無しさん
NGNGIIS5.0のヘルプにそういうことが書いてあったはず。
0218デフォルトの名無しさん
NGNG::CreateFile(name,GENERIC_READ | GENERIC_WRITE,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
0219デフォルトの名無しさん
NGNG0220218
NGNG1.1回目 GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ
2回目
1 GENERIC_READ, FILE_SHARE_READ => 失敗
2 GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE => 成功
3 GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ =>失敗
4 GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE => 失敗
2.1回目 GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE
2回目
1 GENERIC_READ, FILE_SHARE_READ => 失敗
2 GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE => 成功
3 GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ =>失敗
4 GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE => 成功
実験結果は上記のようになったのですが、
1-2の結果がどうしても納得いきません。
どうして読みとりアクセスで、FILE_SHARE_WRITEを指定する必要があるのでしょうか?
0221218
NGNGFILE_SHARE_READを指定しないと開けないようなのですが、
MSDNには共有フラグはそれ以降のCreateFileに影響するフラグのような事を書いてあるのですが、
以前に開かれた時の状況も影響する(?)んでしょうか。
0222218
NGNGFILE_SHARE_READ|FILE_SHARE_WRITE
0223デフォルトの名無しさん
NGNGFILE_SHARE_WRTIEを指定しない、ということは、
「ほかのスレッド/プロセスに、書き込まれたくない」、という意思表示。
そして、1-2では、すでに、GENERIC_WRITEで開かれたハンドルが存在する。
つまり、「ほかのスレッド/プロセスに書き込まれる可能性がある」
というわけで、開くのに失敗するわけだよ。わかるかね?
0224218
NGNG自分のアプリで(Readのみ許可で)ファイルを開いていると、
他アプリからファイルを開くことができない状況が多くあるんですが、
これを回避したいんです。
WRITE許可をすることといちいちハンドルを閉じるのだけは避けたいのですが。
0225218
NGNGあ、理解できました。
これ以降、オブジェクトを操作したとき〜 と書いてあったので、
時間軸上で後に開いたファイルに対するフラグだと思ってました。
自分以外というふうに読み替えるわけですね。
0226214
NGNGやはりそうでしたか。
とういうことは、ASPの中からキャッシュする時間を短くするような設定をしてやらなきゃだめかな?
0227デフォルトの名無しさん
NGNGそれとも特権モードで動作するなんらかのモジュールにいぞんしているのかどうか。
教えて下さい。お願いします。
0228デフォルトの名無しさん
NGNGUserじゃないの?
0229デフォルトの名無しさん
NGNGNT系はセキュリティチェックが入るからカーネルモードで実行される。
9xは知らん。
0230デフォルトの名無しさん
NGNGそういう場合は他アプリから開けてはいけないの。
UNLHA32に付属のドキュメントでも読め
0231デフォルトの名無しさん
NGNGどうもありがとうございます。
0233デフォルトの名無しさん
NGNG動作状況の送受信バイト数を取得するAPIはありますか?
0234デフォルトの名無しさん
NGNG9xならレジストリからとれると思う。
ntはしらん。
0235デフォルトの名無しさん
NGNGレジストリですか?
それは思わぬところに。ありがとうございました。
0236デフォルトの名無しさん
NGNG整合性は問わないならFILE_SHARE_*全開で開けば済む話だろ。
言ってることが矛盾してる。
0238デフォルトの名無しさん
NGNG> 自分のアプリで(Readのみ許可で)ファイルを開いていると、
> 他アプリからファイルを開くことができない状況が多くあるんですが、
> これを回避したいんです。
自分で作ってるのは読み込み側、だよな。
そしたら「読み込み側での整合性は問わないって話なん」だから、
読み込み側としては、横から他に書き込まれても構わないんだろ?
だったら読み込み側では FILE_SHARE_WRITE 付きで開けっての。
0239238
NGNG自アプリが書き込み側なら、確かに FILE_SHARE_WRITE なしにすべきだ。
で、一方、他の(ビューワとか?)アプリにとっては「読み込み側で」も
「整合性を問いたい」んだろう。だから、キミのアプリが書き込んでる
最中のファイルを読み込むハメになるようなパターンはエラーで当然。
それが嫌なら他のアプリの作り手に「読み込み側はFILE_SHARE_*
全開にしとけ」とでも伝えるべし。受け入れられないと思うけど。
0240218
NGNGいや、両方作ってるんですが。
作業中にバイナリエディタ(Bz/Stirling等)で開けなかったりしてるんで。
自分のアプリで読み書き指定、Read許可でファイルを開いていると言いたかったのです
0241デフォルトの名無しさん
NGNG0242デフォルトの名無しさん
NGNGwParam
0243デフォルトの名無しさん
NGNGオープン時に更新(WRITE)モードにするのはめずらしくないんじゃないの?
それをオープン可能にするには、書きこみも許可するしかないのでは。
0244デフォルトの名無しさん
NGNGいや、まぁそうなんだけど、質問した時点では
CreateFileのフラグの説明がよくわからなかったんだけど、
>>223の人に教えてもらって納得して終了。
・・・ってはずだったんだけど、なぜか続いただけですが。
0245デフォルトの名無しさん
NGNGファイルをドラッグインした時にエディッタ―を最前面、かつアクティブ(タイトルバーが青くなる)ように
したいのですが、以下の通りやってもうまくいきません
// 最前面にもってくる
SetWindowPos(hWnd, HWND_TOP , 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
上ではうまくいかなかったので下のにしました。これでとりあえずうまく最前面に(最前面ウインドウになりっぱにならないようにNOTOPMOST)
SetWindowPos(hWnd, HWND_TOPMOST , 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
SetWindowPos(hWnd, HWND_NOTOPMOST , 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
アクティブ(タイトルバーを青く)にするために下
SetActiveWindow(hWnd);
これうまくいきません。青くなってくれないです
なにかうまいやり方はないでしょうか?
メモ帳はちゃんと実現しているのですが・・・
ご教授お願いいたします
0246デフォルトの名無しさん
NGNG0247デフォルトの名無しさん
NGNGすばやい返答ありがとうございます
その関数を参照してみました
これ1つで全てを実現できるようなので、今回はこれを使います
あとは興味になるのですが、
・何故SetWindowPos(hWnd, HWND_TOP , 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE); で最前面にいかないの?
・タイトルバーを青くする方法はこれ以外にないの?
がわかれば今後の参考にさせて頂きたいと思います。いかがでしょうか
0248デフォルトの名無しさん
NGNGそれから、Win98以降では制限あるんで、
http://techtips.belution.com/ja/vc/0012/
ここを嫁
0249デフォルトの名無しさん
NGNGタイトルバーを青くするだけならFlashWindowというのがあります
0250デフォルトの名無しさん
NGNGアプリケーションを終了する時にウインドウサイズと場所を保存しておき、
次の起動に繁栄させたいのですが、
最大化されていると最大化時のデータが保存されてしまいます(当たり前)
ShowWindowでSW_RESTOREすればいいのですが、一瞬元に戻ったウインドウが見えてしまいます
なるべくなら隠れたままor最大化のまま、通常時のサイズを取得したいのですが、なにか方法はありますでしょうか?
0251?
NGNGビットマップってウィンドウに表示させようと思うとリソースファイル作ってそれを実行プログラムに含めますよね?
そしたらどうしても実行プログラムの容量が大きくなります;;
ということで 実行プログラムにビットマップイメージを含めないで、そのプログラムのウィンドウにビットマップを
表示したかったらどうしたらいいですか?
自分なりにソース考えたのですが…うまく行きません^^;
知ってる人教えて下さいm(__)m
私のソース^^;(失敗です)
HDC dc,memDc;
HANDLE hPic;
// hwnd はビットマップを表示したいデバイスコンテキストの HWND
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
(他のソース関係ないと思うから省略)
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
hPic = LoadImage(hThisInst,"D:\\ooo\\bpp.bmp",IMAGE_BITMAP,300,200, LR_LOADFROMFILE);
dc = GetDC(hwnd);
memDc= CreateCompatibleDC(dc);
SelectObject(memDc,hPic);
BitBlt(dc,50,50,50,50,memDc,1,1,SRCCOPY);
ReleaseDC(hwnd,dc);
DeleteDC(memDc);
0252デフォルトの名無しさん
NGNGのところなんですけどhThisInst→NULLに訂正 打ち間違えましたすいません
NULLにしても成功してくれないんですけどね^^;
どうしたら 実行プログラムにビットマップイメージを含めないで、そのプログラムのウィンドウにビットマップを
表示出来るでしょうか?
0253484
NGNG作成するのでしょうか?
タスクトレーに入れるのが限界ですか?
0254デフォルトの名無しさん
NGNGどこの484ですか?
見えないウインドウを親としてウインドウを作成すれば、
タスクバーに表示されないアプリケーションが出来ます
0255デフォルトの名無しさん
NGNG最大化する時に位置などを保存するのがいいのではないですか?
これは出来るかどうかは不明ですが,非表示にしてRESTOREして
取得ってのはどうかな?これなら見えないよね。
0256デフォルトの名無しさん
NGNGGetWindowPlacementかな?
0257デフォルトの名無しさん
NGNGLoadImageのフラグに LR_CREATEDIBSECTION を追加してみたら?
0258デフォルトの名無しさん
NGNGビットマップファイルが大きくてイヤだっていうのなら圧縮しとけ。
zlibあたり使えば簡単に実装できるぞ。
0259デフォルトの名無しさん
NGNGDIB使うならBitBlt→SetDIBitかな?
>258
画像はlibpngかlibjpeg使うともっと簡単。
0260250
NGNG残念ながら最大化とかを解除するSW_は、全てウインドウをアクティブにするが付きまとうのです
そうですね。やはい最大化、最小化の前に保存しますか
助言ありがとうございました
0261デフォルトの名無しさん
NGNG(IDも知らない状態で)
0262261
NGNG0263デフォルトの名無しさん
NGNG意味が比較的不明です。
0264デフォルトの名無しさん
NGNG他アプリのステータスバーってことか?
Spy++でも使ってID調べるか、子ウィンドウを列挙して
クラス名が STATUSCLASSNAME のやつを探すかだな。
0265261
NGNGごめんなさい。
ステータスバーについての情報が全く無い状態から
そのハンドルを得るにはどうしたらいいか、という意味です。
>>264
いえ、他アプリというか、、、DLLなんで。。
>子ウィンドウを列挙してクラス名が STATUSCLASSNAME
EnumChildWindows と FindWindowEx で調べられるっぽいですね。
STATUSCLASSNAME がよく解んなかったけど、 commctrl.h の中を調べたらどういうものか解りました。
とりあえず試してみますね。有難うございます。
Spy++ の意味が解らなかった折れってDQN....... (; ´Д`)
0266261
NGNGEnumChildWindows はいらないですね。
FindWindowEx(hWnd,NULL,STATUSCLASSNAME,NULL); だけでいいんだった。
0267デフォルトの名無しさん
NGNG改行が↓ だったり、矩形選択できたりと不思議なんですが…
0268デフォルトの名無しさん
NGNG自分で書いてるソフトが多い。
0269デフォルトの名無しさん
NGNG0270デフォルトの名無しさん
NGNGなんと!すごいですね
入力を漢字変換する方法とか今の自分ではさっぱり検討がつきません…
猫でもわかるプログラミング の278章から見ればわかるかな…?
>>269
なるほど、そういう方法もありましたね〜
0271257
NGNG>DIB使うならBitBlt→SetDIBitかな?
BitBlt()で描画できる。DrawDibDraw()でもいいけど。
SetDIBits()は関係ないでしょ。
0272デフォルトの名無しさん
NGNG11,12,13のどれも崩れます(縮小・拡大される)。
0273デフォルトの名無しさん
NGNG0274デフォルトの名無しさん
NGNGスピーカやダイアルアップのアイコンをどっかのdllから佐賀せ!
0275259
NGNG失礼しました。
BitBltで描画できます。脳みそにDIB叩き込むため逝きます。
0276272
NGNG0278251
NGNGあのあといろいろ調べたら
こんなソースでいけるみたいです^^;
自分でまだ確かめてないですけど^^;
私のソースとあまり変わらないですね…やっぱりLR_CREATEDIBSECTIONこのフラグが絶対必要なのかな〜
あとDeleteObject(hBitmap);かな・
ということで確かめてきます・成功できるといいな〜
HDC hDC = NULL, hDCBitmap = NULL;
HBITMAP hBitmap = NULL;
hDC = GetDC(hWnd);
hDCBitmap = CreateCompatibleDC(hDC);
hBitmap = (HBITMAP)LoadImage(NULL, BMPのFILEのNAME, IMAGE_BITMAP,
50, 50, LR_LOADFROMFILE|LR_CREATEDIBSECTION);
SelectObject(hDCBitmap, hBitmap);
BitBlt(hDC, 1, 1, 50, 50, hDCBitmap, 0, 0, SRCCOPY);
DeleteDC(hDCBitmap);
DeleteObject(hBitmap);
ReleaseDC(hWnd, hDC);
0279デフォルトの名無しさん
NGNGグローバルマウスフックでWM_MOUSEMOVEやWM_NCMOUSEMOVEを
とらえて、LPARAMの値を変更したりしてみたのですが、
まったく変わりがありません。
前のスレで似たようなのがあったのですが、この場合、どうすれば
マウスの移動可能な範囲を制限できるのですか?
0280デフォルトの名無しさん
NGNGWM_MOUSEMOVE の LPARAM はマウス位置を「教えてくれる」だけなので、
あれをいじっても何も変わりません。
マウスの移動範囲を制限したいなら ClipCursor を使うよろし。でも乱用は禁物。
0281259
NGNGClipCursor()とかSetCursorPos()とか。
(WM_MOUSEMOVE...はマウスが移動ことをシステム→MyWndowに
通知する)
0282デフォルトの名無しさん
NGNG0283279
NGNGどうもありがとうございます。参考になりました。
早速やってみます。
0284278を見て…
NGNGそのまま クライアント領域にコピーする…すると、もしシューティングプログラムの場合で
キャラクターを表示するとしたら…(まさか ま四角のキャラはいないでしょう)後ろの背景があるなら…合わなくなるのでは?
そういう時ってどうしたら言いのでしょうか?複雑なキャラの輪郭より内側だけコピーする手はないのでしょうか?
やはりそんな都合のいい関数はないのでしょうか?だとしたらシューティングゲーム作ってる人たちどうしてるのだろうか?
知ってる先人が、おられましたら是非教えていただけないでしょうか?m(__)m
0285デフォルトの名無しさん
NGNGここの「白黒スプライト」の部分を読むべし
ttp://homepage1.nifty.com/CavalierLab/lab/win/transparent.html
0286284
NGNGありがとうございます
なるほどAND演算とOR演算はの意味がやっと分かりました
0287なるほど
NGNG実は僕も知りませんでした^^;
ありがとう
0288デフォルトの名無しさん
NGNG0289デフォルトの名無しさん
NGNGインスタンス化して使うことってできるんでしょうか?
MyCom.Aaa->CAaa
MyCom.Bbb->CBbb
で、CAaaの中で、CBbbをインスタンス化できないもんかと。
なんとなく、かなり無理なような気がしますが・・
0290デフォルトの名無しさん
NGNGDLL作ろうとしてるんですが、メモリ確保はどちらでやったほうがいいやら。
0291290
NGNG0292デフォルトの名無しさん
NGNGdllで確保したメモリを利用者(exeとか)が解放する場合は、
Global/Local/Heap〜 等APIを使う。
逆に、確保した側が解放する場合はどっちでもいい
0294デフォルトの名無しさん
NGNG0295デフォルトの名無しさん
NGNGマウスでクリック。
タスクトレイへの登録方法とかだったらgoogleすれば腐るほど
出てくると思うけど。
0296デフォルトの名無しさん
NGNGhwndProgressCtrl = CreateWindowEx(0,PROGRESS_CLASS,"",
WS_VISIBLE | WS_CHILD | PBS_VERTICAL | PBS_SMOOTH,
10, 50, 20, 80, hDlg, (HMENU)IDC_PROGRESSBAR, g_hInstance, NULL);
こんな感じで書いたのですがエラーが出てしまいます。
エラー内容はPROGRESS_CLASSが定義されていないとか、そんなのばっかりです。
どうすれば直りますか?
0297デフォルトの名無しさん
NGNGだから、定義すればいいって言ってるだろ。
#define PROGRESS_CLASSA "msctls_progress32"
それか、commctrl.hをインクルード
0298
NGNG皆さんの力で助けて下さい。
0299272
NGNGアクティブタイトルバーのサイズによって、
タスクバーに表示されるアイコンの大きさが決まるみたい。
0300新手の嵐か?
NGNG>エラー内容はPROGRESS_CLASSが定義されていないとか、そんなのばっかりです。
>どうすれば直りますか?
そんなのばっかりだったら>>297で言われてるように定義すりゃいいじゃん。
ちゃんと読めよ。
0301初心者
NGNGBYTEをキャストしたほうがいいのでしょうか?
intにはSendDlgItemMessageでCB_GETCURSELした値が(0〜Fの範囲内)
BYTEには0〜Fが入っています。
双方向リストのノードのメムバなので経費節減の為BYTE使ってみました。
でも符号なしのBYTE型を符合ありのintにキャストするのは
なんか気持ち悪いんですが・・・
0302デフォルトの名無しさん
NGNG> 双方向リストのノードのメムバなので経費節減の為BYTE使ってみました。
無意味な節約すんなよ。
0303初心者
NGNG組込み上がりの先輩に節約しるって偉そうに言われたんですが。
もし無意味なら・・・ニヤソ
0304デフォルトの名無しさん
NGNGメンバをBYTEにすれば経費節減出来るなら喜んでやるぞ
0305デフォルトの名無しさん
NGNG普通は構造体に隙間ができるから節約にはならないし、
隙間を詰めるオプション使っても、ノードひとつにつき
3バイトの節約にしかならないじゃん。
ノードが10万あったとしても、300Kバイト弱の節約にしか
ならないよ。
0306デフォルトの名無しさん
NGNG別に0〜Fと判っているなら、逆にintをキャストしてもいいだろうし
0307デフォルトの名無しさん
NGNG0308初心者
NGNG0309デフォルトの名無しさん
NGNGAdvancedWindowsProgrammingは暗記しないとダメっぽいですね。
0310デフォルトの名無しさん
NGNGもうひとつですが、プログレスバーの色(背景とバーの色)
はどのように変更するのでしょうか?
0311デフォルトの名無しさん
NGNGそれくらいヘルプに載ってるとは思わんのか?
PBM_ で始まるやつを一通り見てみろ。
0312デフォルトの名無しさん
NGNG0313デフォルトの名無しさん
NGNGchar far *lpsz;
char sz[LENGTH];
なお、Win32では、far, nearの区別はない。
0314デフォルトの名無しさん
NGNGあらやだ、また???な言葉が。
far nearってなんですか?
0315デフォルトの名無しさん
NGNGリネームされますね。このリネーム結果のシミュレートというか、リネーム名を
あらかじめ知ることってできるんですか?
::SHFileOperation()の "LPVOID hNameMappings" で「処理された後の」結果は
知ることができますが...実際の処理なしで取得できないかなぁ、と。
0316デフォルトの名無しさん
NGNG過去の遺物なので気にするな。
0317デフォルトの名無しさん
NGNGif (FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
・・・
}
という表現があるのですが、これって
if(findFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == FILE_ATTRIBUTE_DIRECTORY) {
・・・
}
としなくてもいいのでしょうか?
0318デフォルトの名無しさん
NGNG・・・
}
でした。
0319デフォルトの名無しさん
NGNGはい。
0320デフォルトの名無しさん
NGNGにあたるビットが1ならば
(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
の結果は真なの???
0321デフォルトの名無しさん
NGNGいえーす。
0322デフォルトの名無しさん
NGNGNdiyo
0323デフォルトの名無しさん
NGNGVâng
0324デフォルトの名無しさん
NGNG0325317
NGNGC言語では偽が0で真が0以外という扱いだから、
例えば
0010 & 0010 → 0010で真
1000 & 0010 → 0000で偽
となる。
よって、該当ビットが1になっていなかったら、
ビット演算の結果は必ず0となるということですね。
0326デフォルトの名無しさん
NGNG0327デフォルトの名無しさん
NGNGのお手本を見た気がした。
0328317
NGNG0329デフォルトの名無しさん
NGNGWin9xでもNTでも使えて。
0330デフォルトの名無しさん
NGNG0331デフォルトの名無しさん
NGNGttp://support.microsoft.com/default.aspx?scid=%2Fisapi%2Fgomscom%2Easp%3Ftarget%3D%2Fjapan%2Fsupport%2Fkb%2Farticles%2Fjp228%2F4%2F69%2Easp&LN=JA
ttp://msdn.microsoft.com/library/en-us/winui/windows_6ap1.asp?frame=true
0332デフォルトの名無しさん
NGNGaccept()→recv()→Fire_Request()→send()→close()
ってな処理の繰り返しでメモリリークが起きているようです。
ただし、_CrtDumpMemoryLeaks()で検出できるリークはありません。
BoundsCheckerなんぞを使って::SysAllocString()系のリークも無いことを確認しました。
ループの先頭から末尾の間に、BoundsCheckerで検出できる差分はありませんでした。
しかし、タスクマネージャで観察していると、何度も処理を繰り返すうちに使用メモリが
上がっていきます。一定ではないんですが、10回に数KBぐらいでしょうか。
で、VirtualQuery()で処理ごとのメモリ空間の状況を全てダンプさせてみたのですが、
プロセス・ヒープのprivate領域が、一定ではないんですが、
処理ごとに増えていっているようです。
これは、何でしょうか?
一応、サーバ用のコンポーネントなので、無視するわけにも行かず困っています。
使用しているのは、winsock,ATL,STLです。MFCは使っていません。
GlobalAlloc()も使っていません。
0333デフォルトの名無しさん
NGNGそれでも選んだのならリブートを運用に組み込むしかないでしょう。
0334デフォルトの名無しさん
NGNG分からなければ黙ってなよ。沈黙は金だぜ?
0335332
NGNG状況的に、お手上げなケースなんでしょうか?
しかし、世の中にTCP/IPコントロールなど掃いて捨てるほどあるし。
ひょっとしたら、同じような経験をされた方がいるのでは?と考えて
書き込んでみたのですが・・・
0336デフォルトの名無しさん
NGNGあのさ、不明な現象が起きたらすぐ聞くんじゃなくて、
せめてどこで起きているのかを突き止める。
もしくは、現象が起こる最小限のソースを出せ。
あと、動作中に使用メモリが少しずつあがっていくのはどんなソフトでもそうなる。
十分に長時間運用した後もまだ際限なく上がっていくならそれはリーク。
ある程度で増加が止まったら正常。
0337332
NGNGすみません。
現在、上の全メモリ空間ダンプの差分を取って、発生箇所の絞込み中です。
これについては、追って報告します。
>あと、動作中に使用メモリが少しずつあがっていくのはどんなソフトでもそうなる。
現在、当該コントロールで行っているテストは、
同じデータのやり取りをえんえんと繰り返しているのですが、
継続的に、使用メモリ量(プロセスのデフォルト・ヒープ内にprivateとして確保された量)が
上昇してゆきます。
リーク・・・ですよね。
0338デフォルトの名無しさん
NGNG(略)
>リーク・・・ですよね。
だから、継続的とはどの程度の時間調査したわけ?
たとえば、24時間とか運用した結果それでもさらに上昇が止まらなければリークの可能性が高いけど、
ライブラリ内でのヒープの運用方法によってそんな現象起こりえるから、
数分や数時間単位の運用結果でリークと判断するのは適切ではないということ。
0339332
NGNG全力でピンポン通信させる(メールのリダイレクトで.forwardを双方向に切ったような状態)
と、使用メモリがしばらく上昇した挙句に死亡します。
0340デフォルトの名無しさん
NGNGのなら、一度全てグローバルに固定幅でデータ取って 再現させてみたら?
それでも増えるようなら API側の問題だし
増えないならアプリ側の問題(あるいは単にメモリの断片化が起きてるだけ)
まさか結果をファイル出力してて メモリ使用量が増えるとか言ってないだろうね?
0341デフォルトの名無しさん
NGNGVCにも定番のライブラリってあるでしょうか?
0342332
NGNGリーク解消してました。
もともと::SysAllocString()のリークがあったのですが、
それを発見するまでに色々埋め込んでたデバッグ用のコードが
メモリ増加現象起こしてたようです。
ファイルへのダンプとか。
::SysAllocString()のリークを取ってからは、リリース用のコードでは
リークが発生していなかった模様です。
ピンポン通信もメモリの上昇がすぐに安定し、うまくいきました。
ここしばらく、これを追ってたので少々疲れがたまってたようです。
回線切って布団に逝ってきます。
お騒がせしました。
0343デフォルトの名無しさん
NGNGそれで、その背景を透明(色指定でもOK)、文字色の変更などは出来るのですか?
0344デフォルトの名無しさん
NGNG手軽には取得できない
CreateToolhelp32Snapshot()
GetModuleFileNameEx()
あたりで検索
0345デフォルトの名無しさん
NGNGコードがまるまるMSのサイトに載ってたよ。
0346329
NGNGhttp://support.microsoft.com/default.aspx?scid=kb;EN-US;q175030
0347デフォルトの名無しさん
NGNGアクセラレータだと子ウインドウのEDITに文字を入力しているときでも
勝手にメッセージが実行されてしまうので困ってます。
たとえば、xにアプリケーションの終了を割り当てて、
EDITでxを入力するとアプリケーションが勝手に終了して困ります。
WM_CHAR/WM_KEYDOWNからキーを取得する方法はすべての環境で
互換性があるわけではないので、どうしたらいいのか迷っています。
どんな解決方法があるのでしょうか?
0348デフォルトの名無しさん
NGNGなんかとても違和感があるんですが ALTとかCTRLとかと組み合わせない 素の 'A' を
アクセラレータに使ってるんですか?
0349デフォルトの名無しさん
NGNG0350デフォルトの名無しさん
NGNG0351デフォルトの名無しさん
NGNGなぜに?
通常のツールチップは作れているんだが、
任意のタイミングで強制的に表示する方法を知りたいんだけど。
0352デフォルトの名無しさん
NGNG実際にデフォルトではメタキーと組み合わせていますが、
設定次第で好きなようにカスタマイズできるので、その可能性もあると言うことです。
なるべくなら、カスタマイズを制限したくないのですが。
0353デフォルトの名無しさん
NGNG0354デフォルトの名無しさん
NGNGんじゃあそのユーザーはただの x を終了に使いたい意志があるのだから、エディットボックス入力中だろうがただの x で終了出来ないと不良品だと文句いわれちゃうぞ。
0355デフォルトの名無しさん
NGNGstatus = WSAStartup( MAKEWORD(1,0), &Data);
でstatusは0なんで、エラーではないようなんですけど、
そのあと、
hSocket = socket(PF_INET,SOCK_STREAM,0);
でソケットが作れてないらしくて、
ソケット文の直後でWSAGetLastError()
してみると、コード10093==WSANOTINITIALISEDのエラーで
つまりWSAStartup()が上手く言ってないという結果なのです。
調べまくったんですがわけがわかりません。
バージョン1.0のところも2.2 2.1などやってみたがダメです。
お助けください。
0356デフォルトの名無しさん
NGNG0357デフォルトの名無しさん
NGNGcase WM_CTLCOLORSTATIC:
if(GetDlgCtrlID((HWND)lParam) == IDC_STATICXX) {//目的のスタID
SetTextColor((HDC)wParam, RGB(255, 0, 0)); // 文字
SetBkColor((HDC)wParam, RGB(0, 255, 0)); // 背景
}
break;
この場で打っただけなので、間違いがあるかも知らん。
どっちにしろ、親ウィンドウ(ORダイアログ)で WM_CTLCOLOR か
WM_CTLCOLORSTATIC を使ってください。じゃ
0358デフォルトの名無しさん
NGNG終了と同時に(おそらくiniファイルを完全に保存しきってないうつに?)
新たに起動させたらiniファイルを正しく読み込まないようなんです。
(確信はないですが)
こういうことはあるんでしょうか?
それとも保存処理を間違っているのでしょうか?
0359デフォルトの名無しさん
NGNG0360デフォルトの名無しさん
NGNG0361358
NGNGなるほど!
サイズ制限でしたか!。ぎりぎりOverしているようでした。
調べてみると64KBとありました。それでレジストリを使うわけですね。
http://nacelle.cug.net/beginner/04002.html
別の保存方法を考えます。
ありがとうございました。
0362デフォルトの名無しさん
NGNGおい、みんな元気?
エラーの原因わかったっぽいよ。
むかしさぁ、ws2_32.dllとかさ、wsock32.dllを
C:\\にコピーしてimplibの実験とかしてたことが
あったわけ。俺のパソにws2_32.dllもwsock32.dllも2つ
あるわけなんだけど、それが原因っぽい。
なんでかっていうとアプリを適当なほかのdirectoriに移したら
10093エラーは出ませんでした。
でさ、問題があるんだけどさ、C:\\にコピーしたws2_32.dllと
wsock32.dllが、なんだかライトプロテクト関係かなんかで、移動も
削除もできないんだけど、
どうすればいいですか?
0363デフォルトの名無しさん
NGNG一人じゃできないよーーーー
たすけてくれよーーーー
(泣き入ってもダメですか?)
0364デフォルトの名無しさん
NGNG話し言葉で書くからすごくわかりづらい。
助けを請うならそれなりの態度で。
0365デフォルトの名無しさん
NGNGws2_32.dllシステムフォルダーから
C:\\にコピーしたんですけどそれが消えません。
消えてくれないとAPIで書いたソケットプログラムに
支障をきたすんです。消すにはどうしたらいいか聞きたいです。。
他逝けとは言わずここで教えてください。
0366デフォルトの名無しさん
NGNGなんで支障をきたすんだ?
パスの通った位置にws2_32.dllがあれば普通は問題なく動くぞ
0367デフォルトの名無しさん
NGNGOSの起動前なら消せるだろ?
0368デフォルトの名無しさん
NGNG違うみたいだよ。C:\windows\systemと、C:\
の両方にws2_32.dllがあるんだけど、で、最初、作った
アプリをC:\で動かしていたわけなんだけど、
そーすると、多分C:\のws2_32.dllが優先されるんじゃないかな。
C:\unkoっていうディレクトリ作ってそこで動かしたら接続(connect())
も上手くいったよ。システムフォルダのws2_32.dllがちゃんと認識
されたんではないかな。別にC:\のws2_32.dllは壊れていない(サイズとか
まったく同じ)んだけど、ws2_32.dllはシステムフォルダにないと
きちんと動かないんじゃないかなと思う。
まとまらなくて悪いけど、C:\にws2_32.dllがあって、そこ(C:\)で
ws2_32.dllを使うアプリを動かすとだめだ。と。
ws2_32.dllはシステムフォルダの奴じゃないとまずい、と。
・・・・
0369デフォルトの名無しさん
NGNG0370デフォルトの名無しさん
NGNGしかしMSはレジストリに巨大な設定を保存しないように推奨しているという罠。
(MSDNでWindows2000アプリケーション仕様書を参照のこと)
0371OSはなんだよ?
NGNGws2_32.dll を ws2_32.bak とかにリネームして再起動。
そうすれば Windows ディレクトリの中の ws2_32.dll を
使うだろ?
0372デフォルトの名無しさん
NGNGあぁ、rename も move もできないです。。
0373デフォルトの名無しさん
NGNGおまえ馬鹿か?
セーフモードで名前かえればいいだろ。
それか、DOSに落ちて消せ
0374デフォルトの名無しさん
NGNGDOSでもダメなんだYO
・・・・セーフモードってどうやるんだよ・・・
0375デフォルトの名無しさん
NGNGDOSってDOSプロンプトのこといってんじゃなかろうな
0376デフォルトの名無しさん
NGNG(セーフモードでも共有違反とかが相変わらず出ました。)
0377デフォルトの名無しさん
NGNGたしかDOSモードで再起動とかあったろ?
忘れたけど
0378デフォルトの名無しさん
NGNGセーフモードでネットワークサポートはずしてみろよ
0379デフォルトの名無しさん
NGNGそろそろ引っ込んでくれないかね
0380デフォルトの名無しさん
NGNG0381デフォルトの名無しさん
NGNGっせーなできたよありがとうございました。
winsock2.hつかってたってこーいうこともあるんだYO
0382デフォルトの名無しさん
NGNG0383デフォルトの名無しさん
NGNG意味不明だヴォケ。
おまえが妙なところにコピーしたのが原因だろ
winsock2.hの所為にするなよ
0384デフォルトの名無しさん
NGNG0385デフォルトの名無しさん
NGNGつか、ageんな
0386デフォルトの名無しさん
NGNGどんなライブラリなの教えて!!
0387デフォルトの名無しさん
NGNGソケット
0388親切な人
NGNGヤフーオークションで、凄い人気商品、発見!!!
「高性能ビデオスタビライザー」↓
http://user.auctions.yahoo.co.jp/jp/user/NEO_UURONNTYA
ヤフーオークション内では、現在、このオークション
の話題で、持ちきりです。
0389デフォルトの名無しさん
NGNG>>387
0390デフォルトの名無しさん
NGNG0391デフォルトの名無しさん
NGNGごめんな、消防
0392デフォルトの名無しさん
NGNG0393デフォルトの名無しさん
NGNG>>391
0394デフォルトの名無しさん
NGNG0395デフォルトの名無しさん
NGNG0396デフォルトの名無しさん
NGNG0397デフォルトの名無しさん
NGNG0398デフォルトの名無しさん
NGNG0399デフォルトの名無しさん
NGNG質問スレでそんなレス初めて見た
0400デフォルトの名無しさん
NGNG0401デフォルトの名無しさん
NGNGGetDlgItem(hDlg,IDC_LIST_XXX);
で取得する所まではわかるのですが…。
0402398
NGNGたま〜〜〜に、いるよ。まあ、>>396 は、「ないでしょうか ?」と聞いて
るから、>>397 の「できる」と言う情報で十分と言えん事もないけどね。
でも普通は、「こいつやり方わからんのだな、よしよしおにーさんがヒン
トをあげるから勉強してね。」って感じで、>>398 みたいに書いちゃるの
が普通だと思う。
でも、RegEnumEx() って >>400 が言うようにとっても「簡単」に見つか
るんだけど、なんで >>396 が見つけられなかったかがちょい不思議。
0403398
NGNG得られた、ウィンドハンドルに対して SendMessage() で、
LB_ADDSTRING か LB_INSERTSTRING メッセージを投げれば OK。
PostMessage() で投げてもいいけど、処理されるまで文字列を保持して
おく必要が有るから要注意。
0404デフォルトの名無しさん
NGNG0405デフォルトの名無しさん
NGNG"Registry functions" で引けば一覧が出てくると思うが・・・
順番に調べてけば見付かるから単語知らなくても・・・
むしろ調べ方がわからん説を支持
0406デフォルトの名無しさん
NGNG俺もこの板に入り浸るようになるまでは知らなかったよ。
でも、今回の場合は「レジストリ 列挙」でGoogleすれば、
http://www.google.co.jp/search?q=%83%8C%83W%83X%83g%83%8A%81@%97%F1%8B%93&hl=ja&lr=
十分な情報が出るんだよね。
自分で検索すらしない厨房か…。
0408デフォルトの名無しさん
NGNGWM_RBUTTONDOWNなり、WM_CONTEXTMENUなり、お好きな方をどうぞ
0409ghuty
NGNGあの〜CPUの使用率を収得するAPI関数ってありますか?
自分なりに調べたのですが、見つかりません…
もしかして複数のAPI関数を組合さないといけない?
どなたか教えて下さい
0410Performance Data Helper
NGNG> もしかして複数のAPI関数を組合さないといけない?
はい。
0411409
NGNG恐縮ですが
どんなAPIを組合せればいいですか?
0412デフォルトの名無しさん
NGNGPDH でどうぞ。レジストリからもとれますよ。
0413デフォルトの名無しさん
NGNGDestroyWindow()のほうがいいんでしょうか。
PostQuitMessage()ではまずいケースってありますか?
0414デフォルトの名無しさん
NGNG0415デフォルトの名無しさん
NGNGさんきゅです。
0416デフォルトの名無しさん
NGNGす、すいません(;;)
>PHDでどうぞ。レジストリからもとれますよ。
って言うコメントをいただいたのですが…あまり専門用語(←絶対違うけど)分かりません(汗
なんと言うか…出来ればモウスコシ分かりやすく解釈していただけませんか?
自分でも出来るだけ調べてみます。ほんとすいません;;
0417>416
NGNG0418412
NGNGおっと見逃してました。すでに答えが出てたわけですな。
>>416
そういうわけで、Performance Data Helper について調べてみてください。
VB系ならWMIでやるのが便利です。
0419デフォルトの名無しさん
NGNGありがとうございます。おかげでいろいろ分かりました^0^
PHDとは「PHD」で始まるAPI関数のことなんですね
でもこれらの関数はWIN9x系でも使えるのでしょうか?
もし使えなかったら…>>412さんによると
レジストリという道があるわけですが…
レジストリ怖いです^^;レジストリのどこからCPUの使用率を収得するのですか?
どなたか教えて下さい
えっと私のOSはWIN98SEです
宜しくおねがいします
0420409
NGNGはい。がんばります。ありがとうございます。
>>419書いているうちに>>418さんがアップされたみたいです(汗
>>418さんにも感謝です
でもPHDはWIN9x系で使えない?みたい?(←>>419の繰り返しですいません)
0421デフォルトの名無しさん
NGNG有難うございます。
もう一つ知りたいのですが、実行ファイルの実行中の編集がしたいのです。
メモリー上に実行ファイルを上げたときは、ファイルの手動編集が、
不可じゃないですか。それで何とかファイルとメモリの関係を
切り離したいのですが、どうすればよいですか?
(どう検索するべきかもわからないのです。出来ればCでしたいので、
サンプルがあればありがたいのですが、詳しいページを紹介して
いただければ光栄です)
0422デフォルトの名無しさん
NGNG0423デフォルトの名無しさん
NGNGその実行ファイルに次のようなコードを埋める。
1.起動時に、引数がMAGIC_WORDでなければ、
2'.適当でユニークなファイルを作って、自分自身をコピー
3'.MAGIC_WORD付きでCreateProcessし、
4'.終了する。
2.普通に処理を遂行する。
これが君の望みの動作かどうかは知らない。
0424409
NGNGす、すいません
まちがってました;;
ホントすいません「PDH」です;;
0425デフォルトの名無しさん
NGNG...
getch();
...
のようにしたのですが、上手く止まってくれません。
どうすれば、あるキーが押されるまで処理をストップできるのでしょう。
(空ループを使わないで)
0426デフォルトの名無しさん
NGNG0427デフォルトの名無しさん
NGNGWaitForSingleObject( GetStdHandle(STD_INPUT_HANDLE), INFINITE);
を挙げておこう。
0429デフォルトの名無しさん
NGNGCreateWindow()を一度も呼んでなかったりして
0430425
NGNG427さんに教えてもらった関数を使ってみたのですが、
上手くいきません。GetLastErrorで調べても
ハンドルが無効となっていました。
GetStd...の代わりにSetStd...の方を使ってみてもだめみたいでした。
なぜでしょうか。もう一度教えてもらえませんか?
0431デフォルトの名無しさん
NGNGアドバイスありがとうございます。
でも、いまいちよくわかりません。
何か参考になるページなどがあれば教えてください。
0432デフォルトの名無しさん
NGNG要するに、実行中のファイルを書き換えるんじゃなくて、
別のファイルを実行してそっちから本体を書き換えるってことでしょ。
0433デフォルトの名無しさん ◆E12W1IlM
NGNG0434デフォルトの名無しさん
NGNGフラグ使って、WM_CHARで処理すれば?
0435425
NGNGレスありがとうございます
でも関数の途中で、いったん停止させるのが目的なので、
WM_CHARが来るまでに処理が進んでしまいます。
GetStdHandleが失敗する理由がわかれば何とかなりそうなんですが、、
(ちなみに環境はVC++6.0,WinMEです)
0436412
NGNGつーか、イベント(メッセージ)ドリブンを理解してないような気がする
0437デフォルトの名無しさん
NGNGモーダルダイアログボックスだとWM_CREATEは来ないので、
WM_INITDIALOGで初期化する訳だが。
…外してるかな。
0438デフォルトの名無しさん ◆E12W1IlM
NGNG0439デフォルトの名無しさん
NGNGイベントオブジェクトでフラグ作ったりする方がいいのかね。
0440425
NGNGCreateHandleでハンドルを作って、WM_CHARがきたところで
SetEvent。ということもやってみたら今度は完全に止まってしまいました。
もしかしてシングルスレッドではだめとか。
完全にはずしてるんでしょうか?
0441デフォルトの名無しさん
NGNGWaitforSingleobjectって知ってる?
0443デフォルトの名無しさん
NGNGMessageBoxかましてみたら?
0444425
NGNGうーん、どのキーが押されたのかも取得したいのでちょっと、、
HANDLE handle //グローバル
WndProc(...)
{
case WM_CREATE:
CreateEvent(NULL,TRUE,FALSE,NULL);
break;
case WM_char:
SetEvent(handle);
break;
}
としておいて、処理を中断させたいところで
WaitForSingleObject(handle,INFINITE);を挿入しているのですが、
どのあたりがまずいのでしょうか?
0445デフォルトの名無しさん
NGNGPeekMessage でメッセージループを動かしながら WaitForSingleObject しないと、
そもそも WndProc に処理が行かないと思うぞ。
0446デフォルトの名無しさん
NGNG>うーん、どのキーが押されたのかも取得したいのでちょっと、、
だったらプログラム構造の設計がおかしい。
「何かキーが押されるまで待つ」んじゃなくてだな。
一旦そこまでで処理を終えて(ウィンドウプロシージャを抜けて)
WM_CHARを受け取ったときに残りの処理をするように
プログラム構造を書き換えろ。
0447デフォルトの名無しさん
NGNGページを調べたのですが、サンプルも不明で、
引数をどう指定すればいいか良くわからないのです。
この初心者に、手ほどきお願いします。
0448デフォルトの名無しさん
NGNGすいません。自己解決しました。
0449デフォルトの名無しさん
NGNGDWORD dwType;
DWORD dwSize;
if(RegQueryValuEx(キー, 値の名前, NULL, &dwType, NULL, &dwSize) == ERROR_SUCCESS){
BYTE* data = malloc(dwSize);
RegQueryValuEx(キー, 値の名前, NULL, &dwType, data, &dwSize);
}
こんな感じでdwTypeに値の型が、dataにデータが、dwSizeにデータサイズが入ると思うたぶん。
0450デフォルトの名無しさん
NGNG書き込む前にもうちょっとがんばれや・・・
0451デフォルトの名無しさん
NGNGほっとけ。
0452MsgWaitForMultipleObjects
NGNG> としておいて、処理を中断させたいところで
> WaitForSingleObject(handle,INFINITE);を挿入しているのですが、
> どのあたりがまずいのでしょうか?
そこがマズい。
そんなことしたら、そのスレッドのメッセージポンプが回らないだろ?
シングルスレッドなんだろ?
メッセージポンプが回らなくなったら、誰が GetMessage して
TranslateMessage して DispatchMessage してくれるわけ?
TranslateMessage しなきゃ、誰も WM_CHAR をポストしてくれないよ?
0453デフォルトの名無しさん
NGNG0454425
NGNGレスどうもありがとうございます。
結局、452さんのMsgWaitForMultipleObjectsを使って
どうにか希望どうりの動作をさせる事が出来ました。
皆さんのアドバイスのおかげで助かりました。
0455デフォルトの名無しさん
NGNG「ダイアログプロシージャ」で、WM_CLOSE:のとこでdelete class;
とやるとすんじゃん。そのダイアログが出ているときにアプリの
一番トップのウィンドウから終了したら、deleteはできているの?
WM_DESTROYのほうがいいんですか?
0456デフォルトの名無しさん
NGNG0457デフォルトの名無しさん
NGNGWM_DESTROYでないとマズイ。
WM_CLOSEは破棄ではなく、閉じろという指示を意味するメッセージだから。
0458デフォルトの名無しさん
NGNGあ、俺今ごろ思いついちゃった。デストラクタにMessageBox()
書いて試せばいいんだよな、おーー。ありがとうでした。
0459デフォルトの名無しさん
NGNG0460デフォルトの名無しさん
NGNG富士山レベル?
0461デフォルトの名無しさん
NGNG0462デフォルトの名無しさん
NGNGあれ、なにヲ隠そうshlwapi.h関係なんだ。
PathIsURLなんかは動く。だがしかしだ。StrStrI()
が動かん。コンパイルはうまくいく。起動した時だ!それは。
なんでもアプリが欠落エクスポートshell32.dll云々らっすぃー。
で、英語だとmissing export shell32.dllだ。
勘違いしないでほっすぃーのはshell32.dllが欠落shlwapi.dllにリンク云々
ではないことだ。
どうやら今更IE4.0をインストールし直してなんたらと、外国のサイト
は言っている。
他に方法ないの?
0463デフォルトの名無しさん
NGNG0464デフォルトの名無しさん
NGNGWM_NCDESTROYは?
0465デフォルトの名無しさん
NGNG0466デフォルトの名無しさん
NGNG0467デフォルトの名無しさん
NGNG使い分けとか、ルールみたいなのってあるんですか?
0468デフォルトの名無しさん
NGNG0469デフォルトの名無しさん
NGNG0470467
NGNGLPARAMを使ってるのがあって、どうしたものかと思っていたんですが。
確かに構造体を渡すときとかは LPARAMですね。
0471デフォルトの名無しさん
NGNGソフトでも作るか、ってことになったんだけど・・・標準出力の取得の
ところがWin2Kでは動くんだがWin98で動かない・・・。
CreatePipe で名前なしパイプ作成
StartupInfoのhStdOutput/hStdInput にそれぞれハンドルを入れる
(dwFlags は STARTF_USESTDHANDLES|STARTF_USESHOWWINDOW)
(wShowWindow は SW_HIDE)
CreateProcess 実行して書きこみ側ハンドル閉じる
GetExitCode でプロセス監視
PeekNamedPipe で読みこみ側の中身確認
中身があったら ReadFile で実際に読み出し
プロセス終了したらも1度中身の読み出し処理やって終わり
って流れで組んでるんだけど、PeekNamedPipe の所でいつまで経っても
読み出しサイズが 0 のまま・・・。
なにか忘れてることがあるんでしょうか?逆だったら SecurityAttributes
かなとも思うんですが。あとはタイミング・・・なのか?
あ、テスト用の実行コマンドは command.com /c dir で、wShowWindow = SW_SHOW
の時にちゃんと実行できているのまでは確認してます。
0472デフォルトの名無しさん
NGNGWPARAM は 16bit で LPARAM は 32bit だったような時代が
あるので、そんなことを考えつつ決めると他のWM_XXXとの
親和性は多少良いかもしれず。
っつーかどっちでもいいと思う。
0473デフォルトの名無しさん
NGNG今は16bit * 2として使うのが普通。
0474デフォルトの名無しさん
NGNGLPARAMは Long size PARAMeter の略でなかったのかい?
既に意味をなしてないのなら、WIN32移行時に名前変えれば
良かったのに…。
0475デフォルトの名無しさん
NGNGあったんでしょうかね。両方LPARAMじゃだめだったんだろうか。
0476デフォルトの名無しさん
NGNG上のレスを読めよ。
0477デフォルトの名無しさん
NGNG昔WORDは16ビットだった。それだけさ。
0478デフォルトの名無しさん
NGNG0479デフォルトの名無しさん
NGNG0480デフォルトの名無しさん
NGNG0481デフォルトの名無しさん
NGNG足りない場合用にlparam
0482デフォルトの名無しさん
NGNG世代でして(?)。
0483デフォルトの名無しさん
NGNGいや、俺も95から。Delphiマンセー
0484デフォルトの名無しさん
NGNGそれもあるけど、far pointer(16:16 の)を渡すために必要だったと思われ。
0485デフォルトの名無しさん
NGNGデバイスマネージャで表示されるような、名前が欲しいのです。
0486デフォルトの名無しさん
NGNGにfwrightでファイルの書き込みを行うことが
できません。C:\ですと書き込めるのですが、、
また、WIN2000ですと、書き込みできるの
ですが、理由がわかりません。
識者の方よろしかったら御教示ください。
0487デフォルトの名無しさん
NGNGfwright ってなんだ ?
0488486
NGNG0489デフォルトの名無しさん
NGNGアクセス権は大丈夫 ? fwrite() が失敗した直後に perror() を実行して
みれば、原因がわかるかも...。
0490デフォルトの名無しさん
NGNGWin2000で、「ハードウェアの取り外し」を制御できる
(もしくはそれと同等の作用をする)
APIを教えて下さい。
※やりたいことは、リムーバブルディスクを「ハードウェアの取り外し」を使用せずに、
ボタンひとつで安全に取り外したいのです。
0491デフォルトの名無しさん
NGNGDeviceIoControl() の、IOCTL_STORAGE_MEDIA_REMOVAL あたりから調べ
ればいいかと。
0492t
NGNGまず、メモリ上に描写を行って、そのあと1度に画面に表示させる。
方法を教えてください。
0493デフォルトの名無しさん
NGNGしょうもねぇやつだな。
おまえにプログラムは無理だからあきらめろ
0494デフォルトの名無しさん
NGNGスレをまたがれば連続質問に答えてもらえるとでも思ったか?
漏れは向こうで自分の記憶試しのためにたまたまソースを書いたが、
あんなの自分でググってこいっていって終わりなんだよ、超FAQだからな。
わかったらさっさと首吊って氏ね
0495デフォルトの名無しさん
NGNG0496デフォルトの名無しさん
NGNG0497デフォルトの名無しさん
NGNG0498496
NGNG0500デフォルトの名無しさん
NGNG0501デフォルトの名無しさん
NGNG低域通過フィルタ作ってかぶせれば、なんぼかマシ
0502デフォルトの名無しさん
NGNG終了しないようにするにはどうしたらいいですか?
0503デフォルトの名無しさん
NGNGPreTranslateMessage()
0504502
NGNGレスサンキュです。
#OKボタンのIDをIDOK以外にして、IDOKをハンドルしない。
0505デフォルトの名無しさん
NGNGスムーズスクロールをオフにするAPIってないの?
0506デフォルトの名無しさん
NGNG0507駆け出し
NGNGボケてしまいます。5倍以上に拡大したときは何故かボケません。
0508デフォルトの名無しさん
NGNGnVidiaのビデオカードだとボケる
0509駆け出し
NGNG解りました。レスありがとうございます。
0510初
NGNGWindowsプログラムのエントリポイントはWinMainだって書いてあったから
そう書いてコンパイルしようとしたら
「mainが未解決」みたいなこと言われるんですが何でですか?
0511デフォルトの名無しさん
NGNGCreateDialogIndirect使ってみたいんだけど、
参考になる(できればまるっきりそのまま使える)ソース無い?
0512デフォルトの名無しさん
NGNGプロジェクト>設定>リンク のタブを選んで、
プロジェクトオプションの中の
/subsystem:consoleを/subsystem:windowsに変える
0514デフォルトの名無しさん
NGNGリソースのダイアログをダンプしたのが一番参考になると思うが。
0515デフォルトの名無しさん
NGNG取得する方法ってありませんか?
現在は、ファイルパスをタイトルに表示、もしくはファイルパスを
アドレスバーに表示にして、そっちから取得してきているのですが、
これらを非表示(省略表示)にしても使える方法が知りたいのです。
0516デフォルトの名無しさん
NGNG0517515
NGNG>>516
Spy++で見てみたところ、treeviewを表示させない状態で開かれたエクスプローラには、
最初はtreeviewが存在せず、「Toolbar->フォルダ」を選択すると、
以降そのウインドウには BaseBar-SysTreeView32というものができ、非表示にしても
そのクラスが残るみたいです。
treeviewを表示させないで開いたやつからも取得したい(というか、区別したくない)ので、
他の方法は無いでしょうか。
0518デフォルトの名無しさん
NGNGまっとうなやりかたなら、Shellからごりごりとだね。
0520デフォルトの名無しさん
NGNGMSDNにDLGTEMPLというサンプルがある。
MFCだけど参考になると思う。
ちなみに、MFCはCDialog::DoModalでも
内部でLoadResourceしてからCreateDialogIndirectしてたような。
0521510
NGNG性交しましたサンクス!
0522デフォルトの名無しさん
NGNGそのDLL内の関数を呼び出した所に伝わるのでしょうか?
DLLが別のコンパイラ言語で作成されていても。
0523デフォルトの名無しさん
NGNG0524デフォルトの名無しさん
NGNG0525デフォルトの名無しさん
NGNG0526デフォルトの名無しさん
NGNG0527デフォルトの名無しさん
NGNG0528デフォルトの名無しさん
NGNGSetStretchBltMode
0529デフォルトの名無しさん
NGNGSendMessageでテキストボックスなどコントロールを
表示・非表示の切り替え や使用可能・不可能の切り替えはどう書けばいいでしょうか?
0530デフォルトの名無しさん
NGNG0531デフォルトの名無しさん
NGNGんですが、そういうもんですか?
0532デフォルトの名無しさん
NGNG0533デフォルトの名無しさん
NGNG0534デフォルトの名無しさん
NGNGlstrcpy は単純に movs で回してるから、データ量増えると遅いよ。strcpy は
4 バイト単位でコピーするように工夫してある。
0535デフォルトの名無しさん
NGNG0536デフォルトの名無しさん
NGNGstrcpyはユーザコード側で動くから、コンテキストスイッチ
しないので、たとえばlstrcpyとstrcpyがまったく同じコードでも
strcpyのほうがはやーくなるよ。
0537デフォルトの名無しさん
NGNG0538536
NGNG(コンテキストスイッチはスレッド切り替え時のみの用語?)
すまそ。
ようはLPCでOS側にスイッチしないといけないので
遅いと。
0539デフォルトの名無しさん
NGNG嘘つけ。
Win32 API は OS 呼び出すモノも多いが、ユーザ空間で動く単なるライブラリ
関数も多数ある。嘘だと思うなら lstrcpy にブレークポイント設定して、デバッ
ガで追いかけてみ?
0540デフォルトの名無しさん
NGNG知ったか逝って良し!
> ようはLPCでOS側にスイッチしないといけないので
してねーよ。だいたい LPC は NT Kernel 内部でメッセージ通信するために
使ってるメカニズムの名前で Win32 API 経由で OS 呼び出すときには int
(ソフトウェア割り込み) 使ってるだろ。
0541デフォルトの名無しさん
NGNGカーネルモードに?
案外大げさな関数なんですね。
0542デフォルトの名無しさん
NGNGデバッガでlstrcpyおってみたら、確かにひねりのないループした
77E3317D mov al,byte ptr [ecx]
77E3317F mov byte ptr [edx],al
77E33181 inc ecx
77E33182 inc edx
77E33183 test al,al
77E33185 jne 77E3317D
えー、かなり昔のCマガでそんな記事を読んだような、
そのままそんな気がしてたのは気の成果..
lstrcpyとは関係ないけど、intの後引数変換とかでカーネルとlpcで
通信してるって話も気のせい?
一般的にはユーザアドレス空間内のデータをどうやってカーネルモード
のサービスにわたしてるの(共有メモリ?)
どうか教えて!!
0543デフォルトの名無しさん
NGNGリバースエンジニアリングしやがった
タイーホ
0544デフォルトの名無しさん
NGNG槍田氏
0545デフォルトの名無しさん
NGNG> lstrcpyとは関係ないけど、intの後引数変換とかでカーネルとlpcで
> 通信してるって話も気のせい?
気のせい。そもそも LPC は同一ホスト上のプロセス間通信に用いるメカニズム
で、プロセスのカーネルモードとユーザモードの間のデータ受け渡しに使うメカ
ニズムではないって。(むしろ RPC のローカルマシン限定版と思っておいた方
が近い)
NT 系列 (x86) だと、eax レジスタにシステムコール種別、edx レジスタにパラ
メタを設定して、ソフトウェア割り込み int 2E だったかな。
> 一般的にはユーザアドレス空間内のデータをどうやってカーネルモード
> のサービスにわたしてるの(共有メモリ?)
ふつーはカーネルモードもユーザモードも、同一の仮想メモリ空間を見てる
(ただしセキュリティ上の要請から、一部はカーネルモードでしか読み書きで
きないようにしておく)。
ソフトウェア割り込みが発生すると、
1. カーネルモードに移行する。
2. 割り込み種別に応じて、事前に設定しておいた割り込みハンドラが呼ばれる。
このときに、割り込み発生直前のプログラムカウンタ値などは、ハードウェア
が自動的にスタックに積む。
3. レジスタ or スタックから必要な値を取り出した上で、それを解析してカーネル
サービスを提供する。
という感じ。カーネルモードからユーザモードのメモリ空間は見えるので、必要な
データの読み書きは自由にできる(ただし validation 必須)。
ざっと読んだ感じ
一つのプロセスが、カーネルモードとユーザモードという二つの側面を持つ
ということを理解できてない気がするんだが。詳しくは、タネンバウム先生の
OS 入門書でも読んで勉強してくれ。
0546デフォルトの名無しさん
NGNGAPIのHELPには何も書いてない。
DeleteObjectするとBoundsCheckerが文句たれます。
0547デフォルトの名無しさん
NGNG0548デフォルトの名無しさん
NGNG0549デフォルトの名無しさん
NGNG0550デフォルトの名無しさん
NGNG0551デフォルトの名無しさん
NGNG最適化されると思うヨ >550
0552デフォルトの名無しさん
NGNG0553デフォルトの名無しさん
NGNG0554デフォルトの名無しさん
NGNGそんなに気になるんじゃ、コピーしないで済む方法を考えろ
0555デフォルトの名無しさん
NGNG同じくらいっつーか、同じ。
0556デフォルトの名無しさん
NGNG正しい
0557デフォルトの名無しさん
NGNGWindowsAPI 初心者が
Windows API without Direct X without MFC without SDLで
ゲームをつくれるまでいける
サイト無いですか?
0558デフォルトの名無しさん
NGNG本買え。
0559デフォルトの名無しさん
NGNG画像のコピーだったので。
自分でループまわしたらだいぶ速くなたーよ。
0560デフォルトの名無しさん
NGNGhttp://www-6.ibm.com/jp/developerworks/linux/011019/j_l-rt3.html
0562デフォルトの名無しさん
NGNGMSDN Library かな。あとは Petzold 本読め。
0563557
NGNG良心的レスありがとうございます
0564519
NGNGごめんごめん。見逃してた。「Shelからごりごりと」ってのは、ShellWindows
などのオブジェクトを使うってこと。
ShellWindowsコレクションから、InternetExplorerオブジェクトが取得できる。
InternetExplorerって言っても、普通のExplorerも含むからおっけー。
そんで、InternetExplorerのLocationURLプロパティで、今開いているパスが
取得できる。vbs でのサンプルは↓な感じ。
Set s = CreateObject("Shell.Application")
Set sws = s.Windows()
h = ここにウィンドウハンドルを入れる
For Each i In sws
If i.hWnd = h Then
MsgBox i.LocationURL
End If
Next
0565デフォルトの名無しさん
NGNGこれってどうやって表示するんですか?
0566デフォルトの名無しさん
NGNGオーナードローでは?
0567デフォルトの名無しさん
NGNG右端に文字列を表示する具体的な方法がわかりません
メニュー項目にBMPを表示する方法を解説したサイトは沢山あるんですが…
0568デフォルトの名無しさん
NGNG右端の文字というのがアクセラレータのことなら、
メニュー アクセラレータ WM_COMMAND
あたりをキーにして検索してみては。
0569デフォルトの名無しさん
NGNG全然違うよ。
秀丸はメニューの右横にカーソルインジケータを表示してる。
Window DCを取得して、自力で書いてるっぽい
0573デフォルトの名無しさん
NGNGメニューの横にカーソルの位置が書いてあるじゃん?
わかんない?
メニューの横って、フレームメニューの一番右端。
0574568
NGNG0575515
NGNGありがとうございます。参考にして調べてみたところ、方法は理解できました。
ただ、もう少し質問させてください。C++(BCC)/SDKで開発しております。
この環境で、>>564の CreateObject("Shell.Application") と同じことをやろうとしたら
どのように書いたらよいのでしょうか?
http://support.microsoft.com/default.aspx?scid=kb;EN-US;q176792 に、
m_spSHWinds.CreateInstance(__uuidof(SHDocVw::ShellWindows));
という記述があったのですが、これをコンパイルしようとすると、
「ShellWindowsはSHDocVwのメンバーではない」 と言われてしまいます。
0576デフォルトの名無しさん
NGNGIShellWindows ishw;
UuidFromString(_T("Shell.Application"), &guid);
CoCreateInstance(guid, NULL, CLSCTX_INPROC_SERVER, IID_IShellWindows, &ishw);
じゃないのん?
0577565
NGNG結局ウィンドウに直書きすることで解決しました
ところでメニューで使われてるフォントのハンドルって取得できるんでしょうか?
画面のプロパティでメニューフォントは変更可能ですよね?
0578577
NGNG0579515
NGNGIShellWindowsは抽象クラスなので実体は作れない、といったエラーが発生しました。
Web上に C++/SDK 用の資料が殆ど見当たらないのが厳しい。
何か1つ動作するサンプルがあれば、もうちょい理解しやすそうなのですが(;´д`)
とりあえず本屋にでも行ってきます。
0580デフォルトの名無しさん
NGNGいや、576はミスでIShellWindow* ishw;ダーヨ
0581515
NGNG>>580, >>576
UuidFromString(_T("Shell.Application"), &guid);
HRESULT result = CoCreateInstance(guid, NULL, CLSCTX_INPROC_SERVER, IID_IShellDispatch, (void **)&pShellWindows);
if (FAILED(result)) {
printf("failed\n");
return 1;
}
//pShellWindows->GetCount();
pShellWindows->Release();
これはfailedが表示されますので、多分guidが間違ってるのかと推測しました。
で、CoCreateInstanceの第1引数を、CLSID_Shellにするととりあえず
failedは表示されないようになるのですが、その後に>>575のURLを参考に
pShellWindows->GetCount(); とやってみたところ、
「GetCountはIShellWindowsのメンバではない」と言われ、コンパイルがとおりません。
0582デフォルトの名無しさん
NGNGんで、IShellDispatch::WindowsでIDispatchを得て・・・
ってな感じで、オートメーションを利用しないとだめっぽ
0583デフォルトの名無しさん
NGNGwMid = 1
wPid = 100
vDriverVersion = 0.1280
szPname = YAMAHA DS-XG Audio (WDM)
dwFormats = 4095
wChannels = 65535
dwSupport = 0x2c
↑のようにwChannelsが65535になっちゃったのですが、
これってどういうケースなんでしょうか?
0584デフォルトの名無しさん
NGNGチャンネル数65536個のスーパー音源
0585デフォルトの名無しさん
NGNG0586デフォルトの名無しさん
NGNGありがとうございます。
ところで、どうして65535がステレオなのでしょうか?
MSDNにその記述が見つからないのですが。
1か2としか書いてなかったので。
0587デフォルトの名無しさん
NGNG(((;゚Д゚)))ガクガクブルブル ちなみにうちも65535返します・・・
0588デフォルトの名無しさん
NGNGちなみにウチのDS-XG Wave Playbackはなぜか4を返している。
WAVE_MAPPERを指定してやるとちゃんと2を返すんだが。よくわからん。
0589デフォルトの名無しさん
NGNG0590583
NGNGんー、なんでだろ
0591デフォルトの名無しさん
NGNGタイムアウトの設定変更がうまくできません。
Win2k(SP2)+IE5.5SP2で、BCB5Proをつかってます。
HINTERNET hSession;
DWORD Timeout;
DWORD newTimeout;
DWORD BufSize;
bool isResult;
char buf[1024];
hSession = InternetOpen( "MyApp", INTERNET_OPEN_TYPE_DIRECT, NULL,NULL, 0 );
BufSize = sizeof(DWORD);
InternetQueryOption(NULL, INTERNET_OPTION_CONNECT_TIMEOUT, &Timeout,&BufSize);
sprintf(buf,"初期状態の接続タイムアウト: %d msec", Timeout);
printf("%s\n",buf);
if( hSession ){
newTimeout = (DWORD)15*1000; //15秒に設定
isResult = InternetSetOption(hSession,INTERNET_OPTION_CONNECT_TIMEOUT,&newTimeout,sizeof(newTimeout));
if(!isResult) {
printf("設定失敗\n");
}
else {
InternetQueryOption(NULL, INTERNET_OPTION_CONNECT_TIMEOUT, &Timeout,&BufSize);
sprintf(buf,"設定変更後の接続タイムアウト: %d msec", Timeout);
printf("%s\n",buf);
}
}
InternetCloseHandle(hSession);
って、たったこれだけなんですが標準状態の300秒から変わってくれません。
何かアドバイスもらえませんか?
IE5.0ではバグがあったが、5.01でなおしたというMS情報には
たどり着いたんですが、5.5でこの機能は無くなってしまったんでしょうか?
#IEコンポーネントを使い倒すスレの方が良かったのか。。。
0592デフォルトの名無しさん
NGNGhSessionじゃあないのかなあ、とか
その設定は hSession が Open されている間しか有効じゃないような
気がするなあ、とか
0593デフォルトの名無しさん
NGNGマジでこんなに遅くありがとうございました。
つーか、俺がバカなだけでしたね。。。。
おっしゃるとおり
InternetQueryOption(hSession, INTERNET_OPTION_CONNECT_TIMEOUT, &Timeout,&BufSize);
としたら、一発でした。
マジでありがとうごぜーますだ。
0594デフォルトの名無しさん
NGNG始めようと思います
windows APIでプログラムする範囲で、
VC++にできてmingwでできないことはあるのでしょうか?
0595デフォルトの名無しさん
NGNG/Zc:wchar_t,forScope
このオプションを/cと併用するとファイル名とみなされて
しまうんですがどうしたらいいでしょうか?
やりたいことはこうです。
$cl /Zc:wchar_t,forScope /CLR /c *.cpp
0596デフォルトの名無しさん
NGNGあれって、どのAPIを使用すれば実現できますか?
0597デフォルトの名無しさん
NGNG0598デフォルトの名無しさん
NGNGWindowsAPIがすべて使えればWindows上で出来ることに関しては出来ないことはない。
0599デフォルトの名無しさん
NGNG0600デフォルトの名無しさん
NGNG問題ない
0601594
NGNGレスありがとうございます
じゃ、mingw32使ってみます
0602ばか者D
NGNGモジュールについて説明されている場所をご存知の方
教えて頂けませんか?
IEの作成するキャッシュデーターを操作するのが目的です
0603デフォルトの名無しさん
NGNGSJIS や UNICODE の文字列リテラルを使うこと、かなぁ。あとはリソース関連
も辛くない?
0604デフォルトの名無しさん
NGNGInternetReadFileを使ったプログラムのI/Oをタスクマネージャでモニタリングしてると、
InternetReadFileのファイル取得ループ内にHDDに書き込んでいるようなのですが・・・
ちなみにVBだったりするんですけど、VCも同じなのかな・・・?
0605デフォルトの名無しさん
NGNGHDDにアクセスすることはある。
0606デフォルトの名無しさん
NGNGスワップは0に設定してあって、メモリだと思うのですが・・・。なんでだろう・・・。
0607デフォルトの名無しさん
NGNG何かNOCACHEとかオプションあるのかもしれないが。
0608デフォルトの名無しさん
NGNGHttpOpenRequestのオプチョンに
INTERNET_FLAG_NO_CACHE_WRITE
INTERNET_FLAG_PRAGMA_NOCACHE
がありました!とりあえず試してみます。
0609デフォルトの名無しさん
NGNGわーーーおぉおおぉぉぉおぉおおぉ。いけました!
べりーべりーさんくすです。
これで2重書き込みしなくて済みそうです。
どうもでした
0610デフォルトの名無しさん
NGNG変更できないんでしょうか。どういう訳か、変更されません。
こういう仕様なのかなとも思うんですが、みなさんの環境でも同じ
現象が起こりますでしょうか?
BOOL CALLBACK MyPropPageProc(HWND hDlg, UINT uMsg, WPARAM, LPARAM)
{
switch (uMsg) {
case WM_INITDIALOG:
{
// ボタンテキストの変更 (失敗する)
HWND hBtn = GetDlgItem(hDlg, IDC_BTN_XXXX);
SetWindowText(hBtn, "hogehoge");
}
return TRUE;
}
return FALSE;
}
通常のダイアログ(プロシージャ)では上手く変更できます。ペゾルド本
などを漁ってみましたが、それらしい記述は見当たりませんでした。
件に関して何か情報をお持ちでしたら、よろしくお願いします。
0611デフォルトの名無しさん
NGNGSetDlgItemText()
0612デフォルトの名無しさん
NGNG求めたいのですが、どのような方法がありますでしょうか。
どうか教えてください。
0613デフォルトの名無しさん
NGNG0614デフォルトの名無しさん
NGNG環境は?
WM_INITDIALOGは来てる?
どうゆう環境だったかでプロパティシートでWM_INITDIALOGが
来ないって現象があったようななかったような。
普通は610のコードで問題ないはずだけど。
0615デフォルトの名無しさん
NGNGError: 外部シンボル '_main' が未解決(C:BORLAND\B
CC55\LIB\C0X32.OBJ が参照)
などというエラーが出ます。
BCC5.5.1.2
winXP
どうか助けてください。
0616デフォルトの名無しさん
NGNGウインドウズ用にコンパイルしてますか?
0617デフォルトの名無しさん
NGNG0618デフォルトの名無しさん
NGNGソケットを作ってrecvしたんですけど、中身を表示すると
文字化けしています。でもたまに平気なサイトもあります。
キーワード何で調べればいいですか?
(エンコード、変換、関数、文字化けなどで調べました。
CGIの説明で惜しいのはあるんですけど、やっぱり
さっぱりです。お救いください)
0619デフォルトの名無しさん
NGNGstatic HWNDにしな。
0620デフォルトの名無しさん
NGNGあなた、マルチポストについてまず謝ってください。
0621デフォルトの名無しさん
NGNG0622デフォルトの名無しさん
NGNGあなたになんで謝るの??
0623デフォルトの名無しさん
NGNG外部シンボル'WinMain'が未解決
になっただけでした。
いったいどういうことなんだ。
>>616>>617さんありがとうございます。
0624デフォルトの名無しさん
NGNGスペルミスとか、ソース入れ忘れとか
0625デフォルトの名無しさん
NGNGおせーてくれ。
0626デフォルトの名無しさん
NGNG0627デフォルトの名無しさん
NGNGsocketについて・・・いや、そのインターネット=WWWっていうお前は素人か?っていう発想からたたき直してこい。
0628デフォルトの名無しさん
NGNG引数変とか。思いっきりオーバーロードになってたり。
0629デフォルトの名無しさん
NGNGWinMainのプロトタイプと、コンパイル時のコマンドラインを書いてみろ
0630デフォルトの名無しさん
NGNG初心者なのでよく分かりませんが、多分大丈夫だと思います。
0631デフォルトの名無しさん
NGNG初心者なら勝手に大丈夫だと決めつけないで、聞かれたことには答えておきなさい
0632デフォルトの名無しさん
NGNGちなみに"helloworld"と表示するだけの単純なものです。
#include<windows.h>
int APIENTRY WinMain (/*HINSTANCE hInst, HINSTANCE hPrevInst,
LPSTR lpCmdLine, int nCmdShow*/)
{
MessageBox(NULL,"hello world","hello world", MB_OK);
return 0;
}
コンパイル時のコマンドラインは
bcc32 -tW winhello.cpp
です。どうにかならないでしょうか・・・。
0633デフォルトの名無しさん
NGNGint APIENTRY WinMain (/*HINSTANCE hInst, HINSTANCE hPrevInst,
LPSTR lpCmdLine, int nCmdShow*/)
なぜにコメントアウト・・・?
0634デフォルトの名無しさん
NGNG初心者だからってあまり舐めないでください。
0635デフォルトの名無しさん
NGNGなめられるに値することしてるぞ?
0636デフォルトの名無しさん
NGNG自分でも気づかなかった・・・。
普通にコンパイル、リンク、実行、できてしまいました。
レスしてくださった皆様、本当にすいませんでした。
0637デフォルトの名無しさん
NGNGで
>int APIENTRY WinMain (/*HINSTANCE hInst, HINSTANCE hPrevInst,LPSTR lpCmdLine, int nCmdShow*/)
>>636はネタかアフォか神か?
0638デフォルトの名無しさん
NGNGおい!今WTLのウィザードで作り、Debugで動いてるのをReleaseで
コンパイルしたら、同じエラーが出たよ!こっちはVC++だけどなんて偶然!
というわけで鬱鬱……なんで〜オレのアフォー(;´Д`)
0639638
NGNGアプリを作成し、Debug版では問題なく動いているのですが
Release版だと次のエラーが出てしまいます…。
LIBCMT.lib(crt0.obj) : error LNK2001: 外部シンボル "_main" は未解決です
Release/rd_setup.exe : fatal error LNK1120: 外部参照 1 が未解決です。
Debug版だと動くのが不可解で…。便乗ですがよろしくお願いします。
0640615
NGNG0641デフォルトの名無しさん
NGNG0642デフォルトの名無しさん
NGNG関数を使っていると、リンク時にmainがないと怒られる。
ソースからぁゃιぃコードを処理するか、MIN_CRTをあきらめるか、
どっちかにするとよい。
0643638
NGNGででで、できました!これで何をやったのか分からないので、
これから調べてきます。本当にありがとうございました。
オレもなんてアフォなんだ〜〜〜(゚∀゚)〜〜〜
0644デフォルトの名無しさん
NGNGどうやって手を出せばいいんでしょうか。
「DLL内の関数アドレスを取得する」というGetProcAddress()しかありません。
何とぞ、よろしくお願いいたします。
0645デフォルトの名無しさん
NGNG各メソッドの修飾された関数名を使ってGetProcAddress()する、
のかなあ・・・?
コンストラクタやデストラクタの処理とか大変そう。
DLL側の仕様を変更できるならそっちを考え直した方がいいでしょうね。
COMにするとか、第一引数でthisを(ハンドルみたいに)渡すように
するとか。
0646デフォルトの名無しさん
NGNG静的もしくは遅延結合で解決するしかありません
0647デフォルトの名無しさん
NGNGInvalidateRect(hStatic, NULL, TRUE)によってSTATICの部分のみを
任意のタイミングで再描画させようと思うのだけどイマイチ動作が不審
一応iが加算はされているから、WM_PAINTは呼ばれているようなのですが
パラメータでNULLを指定しているのに背景色で塗りつぶされません
hStaticをグローバル宣言にしても同様の結果でした
ソース
#include<windows.h>
LRESULT CALLBACK StaticProc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp)
{
static int i=0;
TCHAR wcStr[128];
HDC hDC;
PAINTSTRUCT ps;
static WNDPROC *pDefStaticProc;
if (hwnd==NULL){ pDefStaticProc=(WNDPROC *)wp; return 0; }
switch (msg) {
case WM_PAINT:
i++;
hDC=BeginPaint(hwnd, &ps);
SetBkMode(hDC, TRANSPARENT);
wsprintf(wcStr, TEXT("i=%d"), i);
TextOut(hDC, 10, 10, wcStr, lstrlen(wcStr));
EndPaint(hwnd, &ps);
return 0;
}
return CallWindowProc(*pDefStaticProc, hwnd, msg, wp, lp);
}
0648sage
NGNGstatic HWND hStatic;
static WNDPROC DefStaticProc;
switch (msg) {
case WM_CREATE:
hStatic=CreateWindowEx(0, "STATIC", NULL, WS_CHILD | WS_VISIBLE,
10, 10, 100, 100, hwnd, (HMENU)100,
(HINSTANCE)GetWindowLong(hwnd, GWL_HINSTANCE), NULL);
DefStaticProc=(WNDPROC)GetWindowLong(hStatic, GWL_WNDPROC);
StaticProc(NULL, 0, (WPARAM)(&DefStaticProc), 0);
SetWindowLong(hStatic, GWL_WNDPROC, (LONG)StaticProc);
return 0;
case WM_LBUTTONDOWN:
InvalidateRect(hStatic, NULL, TRUE); return 0;
case WM_DESTROY:
PostQuitMessage(0); return 0;
}
return DefWindowProc(hwnd, msg, wp, lp);
}
0649デフォルトの名無しさん
NGNGPSTR lpCmdLine,int nCmdShow ) {
HWND hwnd;
MSG msg;
WNDCLASS wc;
wc.style= CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc=WndProc;
wc.cbClsExtra=wc.cbWndExtra=0;
wc.hInstance=hInstance;
wc.hIcon=LoadIcon(NULL ,IDI_APPLICATION);
wc.hCursor=LoadCursor(NULL ,IDC_ARROW);
wc.hbrBackground=(HBRUSH)COLOR_WINDOW;
wc.lpszMenuName=NULL;
wc.lpszClassName=TEXT("Tom");
if (!RegisterClass(&wc)) return 0;
hwnd=CreateWindowEx(
0, TEXT("Tom"), TEXT("Jim"), WS_OVERLAPPEDWINDOW | WS_VISIBLE,
100, 100, 200, 200, NULL, NULL, hInstance, NULL);
if (hwnd==NULL) return 0;
while(GetMessage(&msg, NULL, 0, 0)) DispatchMessage(&msg);
return msg.wParam;
}
ソースここまで
hStaticをhwndにすれば一応ちゃんと動作はしますが、それだと何か嫌なので...
何が原因なのでしょうか?分かる方がおりましたら、解決法をおねがいします
0650デフォルトの名無しさん
NGNG0651デフォルトの名無しさん
NGNG> パラメータでNULLを指定しているのに背景色で塗りつぶされません
どこのことだ。NULLって。
0652デフォルトの名無しさん
NGNGInvalidateRect(hStatic, NULL, TRUE)
多分↑の2つ目の引数
0653644
NGNGひょっとしてDLLにあるクラスを使うというのは一般的じゃないんですか?
インポートライブラリーを使えばできるんですが・・・。
いまいち勉強が足りないんでしてきます。
0654デフォルトの名無しさん
NGNGUNIXでC++のライブラリを使う場合は静的バインドしか
ないのかな?房&スレ違いスマソ
0655デフォルトの名無しさん
NGNGカーネルにはモジュールとかあるけどね。
0656デフォルトの名無しさん
NGNGUNIXではあんまり使いやすくない。
もちろん閉じた環境(g++2.95以外使わない等)であれば問題ないけど。
1.メソッドの引数や戻り値の型情報をそのシンボル名に埋め込む方法
2.例外の扱い
3.フリーストアの扱い
4.テンプレートの実体化の方法
5.static initializerの実行方法
COMではこういう問題は起こらないことになってる。
0657デフォルトの名無しさん
NGNGXPCOMとか。
0658デフォルトの名無しさん
NGNGなるほど、房に対しての親切なお答えありがとうございます。
0660デフォルトの名無しさん
NGNGつけなければならないのでしょうか?
0661デフォルトの名無しさん
NGNGいーえ。別に付けなくとも宜しい。WINAPI は __stdcall のことで、__stdcall の意味はヘルプで見れば出てきます。自分で判断したまい。
0662デフォルトの名無しさん
NGNGPASCAL
0663デフォルトの名無しさん
NGNG何が言いたいんだ?
0664デフォルトの名無しさん
NGNG662では無いが、PASCAL形式の呼び出しルールって事だろ。
0665デフォルトの名無しさん
NGNG#define FAR __far
#define WINAPI FAR PASCAL
0666デフォルトの名無しさん
NGNG/Gz コンパイラ オプションを指定すると、ほかの呼び出し規約で
明示的に宣言されていないすべての関数が __stdcall になります。
とありました。
AppWizardでスタティックライブラリプロジェクトを選択したところ、
プロジェクト設定に/GZオプションが設定されていました。
ということは、この場合WINAPIを明示的に書かなくても自動的に
__stdcall=WINAPIを書いたことと同じことになるのでしょうか?
0667デフォルトの名無しさん
NGNG一目で外向けインタフェースだとわかるし、
万が一だれかがコンパイルオプションを変更してたとしても問題が出なくなる。
書くべきところには、明示的に書いた方がいい。
0668デフォルトの名無しさん
NGNGWin32ではPASCAL規約はなくなりました__stdcallに置き換えられます
みたいな記述がどこかにあった
したがって__stdcallが現在の呼び方なのだろう
0669デフォルトの名無しさん
NGNGCL のオプションはcase-sesitive。
/GZはデバッグ関連のオプションかと。
0670デフォルトの名無しさん
NGNG実際PASCAL呼び出し形式とstdcall呼び出し形式は違ったはず。
WIN16時代やね。
0671デフォルトの名無しさん
NGNGWin32ではSTDCALLと称する、という話があったような。
0672デフォルトの名無しさん
NGNGなるほど、これですっきりしました。
>>661からの流れで、明示的に書かなくてもいいけど
書いておいたほうが良いということですね。
0673デフォルトの名無しさん
NGNGえ!/Gzと/GZは違うんですか…
0674デフォルトの名無しさん
NGNGいや、書かないと_cdeclに。
C同志で双方のプログラマが申し合わせてるなら良いけど・・・。
0675デフォルトの名無しさん
NGNG__pascal キーワードが未だ存在しています。__stdcall とは別物です。
Pascal 言語である Delphi との互換性のためにあるのかと思いきや、
Delphi のデフォルトは fastcall です。なんじゃこりゃ。
0676デフォルトの名無しさん
NGNG0677デフォルトの名無しさん
NGNGfastcall = PASCALじゃないの?
Win16がなぜPASCALだったのかというとそれが一番高速だった(関数側でプッシュポップ?)からとかなんとか。
0678デフォルトの名無しさん
NGNGfastcall はレジスタ渡しです。32ビット以下のサイズの引数3つまで、レジスタに入れて渡します(残りはスタック)。MS の fastcall と Borland の fastcall は互換性がないらしく、__msfastcall というキーワードもあります。。。
0679デフォルトの名無しさん
NGNG0680デフォルトの名無しさん
NGNG0681デフォルトの名無しさん
NGNG付けとけばとりあえず問題はない。
付けない場合は以下のような問題があるが、当てはまらない場合は付けなくても良い。
「コンパイルオプションを変えてデフォルトの呼び出し規約を変更してしまったら、そのライブラリを呼び出せない。」
0682デフォルトの名無しさん
NGNGわかりました。つけておくことにします。
ありがとうございました。
0683デフォルトの名無しさん
NGNGMicrosoft 的正解は
COM にする
じゃないかなぁ。
0684デフォルトの名無しさん
NGNGCOMはOSに統合されたミドルウェアだから
そこでCOMを持ち出すのはアンフェアじゃないか?
0685デフォルトの名無しさん
NGNGhFile = CreateFile("Kou.dat",GENERIC_READ,0,NULL,OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,NULL);
//読みこみを失敗したら終了
if(hFile == INVALID_HANDLE_VALUE){
ErrorRead();
GameExit();
}
ReadFile(hFile,&Kou,sizeof(KOU)*6,&byteCount,NULL);
CloseHandle(hFile);
ReadFileの中は,あっているんでしょうか?
0686デフォルトの名無しさん
NGNGその場合も&いらない。
0687デフォルトの名無しさん
NGNGなら、次のどれか。
ReadFile(hFile,&Kou,sizeof(KOU)*6,&byteCount,NULL);
ReadFile(hFile,Kou,sizeof(KOU)*6,&byteCount,NULL);
ReadFile(hFile,&Kou,sizeof(Kou),&byteCount,NULL);
ReadFile(hFile,Kou,sizeof(Kou),&byteCount,NULL);
Cスレの前の方にあった
> KOU *Kou = /*なんかメモリ確保関数 */
の場合なら話は別。
0688デフォルトの名無しさん
NGNGありがとうです
配列ですもんね
居酒屋行って来ます
0689645
NGNG(DLLのC++クラスを利用する)
インポートライブラリを使えば簡単にできてしまいますね。でも…。
装飾関数名の問題(>>656さんの1と同じこと)とかLoadLibrary()で
使えなくなるとかいうことを考えると、後々になってそのDLLを
利用するときに困る*かも*しれません。
とにかく個人的にはお勧めしません。
>683に同感です。
0690デフォルトの名無しさん
NGNGnewしたclassのポインタ戻すって手はあるがなぁ。
まぁでもやっぱCOMだろうな。
0691デフォルトの名無しさん
NGNG_tcscpy と lstrcpy
など、同じことをする関数だと思うのですが、何か違う働きをするのでしょうか?
0692デフォルトの名無しさん
NGNG>_stprintf と wsprintf
取りあえずwsprintfはWindowsAPI
0693デフォルトの名無しさん
NGNG誰もそんなこと聞いてないと思われ
0694デフォルトの名無しさん
NGNGLinuxではswprintfか。紛らわしいな。
0695デフォルトの名無しさん
NGNG_tcscpyとlstrcpyは同じ。
ちなみにlstrncpyは末尾に必ず'0をコピーするが、
_tcsncpy/strncpy/_mbsncpyは0はコピーしない処理系もある。
書式、長さを扱う文字列処理関数の場合、
APIで指定したロケールSetThreadLocaleに従うか、
setlocale, _tsetlocaleで指定したロケールに従うかで
挙動が変る可能性がある。
0696井筒監督
NGNG理由?そんなもん無い。そんなもん無くたっていい。
0697デフォルトの名無しさん
NGNGWindowsの処理系にもswprintfはある。
sprintfのwchar_t版だろ。
swprintfとwsprintfは別物
0698デフォルトの名無しさん
NGNG0699デフォルトの名無しさん
NGNG0700デフォルトの名無しさん
NGNG小数点型って言語依存したような。
0701デフォルトの名無しさん
NGNGwsprintfWダネ
0702デフォルトの名無しさん
NGNGつまりswprintfとwsprintfA/wsprintfWは別物なの。
知ったかぶっても恥ずかしいだけなの
0703デフォルトの名無しさん
NGNG0704デフォルトの名無しさん
NGNG0705デフォルトの名無しさん
NGNG(A)のメッセージをフックして(B)に通知する以外の(DLLが不要な)方法を知りたいです
0706デフォルトの名無しさん
NGNG0707デフォルトの名無しさん
NGNGそれはフックしないと読みとれないからダメなんです
0708デフォルトの名無しさん
NGNG0709デフォルトの名無しさん
NGNG自分のプロセスだったらAPIも何もないんですが
0710デフォルトの名無しさん
NGNG同じならBにメッセージを送る
・・・くらいしか思いつかん
他にいい方法あるんかいな
0711デフォルトの名無しさん
NGNG他のウインドウがアクティブになり、自分が非アクティブになることを
WM_ACTIVATEで伝えてくれるんだが、これじゃ不足なのか?
もちろん、どのウインドウがアクティブになるのかも伝えてくれるんだが
0712デフォルトの名無しさん
NGNG試しにコードを書けば判りますが、どのウインドウがアクティブになるのかは伝えてくれません
ともかく特定のウィンドウがアクティブじゃないと通知されないというのだと全く役に立たないんです
タイマーは回しすぎると処理が重くなりますし、回しが少ないとラグが発生してしまいます
アクティブウィンドウの変化を特定ウィンドウに知らせるようなAPIはないもんですかね
0713デフォルトの名無しさん
NGNGフックすればいいじゃん。
0714デフォルトの名無しさん
NGNG>>705
0715デフォルトの名無しさん
NGNG無い以上そうするしかないんじゃ?
実力がないなら実力以上のことはしないことだ。
0716デフォルトの名無しさん
NGNGまっとうな答えだと思うが。
0718デフォルトの名無しさん
NGNGコメントの色を赤にしなさい。
0719デフォルトの名無しさん
NGNG「別のユーザ名」を取得したいのですが、何か良いAPIを知りませんか?
...別のユーザとしてプロセスを動かしているので、ログインしたユーザとは違いますよね?
ご存知の方、よろしくお願いします。
0720デフォルトの名無しさん
NGNG0721デフォルトの名無しさん
NGNGアドレス(ポインタ)のようなものですか?
0723デフォルトの名無しさん
NGNG最近、本格的にWindowsプログラミングでGUI系のやり始めたけど・・
コンソールじゃできないことがイパーイできるじゃんかYO
アイデアがモリモリキター
0724デフォルトの名無しさん
NGNGたとえば?
0725デフォルトの名無しさん
NGNG自分がどのユーザグループに所属しているのかを取得するAPIを知りませんか?
0726_
NGNGLVM_GETITEMTEXTメッセージを送るとエクスプローラがコケるんですが、何が悪いのでしょうか?
ソースはおよそ以下の通り。
LVITEM.mask = LVIF_TEXT
LVITEM.iItem = 1&
LVITEM.iSubItem = 0&
LVITEM.cchTextMax = 255&
LVITEM.pszText = String(.cchTextMax + 1&, vbNullChar)
Call SendMessage(ExplorerhWnd, LVM_GETITEMTEXT, 1&, LVITEM) '←ここでエクスローラがコケる
どなたかご存じの方、教えて頂きたく宜しくお願い致します。
0727デフォルトの名無しさん
NGNGGetLastError()で調べてみると「ハンドルが無効です」と出ました。
DllMain()ではしっかりとTRUEを返してます。
もちろんDLLもプロジェクトと同じフォルダに入っております。
この問題の原因はどういった事が真っ先に考えられますか?
0728デフォルトの名無しさん ◆E12W1IlM
NGNG0729デフォルトの名無しさん
NGNGNetUserGetLocalGroups
0730727
NGNGいえ、なってません。パスを間違えるとGetLastErrorは「指定されたモジュールが見つかりませんでした」と
言ってきます。ちなみにDLLの関数を一回だけ呼ぶ、というテスト的なプログラムで
妙なコードは一切無いです。DLLの方も小さい関数が3つほどあるだけなんですが・・・。
0731デフォルトの名無しさん
NGNG0732デフォルトの名無しさん
NGNG0734727
NGNGGetProcAddressで使うとNULLが返ってくるんです。
0735デフォルトの名無しさん
NGNGコード出せ。おじさんがみてあげよう。
0736デフォルトの名無しさん
NGNG名前が修飾されている罠。
0737727
NGNGHINSTANCE hInstDll;
void (*hoge)(char*, ...);
DWORD ec;
hInstDll = LoadLibrary("DLL\\TEST.dll");
ec = GetLastError();
hoge = (void (*)(char*, ...))GetProcAddress(hInstDll, "test_func");
//(*hoge)("テストです、押忍。");
0738デフォルトの名無しさん
NGNG関数名の修飾はどうなってるんでしょう?
0739デフォルトの名無しさん
NGNGてかdll側の問題と思われ。
0740デフォルトの名無しさん
NGNG0741727
NGNG#include <windows.h>
#include <stdio.h>
//お知らせ風メッセージボックスを出す。
EXPORT void test_func(char* message, ...)
{
va_list list_ptr;
char buf[200];
va_start(list_ptr, message);
vsprintf(buf, message, list_ptr);
va_end(list_ptr);
MessageBox(hwnd, buf, "お知らせ", MB_ICONINFORMATION);
return;
}
TEST.DLLのtest_funcの実装と、それに必要なコードです。hwndはグローバル変数です。
ちなみにこのDLL、インポートライブラリを通してならば問題なく使えますが、これは何かのヒントになりますか?
0743デフォルトの名無しさん
NGNGそらエクスポートできん。
0744デフォルトの名無しさん
NGNGの結果は?
0745743
NGNG__declspec(dllexport)あるからdefファイルいらん。
0746デフォルトの名無しさん
NGNG0747727
NGNG皆様、ありがとうございました。
つまり、C++の決まりに従ってDLLにある test_func() は void_test_func_char() のように飾られて
しまっているので GetProcAddress()で "test_func" を指定しても見つかりっこねえやってこったと解釈したんですが
よろしいでしょうか。
0748デフォルトの名無しさん
NGNGコンパイラが都合の良いように名前変えちゃうのよね。
0749デフォルトの名無しさん
NGNGその解釈であってるよ
0750デフォルトの名無しさん
NGNG0751デフォルトの名無しさん
NGNGデフォルトで用意されていますか?こんなの。
struct pl {
char *lpstr ;
int nlen ;
} ;
あったら作るのたるいのであったら教えてください。
APIでもCでもいいです。
0752デフォルトの名無しさん
NGNGstrlen唱えればいい話。
ところで長い文字列ってDelphiか?w
0753デフォルトの名無しさん
NGNGSetupDi〜?
0754デフォルトの名無しさん
NGNG切り取るんです・・・いちいちmallocするとメモリの無駄なので
メインバッファ一個用意しといてポインタと長さだけを保存するんです。
0755デフォルトの名無しさん
NGNG0756デフォルトの名無しさん
NGNG0757デフォルトの名無しさん
NGNG0758デフォルトの名無しさん
NGNG"string1\0string2\0string3\0"
こんな感じにしといてそれぞれの頭のポインタ持っとけ。
0759デフォルトの名無しさん
NGNG0760デフォルトの名無しさん
NGNG0761デフォルトの名無しさん
NGNG文字化けしてしまい送れません。送り方を教えて下さい。m(__)m
↓の方法だと、メモ帳などには送れるのですが...
HWND hSendWnd; // Office2Kの入力フィールド
CString strEditString = "あいうえお";
CString strTmp;
BYTE Hibyte,Lowbyte;
WORD word;
for(int i=0;i<strEditString.GetLength();i++){
strTmp = strEditString.Mid(i, 2);
Hibyte = BYTE(strTmp.GetAt(0));
Lowbyte = BYTE(strTmp.GetAt(1));
word = MAKEWORD(Lowbyte, Hibyte);
::PostMessage(hSendWnd, WM_IME_CHAR, word, 0x0001);
i++;
}
0762デフォルトの名無しさん
NGNGBSTRというのがあるけどunsigned shortでunicodeだなあ...
0763デフォルトの名無しさん
NGNGする。
"あいうえお"はShiftJISのよな。
_T("あいうえお")をWin32Unicodeプロジェクトでコンパイルしないと
うんこーどにならんかたきがする。
0764761
NGNGLONG nData;
for(int nIndex=0;nIndex<strEditString.GetLength();nIndex++){
nData = strEditString.GetAt(nIndex);
nData &= 0x000000FF;
::PostMessage(hSendWnd, WM_CHAR, nData, 0x0001);
}
いじょ。報告だけ(^^;
0765デフォルトの名無しさん
NGNG0766デフォルトの名無しさん
NGNG・・・ので、再インストールしたんですが、状況は変わりません。
例えばデバッグの開始→ステップインを選んでも普通にプログラムが起動するだけだったり
ブレークポイントもお構い無しにプログラムは走り続けます。
原因はさっぱりわかりません。ヘルッミー!!
0767デフォルトの名無しさん
NGNGんぁわけないか・・・
0768デフォルトの名無しさん
NGNG再インスコするときは、レジストリのキー(HKCU)を削除してからでないと、完全でない。
ってか、今の状態で、
HKEY_CURRENT_USER\Software\Microsoft\Devstudio
を削除したら治るかもよ。
0769デフォルトの名無しさん
NGNG直りました。マリガトー
0770デフォルトの名無しさん
NGNGコンボボックスをリソースエディタでつくりまして
SendMessage(GetDlgItem(hWnd, IDC_COMBO), CB_INSERTSTRING, (WPARAM)i, (LPARAM)str);
で起動後複数個データを入れまます
コンボボックスで上下矢印キーを押すとたしかに入力されているのですが、
ドロップダウンをしてくれないのです
正確にはしてるようなのですが、1ドットくらいしか開いてくれないので選択できないのです
コンボボックスの下は充分に空いています
リソースエディタでコンボボックスのスタイルを「ドロップダウン」にしています
なにが足りないのでしょうか
猫プロなどだと、ただデータをSendMessageで足しているだけのようなのですが…
0771デフォルトの名無しさん
NGNG足しただけでしたにばーっと開かなかったっけ?
0772デフォルトの名無しさん
NGNGリソースエディタでコンボボックスの矢印押して、出たサイズ変更枠を下に広げてみ。
0774デフォルトの名無しさん
NGNG対する操作をログに記録しようとしています。
例えばログイン画面があって、そこでログインボタンを押したときに、
ボタンを押した時間と、利用者が EDIT コントロールに入力した
ログイン ID を記録したいのです。
で、そのアプリとは別の監視アプリを VC++6 で作って、dll に
SetWindowsHookEx(WH_GETMESSAGE,(HOOKPROC)MyHookProc,hInst,NULL) として、
MyHookProc は
EXPORT LRESULT CALLBACK MyHookProc(int nCode, WPARAM wp, LPARAM lp){
MSG *lpMsg;
lpMsg = (MSG *)lp;
if (nCode < 0) return CallNextHookEx(hHook, nCode, wp, lp);
if ( lpMsg->message == WM_COMMAND ){
としました。この中でログを取ろうとしています。
しかし、ボタンを押したときに出る WM_COMMAND が届きません。ボタンのすぐ上に
ある (=ボタンと兄弟ウィンドウの) EDIT コントロールに何か書くとログに
残るので、大枠のところは間違っていないと思っています。また、Spy++ で見ると、
確かにボタンを押すと親ウィンドウに WM_COMMAND が飛んでいます。
どうやればボタンからの WM_COMMAND を取得できるのでしょうか? 取得できない
原因としては、メッセージを投げる方法には PostMessage とか SendMessage とか
いろいろあるようなので、EDIT とボタンのメッセージの投げ方が違うのかなぁと
思っているのですが (そのアプリは VB で作ってあります)。
あるいは WM_COMMAND を取得する以外の方法はありますでしょうか?
0775デフォルトの名無しさん
NGNGWM_COMMAND はメッセージキューを通らず直接 SendMessage で送られるので、 WH_GETMESSAGE で捕まえられません。
WH_CALLWNDPROC でどうぞ。
0776デフォルトの名無しさん
NGNG0777デフォルトの名無しさん
NGNGHOOKですべてのメッセージキャッチしてる時点でそれしか・・・。
0778デフォルトの名無しさん
NGNGありがとうございます。明日会社で試してみます。
>>776
> 覗き見ツールの香りが...
各操作のどこでどれくらい時間がかかっているかを分析するための
生産性管理ツールです (いや、別に覗き見ツールでもいいんですけど)。
監視したいアプリは他社開発のもので、その会社はアプリの本体で
手一杯。ということで別アプリから監視することになりました。
>>777
> HOOKですべてのメッセージキャッチしてる時点でそれしか・・・。
特定のスレッドだけ監視すれば? ってことですよね。まだデモプログラム
作成段階なので、とりあえず全メッセージ取ってます。
本業は UNIX 屋で、Windows で初めて作るプログラムがコレなので、
わからんことだらけですが、なかなか新鮮でおもしろいもんですね。
Hook という仕組みは UNIX にはないし、コントロールなんて高機能な
ものを OS が提供しているのも驚きです (ライブラリが提供している
ものだと思っていた)。
0779774=778
NGNG>>775
> WM_COMMAND はメッセージキューを通らず直接 SendMessage で
> 送られるので、 WH_GETMESSAGE で捕まえられません。
↑こういうことってどこに書いてありますか? MSDN をいろいろ検索した
つもりなんですが、読んだ覚えがありません (というより WM_GETMESSAGE は
全てのメッセージを捕まえる、と書いてあったような)。
また、「このメッセージを捕まえたいときは WM_* をフックすればよい」
というメッセージの分類のようなものはどこかに書いてあるのでしょうか?
毎回掲示板で質問するのも御迷惑をおかけすることになりますので、
ぜひ情報元を教えて下さい (書籍でも構いません)。
0780デフォルトの名無しさん
NGNGそのとおりです。
USER32.dllというライブラリを標準としてMSが配布しているだけです。
0781デフォルトの名無しさん
NGNGSetWindowsHookEx の WH_GETMESSAGE のところには
> Installs a hook procedure that monitors messages posted to a message queue.
「メッセージキューにポストされたメッセージをモニタする」と書いてあるので、メッセージキューにポストされないメッセージはモニタ出来ないと考えられます。
Windows のメッセージは PostMessage でメッセージキューにポストされるものと、SendMessage で直接ウィンドウプロシジャに送りつけられるものがあります。
例えば WM_MOUSEMOVE の説明を見ると
>The WM_MOUSEMOVE message is posted to a window when the cursor moves.
ポストされると書いてあるのに対し、WM_COMMAND は
>The WM_COMMAND message is sent when (以下略)
送られると書いてあるようなので、どちらか調べられるようです。
>また、「このメッセージを捕まえたいときは WM_* をフックすればよい」というメッセージの分類のようなものはどこかに書いてあるのでしょうか?
メッセージキューにポストされたメッセージも、メッセージループの DispatchMessage で結局ウィンドウプロシジャに渡される場合が多いので、WH_CALLWNDPROC でフックしとけば大抵のメッセージを監視できます。
具体的にどういう場合にどのメッセージを処理すれば良いのかについては・・・まぁ単純に暗記というか。経験とか勘とか、場合によっては調査が必要ですな。
>>780
OSと一緒に配布されてるし、OSが提供してるライブラリとも言えなくも
0782デフォルトの名無しさん
NGNG0783デフォルトの名無しさん
NGNGMSDNでSetWindowsHookExの所をみると、
各フックプロシージャの解説へのリンクがちゃんとあるなりよ。
0784774
NGNG-MSG *lpMsg;
-lpMsg = (MSG *)lp;
+SetWindowsHookEx(WH_CALLWNDPROC,(HOOKPROC)MyHookProc,hInst,NULL)
+CWPSTRUCT *lpCwp;
+lpCwp = (CWPSTRUCT *)lp;
で できました。感謝!
>>780
> USER32.dllというライブラリを標準としてMSが配布しているだけです。
そうなんですか。よく考えると GUI の部品 (のフレームワーク) を
カーネルに含めるはずないですね。
>>781 >>783
なるほど。基礎知識不足で、マニュアルから読み取れていませんでした。
>>782
> 監視目的ならWH_JOURNALRECORDでいいじゃん
ほうほう! Windows にはこんなのがあるんですね。これはおもしろそうだ。
今回は監視というより統計を取るのが目的なので、結局メッセージを解析
しなければならないことには変わりないため、WH_CALLWNDPROC でいこうと
思います。しかし、どのデータについて統計処理するのかを後から (試行
錯誤しながら) 決めたい場合は、とりあえず WH_JOURNALRECORD で丸ごと
保存しておくのも有効なんでしょうね。
0785デフォルトの名無しさん
NGNG0786デフォルトの名無しさん
NGNG0787デフォルトの名無しさん
NGNGSHGetSpecialFolderLocation
0788デフォルトの名無しさん
NGNGHKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
…とか。
0789デフォルトの名無しさん
NGNGそれは最低・・・
0790デフォルトの名無しさん
NGNG0791デフォルトの名無しさん
NGNG0792デフォルトの名無しさん
NGNG開発者なのに未だに Windows 9X だけ使ってますか?
それとも迷い込んだ単なるヨタか?
0793デフォルトの名無しさん
NGNGネタにマジレス。
・・・大丈夫か?
0794デフォルトの名無しさん
NGNG必ずc:\my documentsみたいな物言いだな。
0795デフォルトの名無しさん
NGNG>そんなもん、c:\my documents に決まってるだろヴォケ!
これがネタだと気付いていないお前が問題。笑うところだよ。これ。
0797デフォルトの名無しさん
NGNGごめん、同志よ。攻撃対象を間違ったようだ。
0798デフォルトの名無しさん
NGNGa:\my documentsをどうしてくれるッ!
0799デフォルトの名無しさん
NGNGsetup /at
0800デフォルトの名無しさん
NGNGc:\my documents なら Windows 9X と
Windows 9X なら c:\my documents は違う。
彼の物言いからそう感じるとしたら君も人のことは言えない。
0801デフォルトの名無しさん
NGNG>>800の文章は変だ。
0802デフォルトの名無しさん
NGNG0804デフォルトの名無しさん
NGNG( ・∀・) < お茶入りました
(つ旦と) \________
と_)_)
0805デフォルトの名無しさん
NGNGドキュメントには
Windows 95/98/Me: Requires Windows 95 or later.
って書いてあるのに。
これはドキュメントが間違ってるんだよね?
それと、特別なフォルダ名を取得するAPIでは
SHGetSpecialFolderLocationが一番汎用的ってことでいいですか?
0806デフォルトの名無しさん
NGNGうぃ。
0807805
NGNGなんか常識みたいですね。
SHGetFolderPathのヘルプは誤ってることを心に刻んでおきます。
そしてSHGetSpecialFolderLocationを使うようにします。
ありがとうございました。
0808デフォルトの名無しさん
NGNGローカル変数はスレッド毎に用意される?
それとも一つの変数を同時に利用してぐっちゃぐちゃ?
0809デフォルトの名無しさん
NGNG関数が使用するローカル変数(=自動変数)は
スレッド毎のスタックに置かれるので別々。
0810デフォルトの名無しさん
NGNG関数によるんじゃない?
関数内にstatic変数があったりしたらアレだし。
リソースにアクセスするものなら排他制御は必須だし。
0811デフォルトの名無しさん
NGNGありがとう。
0813デフォルトの名無しさん
NGNGどうしたらよいでしょう?それっぽいメッセージとか見つかりません。。
0814デフォルトの名無しさん
NGNG0815809
NGNG0816デフォルトの名無しさん
NGNG>>810は>>808あてだと思われ
時間的にも>>809は読んでないかと
0817デフォルトの名無しさん
NGNG>>810のポインタは>>809にはむいていない罠。
一分以内に3行に及ぶ反論が書けるわけがない罠。
ちゃんとよめ
0818デフォルトの名無しさん
NGNGイ�`!
0820デフォルトの名無しさん
NGNG(゚д゚) エンジョイプレイ! 漏れに免じて許せ
<( )
< \
0821デフォルトの名無しさん
NGNGじゃあお前がshine
0822デフォルトの名無しさん
NGNG/⌒ヽ )
i三 ∪ イイダロウ・・・
|三 |
(/~∪ ::::::::::::::::::::::
 ̄ ̄ ̄ ̄| ::::::::::::::::::::::::::::::::::::: ビュゥゥゥー・・・
口 口 |:::::::::::/ ̄ ̄ ̄\::::::::::::
口 口 |::::::::/ ヽ::::::::::::::
口 口 | ̄┌┐l ̄l .| ̄ ̄ ̄| ̄ ̄
口 口 | | ̄ ̄ ̄| | | | ̄ ̄
口 口 | | | | | |
0823デフォルトの名無しさん
NGNG::::::::::::::::::::::
 ̄ ̄ ̄ ̄| ::::::::::::::::::::::::::::::::::::: ビュゥゥゥー・・・
口 口 |:::::::::::/ ̄ ̄ ̄\::::::::::::
口 口 |::::::::/ ヽ::::::::::::::
口 口 | ̄┌┐l ̄l .| ̄ ̄ ̄| ̄ ̄
口 口 | | ̄ ̄ ̄| | | | ̄ ̄
口 口 | | | | | |
0824shige
NGNG0825in 地獄
NGNG///// \ ///////
/// (゚д゚) エンジョイプレイ!
/// <( ) /////
/// < \ //////
//// //////
0826デフォルトの名無しさん
NGNGおいおい誰もツッコミ入れてないのかよ…
SHGetFolderPathの
Windows 95/98/Me: Requires Windows 95 or later.
は間違ってるんじゃなくて、shfolder.dllを一緒に配布することを
前提にしてるだけ。
0827デフォルトの名無しさん
NGNGレジストリから直接取得するしかないのでしょうか?
それともAPI経由で取得できますか?
0828デフォルトの名無しさん
NGNGナイスつっこみ
0829デフォルトの名無しさん
NGNG0830デフォルトの名無しさん
NGNG例えば、大きさが 24x32 の TopDown-DIBの矩形(0,0)-(24,16)を
DC上の(X,Y)へ描画する場合。
SetDIBitsToDevice(DC,
X, // 転送先の長方形の左上隅のx座標
Y, // 転送先の長方形の左上隅のy座標
24, // 転送元の長方形の幅
16, // 転送元の長方形の高さ
0, // 転送元の長方形の左下隅のx座標
31, // 転送元の長方形の左下隅のy座標
31, // 配列内の最初の走査行
16, // 走査行の数
Bits, Info, DIB_RGB_COLORS);
これだと、下半分が(X,Y)へ描画されました。
SetDIBitsToDevice
http://msdn.microsoft.com/library/en-us/gdi/bitmaps_8e5h.asp?frame=true
http://www.microsoft.com/JAPAN/developer/library/jpgdipf/_win32_setdibitstodevice.htm
0831デフォルトの名無しさん
NGNG(0,0)-(24,16)なんだから左下隅の座標はボトムアップなら(0,16)
トップダウンなら(0,15)だろ。
どこから(0,31)なんて数字が出てきたんだよ。
0832831
NGNG0833830
NGNGなので、転送元のDIBの一番下のy座標、つまり 31 だと思ったんだけど、、、
いろいろ試している内に混乱していました。
>配列内の最初の走査行
ボトムアップで0だから、トップダウンなら最後の行の 31 だろうと、、、
そこから 16 行って思いました。
0834デフォルトの名無しさん
NGNGSetDIBitsToDevice(DC, X, Y, 24, 16, 0, 0, 0, 16, Bits, Info, DIB_RGB_COLORS);
じゃだめ?
0836デフォルトの名無しさん
NGNGだと一行しか表示されない。
あたかも 15 - 16 行目が表示されているよう。
0837デフォルトの名無しさん
NGNG833が望むのとは何か違うのかな。
0838デフォルトの名無しさん
NGNG0839デフォルトの名無しさん
NGNG>>838 ボトムアップは標準でないかい
0840デフォルトの名無しさん
NGNG0841デフォルトの名無しさん
NGNG0842デフォルトの名無しさん
NGNG0843デフォルトの名無しさん
NGNG0844デフォルトの名無しさん
NGNG0845デフォルトの名無しさん
NGNG>>834のやり方だとトップダウンとボトムアップで下半分が表示されました。
そして、
SetDIBitsToDevice(DC, X, Y, 24, 16, 0, 15, 0, 32, Bits, Info, DIB_RGB_COLORS);
0, // 転送元の長方形の左下隅のx座標
15, // 転送元の長方形の左下隅のy座標
0, // 配列内の最初の走査行
32, // 走査行の数
で ボトムアップ、トップダウンにかかわらず、
24x32の画像の上半分(0,0)-(24,16)が表示されました。
>配列内の最初の走査行
は Bits が指すメモリブロックの最初の行、
(ボトムアップなら、31になる?)
>走査行の数
は Bits が指すメモリブロックの行数なのかな。
Windows95ですけど。
0846デフォルトの名無しさん
NGNG>>839の件はどう?
0847デフォルトの名無しさん
NGNGInfo.bmiHeader.biHeight > 0 の
ボトムアップ画像でも下半分が表示されるのですよ。
もし Bits にトップダウン画像へのメモリブロックが入っていたら、
上下逆に表示されるので解ります。
0848デフォルトの名無しさん
NGNG> なので、転送元のDIBの一番下のy座標、つまり 31 だと思ったんだけど、、、
DIBと長方形を勝手に一緒にするなボケ。
お前は上半分だけを転送したいんだから転送元の長方形は
転送元の「DIBの上半分」、だからその一番下のy座標は15だろ。
> >配列内の最初の走査行
> ボトムアップで0だから、トップダウンなら最後の行の 31 だろうと、、、
意味不明。最初の走査行って書いてるのにどうして最後の行になるんだ?
頭大丈夫か?
0849デフォルトの名無しさん
NGNGボトムアップのときは1ラインずれてるはず。
0850831
NGNGだと最初から言ってるのに。
走査行ってのは、メモリが少ないとき、
lpBitsに最初の16行ぶんを読み込み→走査行に0, 16を指定して転送→
lpBitsに残りの16行ぶんを読み込み→走査行に16, 16を指定して転送
みたいにすると、
lpBitsに全体を読み込み→走査行に0, 32を指定して転送
した場合と同じ結果になるからメモリが節約できる、というもの。
だから今ではよほどメモリが少ないとかよほど巨大なビットマップ
の印刷だとかでない限り深く考えずに常にビットマップ全体
(この場合なら0,32)でいいの。
0851デフォルトの名無しさん
NGNG3分の1にしてみろ。違いがはっきり分かるから
0852デフォルトの名無しさん
NGNGフォルダを判定しようと思ったのですが、これだと特殊なシェルフォルダを認識できないようです。
例えば、FavoritesなどはFILE_ATTRIBUTE_DIRECTORYで判定対象にならないみたいなのです。
こういった特殊なフォルダも含めて、フォルダだけを抜き出すように判定したいのですが
どうしたら良いでしょうか?
0853852
NGNG0854830
NGNG転送元の長方形が解りません。
>転送元の長方形の左下隅のy座標
だから、ボトムアップ、トップダウンにかかわらず、
転送元の長方形が(0,0)-(24,16)なら 15、
転送元の長方形が(0,0)-(24,8)なら 7、
になるんじゃないんですか?
0855デフォルトの名無しさん
NGNG著者のホームページにあるバグリストには特に何も書いてないんですが。
http://www.charlespetzold.com/pw5/pw5faq.html
a = malloc(100);
b = malloc(100);
c = malloc(100);
d = malloc(100);
if(!a || !b || !c || !d){
if(!a) free(a);
if(!b) free(b);
if(!c) free(c);
if(!d) free(d);
//エラー処理//
}
0856デフォルトの名無しさん
NGNG黙ってFreeすればいいだろうに。
0857デフォルトの名無しさん
NGNGずれていました。
転送元の長方形の左下隅のy座標=15だと、
(0,1)-(24,17)が転送されてました。
y座標=16 にしたら
(0,0)-(24,16)になりました。
でも、
y座標=8 で(0,0)-(24,8)が転送されません。
(0,8)-(24,24)が転送されているみたい。
で、
>転送元の長方形の左下隅のy座標
と言うのは、ボトムアップとトップダウンだと
違うのでしょうか?
>>848の
>DIBと長方形を勝手に一緒にするなボケ。
が本当なら、一緒ではないでしょうか?
0858デフォルトの名無しさん
NGNG>(0,8)-(24,24)が転送されているみたい。
さっきやってみたら違っていました。
SetDIBitsToDevice(DC, X, Y, 24, 8, 0, 8, 0, 32, BottomUpBits, BottomUpInfo, DIB_RGB_COLORS);
で (0,16)-(24,24)が転送されています。
0859デフォルトの名無しさん
NGNGおぉ、確かに間違っているようですな。
0860デフォルトの名無しさん
NGNG暗に「free(NULL) は無害」って言っているように見えるけど、
それってグローバルな規格になってます?
昔、free()にNULLを渡すと見事に凍り付いてたような記憶があって、
漏れもPetzoltみたいにチェック入れてるクチなんだけど。
あ、スレ違いスマソ
0861デフォルトの名無しさん
NGNG0862デフォルトの名無しさん
NGNG0863デフォルトの名無しさん
NGNG0864デフォルトの名無しさん
NGNG渡すんですが、構造体名はどうしたらよかとでしゅか?
0865デフォルトの名無しさん
NGNGどこがだよ。 >>855と>>856をちゃんと読んでるか?
0866デフォルトの名無しさん
NGNG・・・長いな。目的がわからんから、なんとも。
0867デフォルトの名無しさん
NGNG0868デフォルトの名無しさん
NGNG>>855が言いたいことは、
a = malloc(100);
b = malloc(100);
if (a || b) {
if (a) free(100);
if (b) free(100);
}
こうじゃないの? って言いたいんだと思うけど、違うの?
0869デフォルトの名無しさん
NGNG>>860の突っ込み先が>>856ではなくて855に見えるのかキミは。
0870デフォルトの名無しさん
NGNG見えた、スマソ
0871デフォルトの名無しさん
NGNGこれで
boost::tuple<HWND, HANDLE, std::string, UINT>
0872デフォルトの名無しさん
NGNG全ソースと説明を見ないと何とも言えない。
わざと変なコードを書いているのかもしれないし。
0873デフォルトの名無しさん
NGNG再生するプログラムを作っているんですが、
流れる音楽の音量を変えるにはどうしたらいいか分からないので
誰か教えてもらえませんか?
0874デフォルトの名無しさん
NGNGIEのメニューとかでメニューアイテムをドラッグ出来て便利だけれど
あれはどのように実装されているんでしょうか?
0875デフォルトの名無しさん
NGNG言いたいことはわかるけど、バグ作りこんでるぞ。
if (a || b) { は、if(!a || !b){ のままで、良いだろ。
0876デフォルトの名無しさん
NGNG0877デフォルトの名無しさん
NGNGいやがる人もいるがmixer〜系APIを使うのが一番手頃
0879774
NGNGSetWindowsHookEx(WH_CALLWNDPROC,(HOOKPROC)MyHookProc,hInst,NULL)
でフックして、
EXPORT LRESULT CALLBACK MyHookProc(int nCode, WPARAM wp, LPARAM lp){
CWPSTRUCT *lpCwp;
lpCwp = (CWPSTRUCT *)lp;
if (nCode < 0) return CallNextHookEx(hHook, nCode, wp, lp);
if ( lpCwp->message == WM_COMMAND ){
でメッセージをチェックすればよい、と教えていただきました。
しかし、マウスでボタンを押した場合はこれで OK なんですが、(TAB キーで)
ボタンにフォーカスを合わせ、Enter を押したときはメッセージが取得できません。
Spy++ で見ると、WM_COMMAND は発行されておらず、
P message:0x100E [ユーザー定義:WM_USER+3086] wParam:0000000B lParam:00000000
というメッセージしか出ていないように見えます。
で、
if ( lpCwp->message == WM_COMMAND || lpCwp->message == 0x100E ){
としてみたのですが、これでも Enter 押下時のメッセージは取れません。Enter 押下時
に発行されるメッセージを取得する方法をご存知の方、教えてください。
最悪 WH_KEYBOARD で取るしかないのでしょうか? (つくりが煩雑になりそうなので、
それは避けたいと思っています)
0880デフォルトの名無しさん
NGNG0881774
NGNGありがとうございます。
WH_JOURNALRECORD については >>782 で教えていただいたのですが、
そのときは >>784 ということで、今回は WH_CALLWNDPROC と WM_COMMAND で
いこうと考えました。
それでもやはりこの場合は、WH_JOURNALRECORD を使う方がよいでしょうか。
0882デフォルトの名無しさん
NGNG0883デフォルトの名無しさん
NGNG0884774
NGNGWH_GETMESSAGE でいけました。
最初は WH_GETMESSAGE で WM_COMMAND を取ろうとしてうまくいかなくて
WH_CALLWNDPROC を使うことにしたのですが、結局 WH_GETMESSAGE に
戻ってしまいました。
そもそもの「WM_COMMAND を取る」という方針が間違っていたわけですね。
ありがとうございました。
0885デフォルトの名無しさん
NGNGWebブラウザを起動して特定のURLにアクセスする処理を作りたいと
思っています。デフォルトのWebブラウザを起動する、又はデフォルト
のWebブラウザのフルパスを取得するAPIは存在するでしょうか?
もし、無いならレジストリからデフォルトのWebブラウザを識別する
にはどうすればよいでしょうか?
0886デフォルトの名無しさん
NGNG0888デフォルトの名無しさん
NGNG下の方はレジストリ検索すれば済む話だと思う。
0889858
NGNG0890デフォルトの名無しさん
NGNGコピーしてしまい、描画のときはこれを使うんですが、おかしな事になってます。
というのは、ある描画を境にそのデバイスコンテキストハンドルが無効?になるんです。もちろんそのデバイスコンテキストハンドルは
一切いじってません。DrawTextやStretchDIBitsなどでそのデバイスコンテキストハンドルを指定しても何も書いてくれないけれど、エラーも返りません。
そこで新たにGetDCで得たものを使うとばっちり描画されます。これはどういうことでごわすか。
0891デフォルトの名無しさん
NGNG0892たま
NGNG現在、作成したバッチ変換のアプリケーションを使用すると、
タスクバー上に、空のタスクが作成されてしまう、という問題が発生しています。
上記問題を解決するための糸口を探しており、それに関する質問をさせていたきます。
まず、アプリケーションの詳細は、以下の通りです。
#-----------------------------------------------------
本アプリケーションは、バックグラウンドで、Excelシートを自動的に
FujiXerox社のDocuWorksフォーマットのファイルに変換することができる機能です。
本アプリケーションは、監視用サーバ(C++で作成)と
変換プログラム(VC++で作成)の二つによって構成されています。
サーバがある状態を受け取ると、変換プログラムを
バッチファイルを通して実行させる形で、変換処理を実現しています。
変換処理は、プログラム実行時に、自動的にExcelアプリケーションを起動し、
変換用プリンタドライバを通して印刷変換をかけるような流れとなっています。
(上記処理自体は、DocuWorksのカスタマイズ用API上で処理されます
(Win32 APIのShellExecuteによって印刷指示されているそうです))
バッチ実行で変換処理が行われる度に、空のタスクが作成されます。
#-----------------------------------------------------
一般的に、空のタスクが作成されてしまう原因にどのようなものが有るのでしょうか?
また、その原因が上記機能のどの辺りに潜んでいると推測されますか?
お知恵を貸してください。よろしくお願いします m(_ _)m
0893デフォルトの名無しさん
NGNG空のタスクとはプロセスが終了してないということでしょうかね。
そのタスクはVC++付属のプロセスビューワで表示されますか?
0894デフォルトの名無しさん
NGNGどういうものですか? ウィンドウの中心を返すとかかなぁ...
0895デフォルトの名無しさん
NGNGhttp://www.google.co.jp/search?q=WM_QUERYCENTERWND&hl=ja&lr=&filter=0
たったの3件・・
0896デフォルトの名無しさん
NGNGCWnd::CenterWindow()で親ウインドウにセンタリングを通知するためのものだな。
つーか、grepしる!
0899デフォルトの名無しさん
NGNGボトムアップの原点は左下ときっぱりはっきり書いてるだろ
「原点」という言葉の意味はわかるか? わからないなら氏ね
0900たま
NGNG空のタスクとは、タスクバー上に無印のタスク(?)が残ったままとなっているものです。
タスクマネージャのプロセスには、変なものは残っていないみたいですが。
プロセスビューワは使ったことないです・・・。
その後、調査を進めたところ、変換APIを通してアプリケーションを起動し、
印刷変換処理を行うところで、APIがアプリケーションの終了を正しく
ハンドリングできていないため、発生しているものであることがわかりました。
API自体はFujiXerox社製のものであるため、そちらに問い合わせし、
対応を進めたいと思います。
0901デフォルトの名無しさん
NGNG0902893
NGNGExcelのファイルは複数シートになっていますか?
アプリケーションから変換する場合、1つの印刷ジョブの変換が終了した時点で
ファイルの変換が完了したと判断するため、複数のジョブに分けて印刷する
アプリケーションでは都合が悪い場合があります。
最初のジョブの変換が終わった時点ではまだExcelの印刷が終わってない
可能性も考えられます。
シートが1枚だけの場合でも空のタスクが残るとすると、また違う原因なのでしょうね。
0903デフォルトの名無しさん
NGNGそのままドロ〜しているのですが、
画面を綺麗にするためにデスクトップ全体を再描画させたいのですが、
どのAPIを呼んだらよいのでしょうかねぇ?
0904デフォルトの名無しさん
NGNG0905デフォルトの名無しさん
NGNG>904 相手が誰であろうとやっちゃダメ。
0906デフォルトの名無しさん
NGNGそーなんだ。
ちゃんと条件を作ってRedrawWindowしなきゃだめなんだ。
0907デフォルトの名無しさん
NGNG(ドライバ名?)
複数ある場合は複数取りたいです.
出来たらデバイス使用中でも取得できるとなおいいです.
0908デフォルトの名無しさん
NGNG0909デフォルトの名無しさん
NGNG0910デフォルトの名無しさん
NGNG解りました。
原点が左下にあると、上1/4の矩形は(0,32)-(24,24)で、
BottomLeftは(0,24)になるんですね!
ボトムアップは解りましたが、トップダウンが解りません。
トップダウン(原点左上)の時、上1/4の矩形は(0,0)-(24,8)
ではないのでしょうか?
例えば、ウィンドウも左上が原点ですが、
大きさ 24x32 のウィンドウの上1/4の矩形は
(0,0)-(24,8)ですよね?
0911903
NGNGこんな早くレスもらっていたとは…。
気づかずスイマセンでした。m(;´Д`)m
UpdateWindw使ってみましたが駄目だったもので。
InvalidateRectですね。どうもありがとうございます。
0912デフォルトの名無しさん
NGNG調べるにはどうしたらよいですか?
GetDriveType()は、物理メディアが自分のマシン上にあるパスでも、ネットワークドライブなら
DRIVE_REMOTE が返ってきてしまう...
0913デフォルトの名無しさん
NGNGあたりでは
0915デフォルトの名無しさん
NGNGこれを、別のVB画面から最大化したいと思います。
最大化したい画面のPIDは別の処理ですでに取り出
しているので、このPIDを利用してウィンドウハン
ドルを取り出し、SendMessage しようと思ったの
ですが、PIDからウィンドウハンドルの取り出し方が
判りません。
とあるプロセスのPIDからウインドウハンドルって
取り出せるんでしょうか?
PIDとウィンドウハンドルの関係が判っていないので
頓珍漢な質問かもしれませんが、おながいします。
0916デフォルトの名無しさん
NGNGPIDって言う表記、誤解を招くのでやめなさい。
0917デフォルトの名無しさん
NGNG誤解以前にPIDの意味が分からん
プロセスIDかと妄想したが、プロセスのPIDなんて書き方もされてるし
0918デフォルトの名無しさん
NGNGタスクマネージャで見るとPIDってかいてあるぞ。
もしかして、正しくは、そのプロセス一番最初に作成
されたスレッドIDなのか?
漏れ、UNIXばっかなのでWinってよく
判らんのよ。
0919デフォルトの名無しさん
NGNGプロセスIDの一覧を表示するサンプル見つけたんだけど、
ウィンドウハンドルからプロセスIDは、GetWindowThreadProcessId
でとってました。
これの逆ってできないの?
だめなのか?もしかして。
0920デフォルトの名無しさん
NGNG0921デフォルトの名無しさん
NGNGそのプロセスがいくつもウィンド表示してたらどうします?
0922デフォルトの名無しさん
NGNG(Wndはプロセスじゃなくスレッドに関連ずけられている)
普通Wndのハンドル取得するときはFindWindow()つかうと思いますが。
0923デフォルトの名無しさん
NGNG0924デフォルトの名無しさん
NGNGぐるぐる探さないとだめなんだね。
プロセスIDとウィンドウハンドルって
Windowsのカーネルから見るとウィンドウハンドルの
ほうが低レベルなデータだってことになるのかな?
漏れ、UNIXメインでやってるからプロセスIDさえ判れば
そこから辿れると思ったんだけど、なんか違うみたいだね。
0925デフォルトの名無しさん
NGNGとりあえず、最大化するのはそのプロセスのウィンドウ
なら何でも良いので、取れたウィンドウに対して最大化
します。
0926デフォルトの名無しさん
NGNGいや、プロセス→ウィンドウよりもウィンドウ→プロセスの変換をしたい場合の方が多いから、そういう形になっているだけかと。。。
0928デフォルトの名無しさん
NGNGnewTimeout = (DWORD)300; //30秒に設定
isResult = InternetSetOption(hSession,INTERNET_OPTION_CONNECT_TIMEOUT,&newTimeout,sizeof(newTimeout));
ってな感じでタイムアウト値を設定したのですが
どうやったら本当に30秒に設定されているのか
試せるんだろう?と悩んでしまいました・・・・・・
質問1 何かタイムアウトの設定が反映されているのを
きちんと知る方法は無いでしょうか?
InternetQueryOption関数だけではなんか不安なんです。
というか、HTTPサーバーが返す408(Request Timeout)
というステータスコードですが、サーバーが
ステータスコードを返しているのにタイムアウトって
なんか腑に落ちないんですが・・・・
てっきりHTTPクライアント側で、リクエストを送ったあとに
○○秒サーバーから応答が帰ってこないので
タイムアウトだと判断しているもんだと思っていたのです。
質問2 自分が考えていたタイムアウトは間違いで
やっぱりHTTPサーバーが返すもんなんでしょうか?
0929デフォルトの名無しさん
NGNGフルスクリーン時の解像度になってしまうのだけど、これってどうすればいいのですか?
0930デフォルトの名無しさん
NGNG0931デフォルトの名無しさん
NGNGWM_INITDIALOGで
ImmAssociateContext(hWnd, NULL)
したんですけど、有効のままなのです。
どうやって無効にしたらいいのでしょうか?
0932デフォルトの名無しさん
NGNG0933デフォルトの名無しさん
NGNGVK_PROCESSKEY: // IME抑制
HIMC hIme = ImmGetContext(ghApp); // IMEコンテキストの取得
if( ImmGetOpenStatus(hIme) ) // IMEが開いているかチェック
ImmSetOpenStatus(hIme,FALSE); // IMEを閉じる
ImmReleaseContext(ghApp,hIme); // IMEコンテキストの解放
0934デフォルトの名無しさん
NGNG怒られました(w
で、質問です。
特定のキーが押された時間(時刻でも間隔でもいい)を記録するプログラムが
欲しくてがんばって作ってみましたが、DOS窓が非アクティブな状態になると
キーストロークを感知してくれません。
他の窓がアクティブになっているときも監視しつづけるようにするには
どうすればいいでしょうか?
“持っている”処理系はLsi試食版とVC++です。
0935デフォルトの名無しさん
NGNGさかのぼってhookあたりをキーに検索すれ。
0936935さんありがとう
NGNGむずかしくてよくわかんないや。
0937デフォルトの名無しさん
NGNGLANケーブルを抜く
0938デフォルトの名無しさん
NGNG背景にAlphaBlend()で小さめのビットマップを転送して
さらにその上に他のビットマップを転送すると色化けしてしまいました。
青の半透明の長方形を転送すると転送先の明るい部分が黄色くなってしまったり
するのですが、これはいったい何故なのでしょうか・・・・
あまり使われてない関数のようなので解説サイトが見つからず、
ここで訊こうと思いました。
もしよろしければアドバイスお願いしますー
0939デフォルトの名無しさん
NGNG0940938
NGNG原因さっぱり思いつかないけど、とりあえず
転送順序を逆にしたり色々試してみます〜
0942デフォルトの名無しさん
NGNGそのコマンドは実行終了までかかる時間がまちまちなのですが、
実行が終わるまで監視する真っ当な方法ってどうすればいいんでしょう?
WinExecを使うと勝手にタイムアウトする可能性があるので、
CreateProcessで立ち上げ、
while(GetExitCodeProcess(....),exitcode==STILL_ACTIVE)Sleep(100);
などを考えていますが、この方法が正しいのかどうかわかりません。
それと、コマンドラインの標準出力の内容を取りたいのですが、
(unixでいう、ls | myapp みたいな事です)
WindowsAPIで、自分の立ち上げたプロセスに対してこれをやるにはどうすればいいのでしょうか?
0943デフォルトの名無しさん
NGNGCreateProcessで得たハンドルに対してWait〜Object(s)
コンソール取り込みはパイプでどうぞ
0944デフォルトの名無しさん
NGNGWaitForSingleObject( プロセスのハンドル, INFINITE );
を使うと思う。
0945デフォルトの名無しさん
NGNGなるほど、ああいう関数はプロセスハンドルに対しても使えるのですね。
勉強になりました。
>>943
パイプは、自分で立ち上げたプロセスで取り込むことが出来ませんよね?
例えば vc が cl.exe の内容をメッセージに表示するのは、
パイプではないと思うのですが……
0946デフォルトの名無しさん
NGNG名前なしパイプで検索かけろ
0947デフォルトの名無しさん
NGNG0948デフォルトの名無しさん
NGNG0949デフォルトの名無しさん
NGNG0950デフォルトの名無しさん
NGNG0951デフォルトの名無しさん
NGNG即レス感謝!
0952デフォルトの名無しさん
NGNGよくないと言う理由がこれといってみつからん
0953デフォルトの名無しさん
NGNGで、そのドライバの内部からRPCを使いたいのですが
どういったAPIを使えばよいのでしょうか?
ソケットを扱うAPIは発見したんですが、
RPCを扱うためのものは見つかりませんでした。うーむ(´〜`)
0954デフォルトの名無しさん
NGNGどうしたら良いですか?
0955デフォルトの名無しさん
NGNG0956954
NGNG0957954
NGNGGoogleったら、SHGetFileInfo の SHGFI_DISPLAYNAME で名前から判断する
というのもありましたね。
0958デフォルトの名無しさん
NGNGファイルシステムにアクセスを試みて、
戻り値(ガゴガゴという音)音を聞き分けて判断する
0959デフォルトの名無しさん
NGNG0960デフォルトの名無しさん
NGNG0961デフォルトの名無しさん
NGNG条件によって削除したいのですが、何を使うのがいいのでしょうか?
WinInetでは出来なさそうだし、
Telnetじゃカッコ悪いし。
何かいいのありませんか?
0962デフォルトの名無しさん
NGNGスレ違い
0963デフォルトの名無しさん
NGNG適当なスレがないのでここで勘弁願います。
Winsockで出来るのかな? でも面倒そう。
0964デフォルトの名無しさん
NGNG0965デフォルトの名無しさん
NGNGありました。
net や winsockで探したので引っ掛かりませんでした。
0966超初心者
NGNGどうにも納得できないので、親切な人 教えてください。
MSDNライブラリーの次の個所です。
Visual C++ ユーザーズガイド
Visual C++ チュートリアル
Scribble: MDI描画アプリケーション
印刷機能の強化
Scribbleイメージの拡大
Y軸の反転への対応
ビューにCScrollViewをつかっていて、マッピングモードをMM_TEXTからMM_LOENGLISHに
変更するとY座標が反転します。
これに対応するために、BoundingBoxを計算する時に
m_rectBounding.top = min(m_rectBounding.top, pt.y); ->max(...)
m_rectBounding.bottom = max(m_rectBounding.bottom, pt.y); ->min(...)
というのは判るんですが、
BoundingBoxを線の幅だけ膨らませる処理を
m_rectBounding.InflateRect(CSize(m_nPenWidth,m_PenWidth) ->InfrateRect(...,-(int)m_nPenWidth));
というのは正しいのでしょうか?
::InfrateRectの説明を読む限り負の数を指定した場合にはDeflateになってしまうと思うのですが…
0967デフォルトの名無しさん
NGNGhttp://pc.2ch.net/test/read.cgi/tech/1021620974/l50
0968デフォルトの名無しさん
NGNG確認してないが
InfrateRectは
left -= dx, top -= dy, right += dx, bottom += dy;
じゃ無かろうか、
Rectのtopとbottomが逆転しているなら、拡大するためにはdyが負でなければいけない
0969超初心者
NGNGなるほど、負の座標内での領域を拡大するには、負の値を渡すという事ですか。
>967
>MFCスレで聞け。
それも思ったんですが、CSizeはともかく本質的にInfrateRectの使い方なのでWin32の範囲かと
0970967
NGNGInflateRect()ってWin32APIにあるんだな。こんな関数使ったことも
なかったからMFCの機能かと思ってた。スマソ
で、ついでにAPIリファレンスで長方形の概要見てみたら
>長方形の座標の値は、 符号付き整数で表現します。
>長方形の右辺の座標値は、 左辺の座標値よりも大きくなければなりません。
>同様に、 下辺の座標値は上辺の座標値よりも大きくなければなりません。
とあるから、InflateRect()の説明がそうなっていてもおかしくはないと思う。
0971デフォルトの名無しさん
NGNG0972デフォルトの名無しさん
NGNGZeroMemory
0973デフォルトの名無しさん
NGNGHKEY hKey;
BOOL readOnly =
RegOpenKeyEx( HKEY_CLASSES_ROOT, NULL, 0, KEY_WRITE, &hKey ) != ERROR_SUCCESS;
とやったんですが、書き込み件がないユーザでも readOnlyが TRUE になりません。
実際にレジストリに書き込むことなく、アクセス権を調べるのってできないんでしょうか?
0974デフォルトの名無しさん
NGNGRegOpenKeyExの説明には、サブキーにNULLを指定すると、キーの新しいハンドルが開かれるとある。
この場合、HKEY_CLASSES_ROOTという仮想キーがそのまま返るんじゃないの? アクセスチェック無しに。
サブキーに"*"とか指定してみたら?
0975初心者
NGNG表示するのに、次の手順で行ったところ、
1. CreateCompatibleBitmap()
2. BITMAPINFO型データの設定
3. SetBitmapBits()
4. CreateCompatibleDC()
5. SelectObject()
6. StretchBlt()
ディスプレイが16bitカラーモードの時には表示できましたが、32bitカラーだと化けます。
CreateCompatibleBitmapでスクリーン互換でつくってるんだから当然だなー、と思って
調べた挙げ句、
3. SetDIBits()
としたところ、16bit/32bit両方OKになりました。
が! 8bit(256色)だとヤッパリ化けます。
SetBitmapBitsの時とは異なり、イメージのサイズなどは正しく扱われてますが、
色がおかしい。適切に8bitのパレットのデータに変換されていないようです。
こんな時、どうしたらいいのでしょう? 親切な人おながいします。<(_ _)>
0976973
NGNGRegOpenKeyEx( HKEY_CLASSES_ROOT, "*", 〜
で試してみたんですが、同じ結果でした。
RegCreateKeyEx( HKEY_CLASSES_ROOT, "*", 〜
とやったら、うまくいったので、これで良しとすることにしますた。
0977デフォルトの名無しさん
NGNGビットマップを236色まで減色するか
DCにハーフトーンパレット選択したら何とかなると思うが。
0978デフォルトの名無しさん
NGNGしまった方が色々と幸せだぞ。パレットの扱いなんて面倒だし。
0979デフォルトの名無しさん
NGNGDHCP立てれ
0980デフォルトの名無しさん
NGNG0981デフォルトの名無しさん
NGNG0982デフォルトの名無しさん
NGNGペンギンの陰謀です。
0983デフォルトの名無しさん
NGNGハーフトンパレット選択というのは、SetStretchBltMode(hDC, HALFTONE)の事でしょうか?
やってみましたが、全然変わりませんでした。
>ビットマップを236色まで減色するか
そこまでしない方法を探しているのですが、やっぱりそれしかありませんか。
ペイントブラシでも同じように色が変わるので、よしとするか...
0984デフォルトの名無しさん
NGNGCreateHalftonePalette()っつーのがあるが調べてみたか?
即レスで適当に書いてるから間違ってても関知しない。
ついでに新スレ
http://pc.2ch.net/test/read.cgi/tech/1023361418/l50
0985デフォルトの名無しさん
NGNGパレットは↓(記憶に基づいてカキコしてるから間違ってかもしれん。サンプル
コード検索してちょ)
xxx::OnDraw(CDC* pDC){
CPalette pal;
pal.CreateHalftonePalette( pDC );
pDC->SelectPalette( & pal, TRUE );//background?
...
pDC->RealizePalette();
StretchDIBits();
0986983
NGNG調べてみますです。
0987デフォルトの名無しさん
NGNGHKEY_LOCAL_MACHINE\* がすでに存在するときERROR_ALREADY_EXISTS
が帰ってくる罠
つーか普通すでに存在するはずだが…
なにか根本的に間違えてないか?
0988976
NGNG・HKLMじゃなくて HKCR
・RegCreateKeyEx はキーがすでに存在するときは、ERROR_ALREADY_EXISTSではなく、
キーが開かれてて ERROR_SUCCESS が返ってくる。
|既存のキーであることは、lpdwDisposition に REG_OPENED_EXISTING_KEY が格納
|されることで知ることが出来る。
・HKCR\* は(多分)必ず存在するので、書き込みモードで Create(実際は Openになる)
し、ERROR_SUCCESSならば書き込み権があると判断する。失敗なら書き込み権なし。
Administratorだと成功して、Guestだと失敗になったのでOKとした、ということです。
レス数が950を超えています。1000を超えると書き込みができなくなります。