トップページ⇒tech
1001コメント311KB

Win32API 質問箱 Build5

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんたちが答えてくれるかも。
でも、最低限Web検索ぐらいはしてね。

前スレ
Win32API 質問箱
http://pc.2ch.net/tech/kako/991/991576947.html

Win32API【2】
http://pc.2ch.net/tech/kako/1006/10067/1006783012.html

Win32API 質問箱 Build3
http://pc.2ch.net/tech/kako/1006/10067/1006783012.html

Win32API 質問箱 Build4
http://pc3.2ch.net/test/read.cgi/tech/1023361418/

参考
MSDN Online
http://www.microsoft.com/japan/msdn/default.asp

猫でもわかるプログラミング
ttp://www.kumei.ne.jp/c_lang/index.html
0175デフォルトの名無しさんNGNG
>>174
XOR
0176デフォルトの名無しさんNGNG
>最後のパラメータを false にすると発生しないと思う

なるほろ.
しかしそれではせっかく設定したリージョンが..

0177デフォルトの名無しさんNGNG
>>175
早レスありがとうございます。

XORっていうのは、
LineToを呼んで、背景色と色AのXORの色Bで直線を描画して、
今度は色Bの上から色Aで描画すれば背景色に戻る
っていうので合ってるでしょうか?

LineToを何度も呼ぶことになると思いますが、その方が高速なんでしょうか。
0178 NGNG
>>173
煽っているつもりは全くないのだが。
VirtualProtectはメモリの保護モードを変更するものなので、
サイズを変更することはできない(てか、ヘルプ読めよ)。

unixのbrkのような使い方をしたいのであれば、
あらかじめVirtualAllocで巨大な領域をreserveしておいて、
必要になった時点でcommitすることで、似たような動作にすることはできる。
0179162NGNG
>>164
そうですかぁ。(しょっく)

めんどくさいので、最初のウィンドウを作成するときに、そのウィンドウのタイトルで
ウィンドウクラスを登録しようかと思ったんですが。
0180 NGNG
>>164
単にクラスを識別するだけの役割しかないのに、
文字列の内容が関係すると思うか?
0181デフォルトの名無しさんNGNG
>>173
増やすときに、VirtualAllocの lpAdressに、予約済み領域の直後のアドレスを
指定(ページ境界に注意)してやればいいのでは?
0182デフォルトの名無しさんNGNG
>>162
試してみりゃ分かるやろ。
0183デフォルトの名無しさんNGNG
>>138,>>139
ありがとうございます。とりあえずいけました。
0184151NGNG
>>178
> サイズを変更することはできない(てか、ヘルプ読めよ)。
「要求するメモリのサイズ」って書いてあった(VirtualAllocで指定したサイズでなければいけないとは書いてなかった)ので
変更は可なのかなー等と思ってしまいました。

> あらかじめVirtualAllocで巨大な領域をreserveしておいて、
> 必要になった時点でcommitすることで、似たような動作にすることはできる。
なるほろ!これは気がつきませんでした。
ありがとうございます。

>>173
ありがとうございます。その手もありますね。
しかしライブラリ等の弄れない部分がOSからメモリー割り当てしてると失敗してしまいますね…(当たり前ですけど)

ポインタ比較に意味無くなってもいいからヒープ毎に独立したアドレス空間欲しぃ…。

とりあえず >>178 さんのアドバイスを元に頑張ってみようと思います。
皆さんありがとうございました。
0185デフォルトの名無しさんNGNG
>>174
ScrollWindowとかScrollDCとか
0186DOSっていいなNGNG
DOSの時代にはEMMやバンク切り替えっていうのがありましたが、
これと同じようなことをWindowsからできないのでしょうか。

別プロセス空間に2Gバイト近くのメモリーをそれぞれ確保しており、合計で
6Gバイト以上のアドレスを確保しています。この別プロセスのメモリーを共
有メモリーでランダムアクセスしたいのですが、
1:OpenProcessからReadProcessMemory, WriteProcessMemoryでは一旦コピー
  してからのアクセスになるためランダムアクセスに向きません
