トップページ⇒tech
279コメント79KB

Win32API質問箱 Build13

■ このスレッドは過去ログ倉庫に格納されています
0001前スレ953NGNG
.NET Framework!? 知らんな!!
そんなヤル気のあるネィティブプログラマ集まれ!
スレ立てるまでもない、Win32APIについての質問はこちらへどうぞ。
やさしい お兄ちゃん 達が答えてくれるかも。
でも、質問する前に検索ぐらい汁!!
過去スレ・参考は>>2 ぐらい...
0159デフォルトの名無しさんNGNG
>>157
憶測でしゃべんな
0160デフォルトの名無しさんNGNG
EDITBOXの背景にBITMAPを貼るにはどうしたらいいですか?
0161デフォルトの名無しさんNGNG
>>156
全く情報が見つからないんですが
やっぱり荒技?
0162_NGNG
http://homepage.mac.com/hiroyuki45/
0163デフォルトの名無しさんNGNG
>>161
「Advanced Windows」でも買えばええんやなかろうか
0164デフォルトの名無しさんNGNG
>>163
Windows2000AdvancedServerのこと?
0165デフォルトの名無しさんNGNG
>>164
本
0166デフォルトの名無しさんNGNG
すいません質問です

コマンドで
ftp -s:ftpcmd.txt>>ftplog.txt
とやっているのと同じことをプログラムから動作させたいのですがうまくいきません

ちなみにftpcmd.txtの内容は
open ****** <--サーバアドレス
*******   <--ユーザー名
********  <--パスワード
ascii
put ******  <--アップするファイル
bye
です

プログラムは
ShellExecute( NULL, "open", "ftp.exe", "-s:ftpcmd.txt>>ftplog.txt", NULL, SW_SHOWNORMAL);
でうまくいくと思ったんですが…

戻り値は32より大きな値が帰ってきているので関数自体は成功しているようです…

どなたかご教授お願いします
0167デフォルトの名無しさんNGNG
>>166
ヒントだけ。
リダイレクトを処理しているのは cmd.exe や command.com です。
0168デフォルトの名無しさんNGNG
%COMSPEC%
0169166NGNG
あ、リダイレクトはftp.exeの機能じゃないからあそこに記述しても意味がないですね
そりゃそうだ…
ご指摘ありがとうございます
0170非常に抽象的NGNG
>>149
あらかじめオブジェクト生成・破棄をラッピングしておいてそれ以外の生成・破棄を行わないようにしておく。
0171デフォルトの名無しさんNGNG
>>158
ってゆーかウィルスは正にそういうことやってるらしい。
あとデバッガの類もか。

>>161
ぐぐってみたらこんなの出てきた。

ttp://f4.aaacafe.ne.jp/~madprog/memo/200302.html#08_t2
ttp://www.codeproject.com/dll/hookimport.asp
ttp://www.naughter.com/hookimportfunction.html

>>169
まだ微妙に判ってない悪寒。
0172デフォルトの名無しさんNGNG
他のスレッドが作り出したウインドウがアクティブかどうかを
調べるにはどうすれば良いでしょうか?
GetActiveWindow()の場合、他のアプリではだめで
自分側の一番アクティブなハンドルを返して来てしまいます

相手側のウインドウ ハンドルは、FindWindowで分かっているのですが
簡単に一番アクティブかどうか知る方法はないでしょうか?
0173172NGNG
すいません、難しくてもありましたら教えてください
0174デフォルトの名無しさんNGNG
>>172
いっそのこと自分でアクティブにしてしまうというのはどうか。
0175デフォルトの名無しさんNGNG
>>172
GetWindowInfoでどう?
0176デフォルトの名無しさんNGNG
GetForegroundWindow ?
0177デフォルトの名無しさんNGNG
>>174
そうですね、その方が簡単で良いのかも知れないです
それにはGetForegroundWindow、SetForegroundWindowが良さそうなのですが
これは優先度が高いようで、アプリにかなり負担があります
出来れば負荷をかけないよう調べたいのですが
0178デフォルトの名無しさんNGNG
Win98/NT4.0SP3以降にはGetGUIThreadInfoとかいうのもあるが
0179デフォルトの名無しさんNGNG
>>177
> それにはGetForegroundWindow、SetForegroundWindowが良さそうなのですが
> これは優先度が高いようで、アプリにかなり負担があります
> 出来れば負荷をかけないよう調べたいのですが