2:ファイルマッピングでメモリーファイルにすると、アドレス空間が2Gバイ
  トに限定されるため、大量に取得したメモリー全部にアクセスすることがで
  きません。
別プロセスのメモリー空間のポインタを取得する(実アドレスに割り当てる)
APIってないでしょうか。
0187デフォルトの名無しさんNGNG
>>186
6Gの仮想メモリで何がしたいねん?
結局は単一の物理メモリやん。
0188デフォルトの名無しさんNGNG
> 合計で6Gバイト以上のアドレスを確保しています

win32でできたっけ?
0189 NGNG
>>186
VirtualAllocVlmとか。
0190DOSっていいなNGNG
>>188
各プロセスはリニアに32ビット(4Gバイト)のアドレスしかアクセス
できませんが、(実際はOSの都合で2Gバイトしか確保できない)
別プロセスではそれぞれのセレクタが別の物理メモリー空間をアドレス
するようになります。
この辺はOSの仕事ですが、実際に確保できてしまいます。

>>186
たとえば、スキャナからの画像を9600BPIでA3全体を読み込むと
数Gバイトになります。もちろん今作っているのは、こんな馬鹿
みたいなこととは違いますが。。。

0191デフォルトの名無しさんNGNG
>>190
OSのメモリ管理限界より、実メモリが増えてなきゃ、
そもそも意味がないだろ。
0192DOSっていいなNGNG
>>191
確かに。
メモリーは誰かが金出して、10Gバイトくらい載るマザーボードと
メモリーを用意するだろう。

インテルCPUではFS,GSのセレクタレジスタが遊んでいるので、
それぞれ別空間をポイントできないかと考えたわけだ。
あるいは、OSからすれば、ページングで同じ物理メモリーを2つのプ
ロセスのリニアアドレスに割り当てればよいことで、簡単にバンク切り
替えができるのかと思って調べたが、見当たらなくてここで質問してい
ます。
0193デフォルトの名無しさんNGNG
>>169
> で、やっぱり VirtualProtect でサイズを変えることは出来ないんでしょうか?
MSDN Library を読んだ上で言ってるのか?

VirtualProtect は割り当てられたページの属性 (read/write/execute) を設定
する API。CPU がサポートする仮想記憶システムで使うデータベース(ページ
テーブルやディレクトリテーブル)の属性部分だけ仮想化したもの、といや良い
のかな。

俺も試したことはないんだが >>189 が言ってるように VirtualAllocVlm 系の
API を使うか、ファイルマッピング (CreateFileMapping) とかでどうかねぇ。

>>191
IA-32 だと、仮想記憶アドレスの限界以上の実メモリを使える。36bit PSE あ
たりのキーワードで検索すると出てくると思うけど。
0194DOSっていいなNGNG
ありがとうございます。
VirtualAllocVlmって、64ビットのアドレスが返るのですね。
Borland C++Builderを使っているのですが、どうやって使う
のでしょうか。
0195デフォルトの名無しさんNGNG
>>194
google で検索したら、トップで出てきたぞ…。
http://www.microsoft.com/japan/developer/library/jpwinpf/_win32_virtualallocvlm.htm
0196デフォルトの名無しさんNGNG
>>175
特許は最近話題になったものだけにあるわけではないぞ
0197151NGNG
>>193
私の質問はもう終わってるんだけどな…。
直後に似た API の質問だから混同してもしょうがないけど。

でもやっぱり後でもう一回来てよかった。
なんかその Vlm ってのも調べてみようっと。

あと、>>178 さんに教えてもらったやり方でバッチグーに実装できました。
マジでありがとうございました。
0198151NGNG
で、調べてたら…。

http://www.microsoft.com/japan/developer/library/jpwinpf/_win32_virtualallocvlm.htm

VirtualAllocVlm 関数は専用のリソースを割り当てるので、控えめに使ってください。
                                   ~~~~~~~~~~~~~~~~~~~~~~

↑ワロタ MS のドキュメントにしては珍しいあからさまに曖昧な表現。
0199デフォルトの名無しさんNGNG
>>186
>2:ファイルマッピングでメモリーファイルにすると、アドレス空間が2Gバイ
>  トに限定されるため、大量に取得したメモリー全部にアクセスすることがで
>  きません。

うそー?MapViewOfFile でマップするファイル位置を指定出来ただろ?64ビットで
0200デフォルトの名無しさんNGNG
複数のキーを同時に押しっぱなしにしていると
Windowsから警告音が来てしまうんですが、
これを止める方法はないでしょうか?
0201デフォルトの名無しさんNGNG
>>199
MapViewOfFileEx() の方かね。

いずれにせよ返ってくるのは LPVOID だから「大量に取得したメモリー全部に
アクセスすることができない」と思うが、そこは手作業でファイルマッピングの
切り替えだろう。

(狭い仮想アドレスを使い回す以上、バンク切り替え相当の手間が掛かるのは、
仕方ないよな)
0202デフォルトの名無しさんNGNG
AdministratorじゃないユーザからAdministratorでないといじれないレジストリのキーをいじるにはどうすればいいでしょうか?
0203デフォルトの名無しさんNGNG
>>202
犯罪の匂いがする
0204デフォルトの名無しさんNGNG
>>203
いえ、そういうのじゃないですよ。
レジストリの特定のキーを削除したいんです。
とりあえず今考えてるのはレジストリをいじるだけのプログラムを作ってお
いて、それを別ユーザとして起動すればいいかな〜って思ってるんですが、
もう少しスマートな方法がないかと思いまして。
0205デフォルトの名無しさんNGNG
>>204
> レジストリの特定のキーを削除したいんです。
なぜ?

一般論として言えば、Administrator しか削除できないキーを一般ユーザが削除する
のは(仮にできたら)、致命的なトラブルになるぞ。本当に必要なら、そのユーザに
ローカルマシンの Administrator 権限を付与するのが正道と思われ。
0206デフォルトの名無しさんNGNG
>>205
それでは、Administratorでない場合はどうでしょう?
他のアプリケーションの設定などを別ユーザからいじるということはできますか?
0207デフォルトの名無しさんNGNG
>>206
必要ならAdministrator権限をもらえって事だよ
そんな簡単に権限無視が出来るんじゃなんのためのユーザー管理だよ
0208デフォルトの名無しさんNGNG
ここですか、クラッキングツールを作ろうというスレは。
0209デフォルトの名無しさんNGNG
いえ、Administratorを要求するエロゲプログラマがいるスレです。
0210デフォルトの名無しさんNGNG
隠しAPIのNtQuerySystemInformationだけど、↓で安全に使えるのに気づいた。
ttp://support.microsoft.com/default.aspx?scid=http://www.microsoft.com/Japan/s
upport/kb/articles/JP253/0/66.ASP

だから何だと言われても困る。
0211デフォルトの名無しさんNGNG
微妙にスレ違いかもしれないですが。