初耳だな。どこにそんなこと書いてあった?
0180デフォルトの名無しさんNGNG
もしかしてこれ?
>The system assigns a slightly higher priority to the thread that creates the foreground window than it does to other threads.
いや、まさかね
0181デフォルトの名無しさんNGNG
>>179
SetActiveWindowの所にSetForegroundWindowは強制的にって
なっていたのでそう思いました
出来れば、自然にアクティブになるのを待っていたかったので

ありがとうございます、GetGUIThreadInfoは難しそうなので
GetForegroundWindowでやってみたいと思います
0182デフォルトの名無しさんNGNG
ダイアログのエディットコントロールを自動で
入力状態にするにはどうすれば良いでしょうか?
0183デフォルトの名無しさんNGNG
>>182
入力状態とはなんぞや
0184デフォルトの名無しさんNGNG
フォーカス・・・か?
0185デフォルトの名無しさんNGNG
>>184
そうです、DOSで言うとプロンプト上で点滅状態に
自動でしたいんですけど出来ますか?
0186デフォルトの名無しさんNGNG
>>185
SetFocus()
0187デフォルトの名無しさんNGNG
>>182
http://black.sakura.ne.jp/~third/system/winapi/win86.html
ここに書いてあるが、ダイアログ開始時にSetFocus()を使うなら、
WM_INITDIALOG の返り値をFALSEにする。
TRUEにすると、SetFocus()は無視されて、Tabストップのある一番
最初のコントロールにフォーカスが行く。