Windows2000でファイルを選択してマウス右ボタンのプロパティから概要タブで
タイトルやコメントとかを設定できますけど、
あれってどこに記録されているのでしょう & 設定するAPIはあるのでしょうか。
0212デフォルトの名無しさんNGNG
http://www.ipa.go.jp/security/awareness/vendor/programming/b08_03_main.html
の下の方にある、福次ストリームを利用しているはず。
0213デフォルトの名無しさんNGNG
設定するAPIはOleなんとかかんとかというのがたぶんある気がする
0214デフォルトの名無しさんNGNG
>>211
詳しく調べてないけどたぶんIPropertyStorageを使うんだと思う
http://msdn.microsoft.com/library/en-us/stg/stg/ipropertystorage_ntfs_file_system_implementation.asp
0215デフォルトの名無しさんNGNG
動的にダイアログの中にダイアログ(コンテナ的な役割)を置きたいんですが、
ダイアログテンプレートで作成することはできますか?
なんかDLGITEMTEMPLATEの中はクラス名かIDが必要みたいなんですが、
ここにダイアログを直接置くことはできないんですか?
0216211NGNG
>>212-214
ありがとうございます、資料読んでみます。
0217StretchDIBitsNGNG
hBitmap = (HBITMAP)LoadImage(hInst, FileName,
IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
GetObject(hBitmap, sizeof(BITMAP), &bmp_info);
wx = bmp_info.bmWidth;
wy = bmp_info.bmHeight;
hdc_mem = CreateCompatibleDC(hdc);
SelectObject(hdc_mem, hBitmap);
StretchDIBits(hdc,0,0,wx, wy,
0,0,wx, wy,
pBits,&bmp_info,DIB_RGB_COLORS,SRCCOPY);

とした場合最終行のpBitsには"DIBのビットデータの先頭へのポインタ"
をいれるという説明なのですが,これはどうやって取得できますか?
0218API学くんNGNG
質問です。
リッチエディットコントロールをSDKのC言語で組もうとしてる者です。
EDITSTREAM構造体のdwCookieとpfnCallbackメンバを設定して、
EM_STREAMINメッセージでストリームにデータを送ってリッチエディット
コントロールに表示させるらしいという事がわかりました。
しかし実際に表示させようとしても、やり方がわかりません。
具体的に言うとchar goku[30]="こんにちは"という、メモリ上のデータを
表示させようとするときdwCookieに何を指定するのか分かりません。
es.dwCookie = (DWORD)goku;のように指定しても駄目でした。
ファイルを読み込んでそれを表示する事は出来るのです。
dwCookieにCreateFileで作成したhFileを指定すれば、ファイルの内容が
リッチエディットコントロールに表示されました。
es.dwCookie = (DWORD)hFile;
という感じで大丈夫でした。
ネット上で調べたのですが情報がありません。
メモリ上のデータをリッチエディットコントロールに表示するにはどうすれば
いいか教えて下さい。
0219デフォルトの名無しさんNGNG
>218
コピペじゃ駄目?
CHARRANGE cr;
cr.cpMin = cr.cpMax = -1;
SendMessage(hRich,EM_EXSETSEL,0,(LPARAM)&cr);
SendMessage(hRich,EM_REPLASESEL,0,(LPARAM)"こんにちわ");

SetWindowText(hRich,"こんにちわ");
でもいいかも。

参考→ttp://www.kumei.ne.jp/c_lang/sdk2/sdk_130.htm
0220デフォルトの名無しさんNGNG
>217

StretchDIBits() → StretchBlt() じゃないの?
0221デフォルトの名無しさんNGNG
ダウンロードして見れるWin32APIリファレンスはありませんか?
0222デフォルトの名無しさんNGNG
>>221
Platform SDK にドキュメントついてきたと思うが。英語だけど。
0223API学くんNGNG
>>219
コピペという方法があったのですね。
リッチテキストを扱うからエディットストリームだという固定観念で調べてました。
普通のエディットコントロールも知らないで、いきなりリッチエディットを
作ろうとしたのが勘違いの元でした。
どうもありがとうございました。

0224APIビギナーNGNG
program 中から現デスクトップ画面のスクリーンショットをBMP
に落とすにはどんな方法がありますか?

0225デフォルトの名無しさんNGNG
GetDC(0)してお好きにどうぞ
2000/XPではCAPTUREBLTをお忘れなく
0226デフォルトの名無しさんNGNG
>>221
MSDNに入れば、「Subscriber Downloads」でダウンロードできるよ(藁
0227APIビギナー NGNG
>GetDC(0)してお好きにどうぞ
>2000/XPではCAPTUREBLTをお忘れなく

を,どうも.猫でもできる,を参考にしてやって見ます.

ところでウィン98だと選択の度にWM_PAINTで書きなおして表示されて
いた画像が,Xpだと全く更新されないままになるってのは
何が原因でしょうか.

0228デフォルトの名無しさんNGNG
動的にダイアログの中にダイアログ(コンテナ的な役割)を置きたいんですが、
ダイアログテンプレートで作成することはできますか?
なんかDLGITEMTEMPLATEの中はクラス名かIDが必要みたいなんですが、
ここにダイアログを直接置くことはできないんですか?
0229デフォルトの名無しさんNGNG
プロパティシートにするのが楽だとおもうのだが、、
0230 NGNG
VisualC++で保存したWin32APIを開いてビルトすると

"外部参照 1 が未解決です。"
みたいなメッセージがでてきてエラーになるんですが、
そのまま元に戻す方法だれか知りませんか?
0231デフォルトの名無しさんNGNG
>>230
取りあえず他のスレにまで迷惑かけるなって。
0232デフォルトの名無しさんNGNG
>>227
>>230
すまんが意味がまったくわからん。
もう少しわかりやすい日本語を話してくれ。
0233デフォルトの名無しさんNGNG
>>232
OSボム
http://pc3.2ch.net/test/read.cgi/tech/1029678513/l50

ここのネタだよ。気にしなくていい。
0234 NGNG
>232
日本語?
まぁお前ら天才だからこれくらいの日本語理解できるんとちゃうん?
お前は天才じゃなかったか。スマソ

>231->233
ここはWin32API質問箱だぞ?
スレに関係ない話題はやめろ荒らしめ
0235デフォルトの名無しさんNGNG
>>234
DELLさん、逆ギレですか?
0236DELLNGNG
>235
とにかく、230の質問が解ればそれでいいのだ。
隣でVisualC++開いている。
2chで問題が解決すれば得だろ?
0237デフォルトの名無しさんNGNG
>>236
図星でした。
0238デフォルトの名無しさんNGNG
>>236
お前さぁ、自分で考えて書いたんじゃなかったのか?なぜコンパイルできん?
また、

どこかで見つけたブラクラを書き込め!

系のこの板でもっとも頭の悪い部類に入るスレかよ・・・。
0239DELLNGNG
>238
お前さぁとか偉そうなこといってねぇで、
そのまま実行できんかったらコードを
新規作成したファイルにコピーすればコンパイルできることに気づけよ。

まぁ確かに俺の書いたコードは下らないものかも知れないが、
別にここはプログラム技術板なんだからブラクラより
マシだと思うぞ。
0240デフォルトの名無しさんNGNG
>>239
(劇藁嘲笑
0241デフォルトの名無しさんNGNG
どうせ、なんかのlibをリンクし忘れてるんだろ。
0242DELLNGNG
>241
なるほど参考になりました。
0243デフォルトの名無しさんNGNG
で見当はずれだったら自分の伝達能力を棚に上げてまた暴れるんだろーなー
0244DELLNGNG
>243
必死だな(藁
0245デフォルトの名無しさんNGNG
>>242
うわああああ
dumpbinも知らん
mlも使えない
スーパーDQNだぁぁぁぁ

HNのとおりデリられるべき香具師だな
0246デフォルトの名無しさんNGNG
GetDIBitsとSetDIBitsの第一引数で指定する
HDCについて教えてください。

hDC = GetDC( hWnd );
hDCMem = CreateCompatibleDC( hDC );
hBmp = CreateCompatibleBitmap( hDC, 64, 64 );
SelectObject( hDCMem, (HGDIOBJ)hBmp );

上のコードの後に、
GetDIBits( hDC, hBmp, … );
としても、
GetDIBits( hDCMem, hBmp, … );
としてもうまく動きます。これはどういうことなのでしょう?
HDCならなんでもいいのでしょうか?
(ちなみに、NULLだとうまく動きませんでした)
0247デフォルトの名無しさんNGNG
>>246
どういうことも何も、
hDCMemはCreateCompatibleDCで作ったんだから、
hDCと互換性があるに決まってる。

試したことないけど、
やっぱ、プリンタのHDCとか使ったら駄目じゃない?
0248246NGNG
>>247
動作に互換性があるのはわかるのですが、
>SelectObject( hDCMem, (HGDIOBJ)hBmp );
としているわけですから、
GetDIBits( hDC, hBmp, … );
でうまくいくのが不思議に思いまして。

GetDIBItsやSetDIBitsの場合、デバイスコンテキストに
設定した値(SelectObjectで指定したオブジェクトなど)は
全く影響なしということでいいのでしょうか?
0249247NGNG
>>248
http://www.microsoft.com/japan/msdn/library/ja/jpgdi/html/_win32_getdibits.asp
によると、
「hbmp パラメータが示すビットマップが
デバイスコンテキストで選択されている場合、
この関数を呼び出さないでください」とあるんだが。

疑問の解消にはならないかも知れないが、
そういうことはしてはいけないらしい(逃
0250デフォルトの名無しさんNGNG
>>246さーん
CreateDIBSection() と同じで、DIB_RGB_COLORS である限りは HDC は
まったく参照されないんじゃなかったっけ? (HDC は NULL でいい)
0251デフォルトの名無しさんNGNG
すみません教えてください。
リストボックスに、文字を追加して行きたいと思い下記のようなコードを打ちました

SendDlgItemMessage( hWnd, IDC_LIST1, LB_ADDSTRING, 0, (LPARAM)Buff );

たしかに、文字はリストボックスに追加されたのですが、どんどん追加していくと
スクロールバーができ、入力している文字がリストボックスから見えない位置に
いってしまいます。
最後に出力した文字が、常に見える状態にするにはどうすればよいのでしょうか?
MFCだと、SetCurSel( m_ctl.GetCount()-1 );
でいいみたいなんですが、apiだとどうして良いのか、分かりません・・


0252デフォルトの名無しさんNGNG
>>251
そこまでわかっているならGoogleで
SendDlgItemMessage SetCurSel
で見つかる予感 ->
ttp://n76cd-01p05.ppp11.odn.ad.jp/old/a6050.html

これでいいんじゃないでしょうか。
0253デフォルトの名無しさんNGNG
VisualC++6 Pro SP5でCreateJobObjectがつかいたいのだけど
error C2065: 'CreateJobObject' : 定義されていない識別子です。
っていわれちゃう。
なんでだよヽ(`Д´)ノウワァァァァン

#include <windows.h>
#include <winbase.h>
#pragma comment(lib,"kernel32.lib")


int main(int argc, char* argv[])
{
        HANDLE hJob = (HANDLE)CreateJobObject(NULL, "testjob");


        return 0;
}
0254デフォルトの名無しさんNGNG
>>253
CreateJobObject は Windows 2000 以降の API だけど、
ちゃんとそれに対応した新しい Platform SDK 使ってるかね。
0255デフォルトの名無しさんNGNG
>>253

ヘルプに
>対応情報
> Windows NT: バージョン 5.0 以降を使います。
って書いてあるよね。

実行環境のWindowsのバージョンに依存するときは、
_WIN32_WINDOWSや_WIN32_WINNTというマクロが必要だよ。
↑
をヘルプで引いてごらん。


#define _WIN32_WINNT 0x0500
とか、
>Visual C++ 6.0: To specify compiler options,
>go to the Projects menu and click Settings,
>then select the C/C++ tab.
とか、することになってるよね。
0256デフォルトの名無しさんNGNG
>>249
>「hbmp パラメータが示すビットマップが
>デバイスコンテキストで選択されている場合、
>この関数を呼び出さないでください」とあるんだが。

あ、本当だ。見落としてました。(^^;

>>250
>CreateDIBSection() と同じで、DIB_RGB_COLORS である限りは HDC は
>まったく参照されないんじゃなかったっけ? (HDC は NULL でいい)

なるほど、HDCはパレットの情報を得るのに使っているんですね。
調べてみると、SetDIBitsのところにも、NULLでいいと書いてありました。
ところが、実際にNULLを指定すると、なぜかエラー(戻り値=0)が
返ってきます。他のパラメータが間違っているのかな???

GetDIBits・SetDIBitsの前後を調べてみることにします。
とりあえず、ありがとうございました。>>247 >>249 >>250
0257デフォルトの名無しさんNGNG
>>250
よく読め
>>246はNULLだとダメだったとちゃんと言ってるぞ
GDI関数で第一引数にHDCを取るものは
どのドライバを呼び出すか決めるためにHDCを使うんだから
この場合ディスプレイドライバが作ったHDCならなんでもいいけど
NULLはダメ
0258256NGNG
訂正:
>調べてみると、SetDIBitsのところにも、NULLでいいと書いてありました。

正確には、「無視されます」とあり、
「NULLでもいい」と書かれてあったわけではありませんでした。
失礼。
0259デフォルトの名無しさんNGNG
今までMFCを使っていました。
Win32APIだけで組めばプログラムのファイルサイズがかなり小さくなると
思ったのですが、実際にダイアログリソースを表示するだけの簡単なプログラムを
作ってみるとMFCで共通DLLを使ったものよりも大きくなってしまいました。
 MFC(共通DLL使用)→28KB
 Win32API→44KB
こんな具合です。
もうちょっと(せめてMFC版よりも)サイズを小さくするにはどうしたらよいのでしょうか?
0260デフォルトの名無しさんNGNG
>>259
必要な処理をDLLに持っていって本体はWinMain()のみにする。
0261デフォルトの名無しさんNGNG
MSVCRT.DLLを使うようにする。
0262デフォルトの名無しさんNGNG
>>259
サイズの比較になってねーぞ
 MFC(共通DLL使用)→28KB + sizeof MFC42.DLL
0263デフォルトの名無しさんNGNG

#include "stdafx.h"
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow )
{
keybd_event(VK_SNAPSHOT,0,0,0);
return 0;
}
昨日も聞いたんだけどサー,これでデスクトップのショットが取れないのはなぜ?
アクティブウィンドウしか取れない. alt 押してないのに.
証拠画面もうぷするか?
0264デフォルトの名無しさんNGNG
>>263
そんなことせんでもGetDC(0)したのをBitBltすれば良かろう。

つぅか誰にそのキーイベント送ってるのさ?
0265デフォルトの名無しさんNGNG
>>259
upx --best --crp-ms=100000 filename
とかどうよ?
0266デフォルトの名無しさんNGNG
>そんなことせんでもGetDC(0)したのをBitBltすれば良かろう

その通りなんですけど,キーコードがちゃんと送れてないのがげせない.
>誰にそのキーイベント送ってるのさ
OSにです.ペイントで貼り付けると一部しか取れてないんです.
そのときのアクティブだけってことは
 alt + Pscrn が送られてることになる.
げせねぇ
0267 NGNG
>>266
keybd_eventのヘルプの下の方は読んだか?
0268デフォルトの名無しさんNGNG
>>262
そんなこと言い出したらwin32apiだけだってdll使うっつーの
0269 NGNG
>>268
アフォですか? 比較するならmsvcrt.dllを使ったものと
比較すべきと言っているんだろ。
0270デフォルトの名無しさんNGNG
>>263
keybd_event(VK_SNAPSHOT,1,0,0);
keybd_event(VK_SNAPSHOT,1KEYEVENT_KEYUP,0);
0271270NGNG
2行目の1の後に,が抜けた。
0272デフォルトの名無しさんNGNG
LIBCTINY.LIBを使ってる人いる?
http://msdn.microsoft.com/msdnmag/issues/01/01/hood/hood0101.asp

簡単にサイズを小さくできるっていうライブラリ。
0273keybd_eventNGNG
了解

おさわがせしました
0274251NGNG
>>252さん
解決しました、ありがとう御座います。
■ このスレッドは過去ログ倉庫に格納されています