0188デフォルトの名無しさんNGNG
矩形を描画したいのですが、例えば線幅が5のとき
線が矩形内にぴったり収まるようにしたいのですが
いいAPIとかあるのでしょうか?
計算してRectangleするしかないでしょうか?
0189デフォルトの名無しさんNGNG
>>188
PS_INSIDEFRAMEスタイルでCreatePen()
0190デフォルトの名無しさんNGNG
>>188
CreatePen(PS_INSIDEFRAME
0191188NGNG
>>189-190
できますた!
いつも助けてもらって
ありがとうございます。m(__)m
0192185NGNG
>>186,>>187
ありがとうございます m(_)m
バッチリできました
0193デフォルトの名無しさんNGNG
winxp VB6
今wininetで簡単なブラウザ作ってるんですけど

hHttpRequest = HttpOpenRequest( _
hHttpSession, _
"GET", _
0, _
"HTTP/1.0", _
"http://www.yahoo.com/", _
vbNullString, _
0, _
0)

でhHttpRequestがemptyだよってエラーが出ます(´・ω・`)ショボーン
どうしたらいいっすかね?
0194デフォルトの名無しさんNGNG
どうしようもないね。
0195デフォルトの名無しさんNGNG
>>194
そうっすか。どうしようもない質問なのかどうしようもない症状なのかどっちなんすかね?
それすらもわからないと手が出ない・・・
0196デフォルトの名無しさんNGNG
>>195 夏厨だと思われ
0197デフォルトの名無しさんNGNG
>>196
もしかしてスレ違い?
0198vNGNG
長瀬愛、白石ひより、かたせ美優から
なつかしのAV女優まで勢揃い。
セーラー服シリーズも大好評!
モロみえだから無料ムービー見にきてよ。
http://www.ncdonald.com/
0199無料動画直リンNGNG
http://homepage.mac.com/miku24/
0200デフォルトの名無しさんNGNG
気を取り直して、次の方どうぞ↓
0201デフォルトの名無しさんNGNG
↑おまえがな
0202↑↑↑↑↑↑↑↑NGNG
おまえがな
0203デフォルトの名無しさんNGNG
娘にオナニーみられてしまった
0204デフォルトの名無しさんNGNG
氏ねw
0205デフォルトの名無しさんNGNG
↑おまえがな
0206デフォルトの名無しさんNGNG
HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
この後に
CloseHandle(hStdOut);
の必要はありますか?
0207デフォルトの名無しさんNGNG
その後、決して使わないのならいいんじゃない?
0208デフォルトの名無しさんNGNG
「決して使わない」にはprintfとかも含まれることに注意
0209デフォルトの名無しさんNGNG
質問お願いします。市販品では、子モードレスダイアログ操作中でも
メインウィンドウのフォーカスは、失われないものが良くあります。

円滑な操作に必須なので、私もとりあえず、子モードレスダイアログの
操作中以外は、即座にメインウィンドウにフォーカスを移すようにしてみました。

しかし、これではメインウィンドウのタイトルが、灰色になったり元に戻ったりと
点滅してしまい、落ち着きませんでした(市販品は微動だにしません)。

綺麗に実装する方法を、教えていただければ幸いです。
0210デフォルトの名無しさんNGNG
アクティブウィンドウが2つになるわけないし
自分でウィンドウ描くしかないでしょ
0211デフォルトの名無しさんNGNG
ダイアログバーでないの
0212デフォルトの名無しさんNGNG
ツールウィンドウとも言う
0213209NGNG
皆さんレスありがとうございます!

>>210
大体、クラスがダイアログだったのですが、
仰るとおり、自前描画してるのもいくつかありますね。

>>211-212
まさにこれみたいです。感謝感激。ダイアログの
スタイル変えただけで簡単に実現できました…よかったよかった。

なるほど…だから市販品子ウィンドウのタイトルは、どれも後付けだったのか…。
0214keikoNGNG
例えばメモ帳のエディット コントロールを横取りしてサブクラス化かなにかして(意味不明でごめん)、秀丸みたいに改行記号とかタブ記号を表示できるようにしたいです。
そうゆうことって可能ですか? 自分でメモ帳を作るのではなくて、既存のアプリな内のコントロールに干渉したいのです。OE メール エディタとかエクセルのセル内に改行記号をひょ時させてみたいのですが・・・
ウィンドウタイトルを変えることはできたけれど・・
0215デフォルトの名無しさんNGNG
可能です
0216デフォルトの名無しさんNGNG
でも、あなたには無理。
0217デフォルトの名無しさんNGNG
だって、あなたは
0218デフォルトの名無しさんNGNG
妖怪人間♪
0219デフォルトの名無しさんNGNG
>>218
つまらんことをいうのはYouかい?
0220デフォルトの名無しさんNGNG
なにこのスレ(AA略
0221山崎 渉NGNG
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン
0222keikoNGNG
言葉足らずですみません。
ヒントやサンプルなどをおしえていただけると幸いです。よろしくお願いします
0223デフォルトの名無しさんNGNG
GetDCして描くとか
0224デフォルトの名無しさんNGNG
ちょっとヒントやサンプルが貰えれば実現できるほど簡単な事では
無いと思うんだが、いかがなものか?
0225206NGNG
それでは、質問を少し変えて聞きたいのですが、
GetStdHandle()は対象のカーネルオブジェクトの
参照数を変更(1ふやす)しますか?
0226デフォルトの名無しさんNGNG
age
0227>>2ちゃんねらーの皆さん NGNG
2ちゃんねらーなどの間で、人気のある寺院が有ります。
これらの寺院にて諸願成就を祈願しましょう。(爆)

(1-4件目)  http://www.z-shoten.or.jp/
http://www.tctv.ne.jp/matuti/
http://www5b.biglobe.ne.jp/~ryumyoin/
http://www1.ocn.ne.jp/~tatsueji/
(5件目)
--------------------------------------------------------------
寺院名    吉祥山唐泉寺
通称     江戸川不動尊
所属宗派  真言宗泉涌寺派
住所     〒133−0051
        東京都江戸川区北小岩七丁目10−10
        京成電鉄の小岩駅から徒歩約15分
        (JR線の小岩駅は、
        京成電鉄の小岩駅とはもの凄く離れているので不可。)
電話番号  03−3658−4192
住職     高田正圓
        (女住職で、先代住職(高田真快)の奥さんであった模様。) 
本尊     不動明王
祈祷日及び祈祷時刻
        通常は毎日午前6時より(150分前後かかる模様)
        行われるが、毎月28日には(不動明王縁日として)
        午前11時にも(2時間ほどかかる模様)行われる。
祈祷料
(普通護摩)   3000円 5000円 10000円
(特別護摩)   30000円(21日間) 100000円(108日間)
          300000円(365日間)
--------------------------------------------------------------
0228デフォルトの名無しさんNGNG
ボタンやチェックボックス、ラジオボタンなんかを押したときに出てくる、
憎々しいあの点線枠を消す方法ってありますか?

小さいコントロールとかだと、文字見えづらくなり邪魔で邪魔で
ぜひともご教授を
0229>>2ちゃんねらーの皆さんNGNG
(1-4件目)  http://www.z-shoten.or.jp/
http://www.tctv.ne.jp/matuti/
http://www5b.biglobe.ne.jp/~ryumyoin/
http://www1.ocn.ne.jp/~tatsueji/
(5件目)
寺院名    吉祥山唐泉寺
通称     江戸川不動尊
所属宗派  真言宗泉涌寺派
住所     〒133−0051
        東京都江戸川区北小岩七丁目10−10
        京成電鉄の小岩駅から徒歩約15分
        (JR線の小岩駅は、
        京成電鉄の小岩駅とはもの凄く離れているので不可。)
電話番号  03−3658−4192
住職     高田正圓
        (女住職で、先代住職(高田真快)の奥さんであった模様。) 
本尊     不動明王
祈祷日及び祈祷時刻
        通常は毎日午前6時より(150分前後かかる模様)
        行われるが、毎月28日には(不動明王縁日として)
        午前11時にも(2時間ほどかかる模様)行われる。
祈祷料
(普通護摩)   3000円 5000円 10000円
(特別護摩)   30000円(21日間) 100000円(108日間)
          300000円(365日間)
0230デフォルトの名無しさんNGNG
>>228
あれがないとキーボードで操作するのに困るんだが
どうしてもと言うなら、オーナードローボタンにして何もかも自分で描く。
0231デフォルトの名無しさんNGNG
サブクラス化してWM_SETFOCUSを無視するという手も。
だが消さないで欲しい。理由は>>230と同じ。
0232デフォルトの名無しさんNGNG
>>230
それは面倒なのでカスタムドロー推奨。

やはり同じ理由によりフォーカス時は差別化希望。
色を変えるとか。
0233228NGNG
>>230-232
レスありがとうございます。皆さんの操作性に対する配慮には頭が下がる思いです

最初からこう訊けば良かったのですが、ペイントの左にあるような、
ツール選択のボタンみたいなのを作りたくて…
見栄えのため点線枠ではなく、ボタンのへこみのみでFocusしたかったんです
マウス主体の、簡単なグラフィックエディタなので、お見逃しを…

早速試してみようと思います、感謝です
0234デフォルトの名無しさんNGNG
ディスクの遅延書き込みを DeviceIoControlでフラッシュしたいんですけど...

9xでは Interrupt 21h Function 710Dh(Flushes file system buffers and caches)
を使えばいけそうなんですが、NTでそれに相当する FSCTL_〜 は無いのでしょうか?
フラッシュするにはヴォリュームのロック/アンロックを行うしかない?
0235デフォルトの名無しさんNGNG
>>234
NT,2k,XPは直接デバイスに触ることはできない。
0236あひゃNGNG
外部アプリケーションが使用しているメモリの内容を書き換えたいと
思っています.市販ゲームの改造が目的です.
ゲームが使用しているメモリ空間からnバイトのバイナリデータ列を
検索してヒットするすべてのアドレスを調べたいのですが,
ヒープ領域でのアドレスを調べることができなくて悩んでいます.

今やってる方法は,ゲームを起動した状態でプロセスIDを取得し,
それをOpenProcess()で開き,ReadProceccMemory()を使って
ある程度のブロックごとに読み取り,memcmpで検索したいデータ列と
比較して下のアドレスから順番にアクセスしています.
ゲームを何度起動しても下からある程度までのアドレスは毎回同じで,
そこまではアクセスも順調なのですが,ある程度上に来ると
アクセスできなくなり,さらにゲームもフリーズしてしまいます.

プロセスメモリエディタ系で有名なExStandやねこまんま等で
そのゲームのプロセスを開いてみると,ヒープ領域のアドレスが
飛び飛びで存在しており,間にアクセスできないアドレスが存在しています.
上記の方法で下から順番にアクセスしていくと,そのアドレスにどうしても
途中でぶち当たってしまいます.単ににReadProcessMemory()が失敗して
返ってくるだけなら無視してどんどんアクセスしていけばいいと思うの
ですが,その時にゲームも止まってしまいます.

PC環境が変わるとアドレスが変わってしまいます.環境の違いにも
対応したいので,下からデータを検索していって,アクセス不可能な
領域があれば,次にアクセスできる領域まで飛んで検索を続行する
という処理を行いたいです.そのために,APIを使って
外部プロセスのヒープ領域のアドレス範囲を取得するといったことは
できないでしょうか.
プロセスメモリエディタなどはどういう処理をしているんでしょうか.
0237デフォルトの名無しさんNGNG
Heap32ListFirst
02387NGNG
▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼
 ☆★ 無修正DVD★☆なら 新宿歌舞伎町直送 ☆★

人気爆発新作ベスト9入荷
  堤さやか引退特集 憂木瞳 プロジェクトX No8 ベイビーフェイスをやっちまえ
 白石ひより・愛葉るび SNAPSHOT 地下映像陵辱援交 すぎはら美里痴女教師
 店頭販売の売れ筋のみ厳選してみました 安心の後払い
     http://book-i.net/moromoro/
   白石ひとみ 小森詩 山田まり 長瀬愛
@@ 及川奈央 レジェンド @@ 堤さやか 東京バーチャル 依然大好評
    
  サンプル画像充実  見る価値あり  最高画質
▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ 
0239デフォルトの名無しさんNGNG
>>234
真っ正直な方法じゃ無理。

これでも使っとけ。ほれ。
ttp://www.sysinternals.com/ntw2k/source/misc.shtml#Sync
0240234NGNG
>>239
どうもです。そのページもチェック済みでした。がそのツールはソースが無いんで
すよね。惜しい。
DeviceIoControlで FSCTL_(UN)LOCK_VOLUME 使って一応できたんですが、やっぱ
これしかないのかな。

winioctl.h 眺めたら FSCTL_INVALIDATE_VOLUMEなんていう怪しいのがあったけど
どこにも情報がない(´・ω・`)
0241236NGNG
>>237
ありがとうございます
ただツールヘルプ関数はNT系OSで使えないようなのですが
その場合はどうしたらいいでしょう
0242デフォルトの名無しさんNGNG
>Heap32ListFirst
>included in Windows XP, Windows 2000 Professional, Windows Me, Windows 98, and Windows 95

>CreateToolhelp32Snapshot
>Included in Windows XP, Windows 2000 Professional, Windows Me, Windows 98, and Windows 95.

MSDNもずいぶん非道い嘘を付くんだな。
0243デフォルトの名無しさんNGNG
XP Pro の kernel32.dll の中には
Dependency Walker で見る限りは
Heap32ListFirst,CreateToolhelp32Snapshot
共に入ってるんだが…
0244236NGNG
>>242-243
すいません
MSDNの対応情報には確かに書いてあるんですが
どこかのページでNT系OSでツールヘルプ関数を使うと不具合があるため
psapiのEnumProcess等を使うとか書いてあったので

Heap32ListFirst/Nextを用いてやってみます
ありがとうございました
0245デフォルトの名無しさんNGNG
お勧めの書籍教えてください
0246デフォルトの名無しさんNGNG
>>245
書店に行って片っ端から立ち読み汁!重複するトピックが多分重要な部分だ。
その重要そうな部分を一番分かりやすくかつ深く書いてる本を買え。大切な
ことはその一冊で満足するなってことだ。買った本を読み終わったら上に書いた
ことを何度か繰り返せ。最初の印象とはずい分違っているはずだ。それは君が
成長したことに他ならない。健闘を祈る。
0247デフォルトの名無しさんNGNG
>244
>どこかのページでNT系OSでツールヘルプ関数を使うと不具合があるため
>psapiのEnumProcess等を使う

たとえば、http://www.galliver.co.jp/writing/msdn/msdn15/
ここに、似たようなことが書いてあるが、使えないのは「NT4.0」であり
XPや2Kも含む「NT系OS」ではない。そのあたりを勘違いしていた?
0248236NGNG
>>247
まさにその通りです
自分の見たページにもNTとしか書いてなかったんですが
つい2000やXPも含めて考えていました
0249デフォルトの名無しさんNGNG
NT4.0を単にNTと表記されると混乱の元だよな。
0250デフォルトの名無しさんNGNG
「横書きテキスト+任意の"横幅"を持つアイコン画像」
と、言うデータを、リストとして表示したいのですが、
適当なコモンコントロールや、方法を教えて頂けないでしょうか。

アイコン付きリストビューが、最適かと思っていたのですが、
これはアイコンサイズが16x16(32x32)で固定のようで…無念です。
0251デフォルトの名無しさんNGNG
何故オーナードローを使いませんか。
0252Windows GDIでの質問ですNGNG
反転する線を描きたいのですが、どうすればいいでしょうか?

例えば、ある画像にRGB(255,255,25)で線を描くと、
白ではなく、元の画像とXORされる線を描きたいのです。
どなたか教えてください
0253250NGNG
>>251
いやぁ、このくらいなら、既存のものでチャキチャキ
終わらせたかったなと<(*´Д`)

オーナードローしかないですか…レスサンクスです。
0254デフォルトの名無しさんNGNG
>>252 SetROP2(hdc, R2_XORPEN)
0255252NGNG
>>254
わーい、出来ましたー
ありがとですよ!!!
0256デフォルトの名無しさんNGNG
何故カスタムドローを使いませんか。
0257デフォルトの名無しさんNGNG
何故ケアルドローを使いませんか。
0258デフォルトの名無しさんNGNG
子ウインドウは親ウインドウの終了を知ることは出来ますか?
■ このスレッドは過去ログ倉庫に格納されています