- 1 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 03:44:55 ]
- スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんやお姉さんたちが答えてくれるかも。 過去スレ、関連リンクは>>2-5くらい。 ■注意 ・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。 ・日本語版MSDN Online Libraryは不完全です。英語版(msdn.microsoft.com/library/)の利用推奨。 ・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。 ・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで
- 47 名前:デフォルトの名無しさん mailto:sage [2007/03/22(木) 17:27:39 ]
- >>44
まぁできない。 リリースビルドの.exeにシンボル情報は残らないから、関数のアドレスとかわからない。 逆コンパイルして出たもの使うとかしかない。(俺は逆コンパイル自体したことないけど) DLLならもちろんできる。ライブラリってのは他から呼ぶためにある。
- 48 名前:デフォルトの名無しさん mailto:sage [2007/03/22(木) 17:29:54 ]
- >>44
結論から言うと、既存のアプリケーションのユーザ関数を外部のプログラム から実行することはできます。 ですが、私の知っている方法では逆アセンブルを行う必要があります。 逆アセンブルを禁止されているのであれば、この方法は使えません。 ついでにいうと exe 内の関数については関数名が失われている可能性が高いです。 (build オプションによりますが・・・) ユーザ関数部分が dll になっている事をお祈りしております。 ちなみに私の知っている方法は 既存アプリケーションを逆アセンブル ↓ 実行したい関数のアドレスを調査 ↓ 既存アプリケーションを起動して DLL 注入 ↓ プロセス間通信で必要なときに注入した DLL が実行したいユーザ関数呼び出し ↓ 戻り値をプロセス間通信で受け渡す ソフトウェアライセンスで逆アセンブルが禁止されていることが多いので この方法は社会的に大変大きな危険性が伴います よくライセンス条項を調べてから行ってください
- 49 名前:デフォルトの名無しさん mailto:sage [2007/03/22(木) 17:45:26 ]
- ライセンス条項っつーか、自分とこのバイナリのソースを無くしたんだべ
- 50 名前:デフォルトの名無しさん mailto:sage [2007/03/22(木) 17:54:52 ]
- エクスポートされてれば可能
- 51 名前:デフォルトの名無しさん mailto:sage [2007/03/22(木) 17:54:53 ]
- 外注に委託していたアプリケーションで
その外注と取引中止したとかの理由かと思った
- 52 名前:デフォルトの名無しさん mailto:sage [2007/03/22(木) 18:44:45 ]
- あとはMicrosoft Officeの如く、徹底的にAcitveXオートメーション化されていれば、
中のプログラムを呼ぶというのもできるが、そんなこと期待できる訳が無い。
- 53 名前:デフォルトの名無しさん mailto:sage [2007/03/22(木) 20:29:01 ]
- 便乗して・・・
Dependency Walkerってどうやってるの?
- 54 名前:53 mailto:sage [2007/03/22(木) 20:37:37 ]
- ごめん。
理解した。
- 55 名前:デフォルトの名無しさん mailto:sage [2007/03/22(木) 20:38:25 ]
- こうして こうして こうやるの
- 56 名前:デフォルトの名無しさん mailto:sage [2007/03/22(木) 20:39:46 ]
- 最近寒いVIPPERみたいのが棲みついてるな
- 57 名前:デフォルトの名無しさん mailto:sage [2007/03/22(木) 20:58:32 ]
- バイパー
- 58 名前:デフォルトの名無しさん mailto:sage [2007/03/22(木) 21:16:32 ]
- Diamond Multimedia ?
- 59 名前:デフォルトの名無しさん mailto:sage [2007/03/22(木) 21:22:45 ]
- SetWindowsHookExでフック(複数)かけるのと、
SetWindowLong等でサブクラス化するのと、 ぶっちゃけパフォーマンスに違いでますか?
- 60 名前:デフォルトの名無しさん mailto:sage [2007/03/22(木) 21:24:17 ]
- >>59
やってみればいいんじゃないかと。 違いが出る場合もあるし、出ない場合もあるとしか答えられんね。
- 61 名前:デフォルトの名無しさん mailto:sage [2007/03/22(木) 21:30:33 ]
- 知らない奴は無理して答えなくてもいいんだぜ
- 62 名前:44 mailto:sage [2007/03/22(木) 21:39:42 ]
- >>47,48
逆アセンブルしてどうにかというのは、関数のアドレスが分かったとしても、 関数の引数と戻り値のタイプも分からないと駄目ですよね。 おそらく私にはそこまで読めそうにないので、上司を説得する方法を考えます。 情報ありがとうございました。
- 63 名前:デフォルトの名無しさん mailto:sage [2007/03/22(木) 21:39:43 ]
- ☑ フックするイベントや頻度によるので答えられませんが、SetWindowLong で済ませるのが良いと思います。
- 64 名前:デフォルトの名無しさん mailto:sage [2007/03/22(木) 21:51:44 ]
- >>62
ついでにいうと呼出規約?も必要です __fastcall とか __cdecl とかそういう奴
- 65 名前:デフォルトの名無しさん mailto:sage [2007/03/22(木) 21:55:56 ]
- ☑
- 66 名前:デフォルトの名無しさん mailto:sage [2007/03/22(木) 22:53:46 ]
- ☑逆汗すれば全部わかる
- 67 名前:デフォルトの名無しさん mailto:sage [2007/03/22(木) 23:43:46 ]
- 特定のアプリケーションの使用メモリを制限する方法ありませんか?
制限対象のアプリケーションは修正できません。 なんかメモリリークするバグがあって、最悪でもメモリが一定使用量に なったらそのアプリケーションを一度殺して再起動したいのです。
- 68 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 00:04:44 ]
- >特定のアプリケーションの使用メモリを制限する方法ありませんか?
それは大変そうだが・・・ >なんかメモリリークするバグがあって、最悪でもメモリが一定使用量に >なったらそのアプリケーションを一度殺して再起動したいのです。 これなら比較的簡単にできないか? 常駐監視プログラム作ってその対象のアプリのメモリ使用量を監視して 一定量に達したら TerminateProcess でサヨウナラとかでいんじゃね?
- 69 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 00:15:06 ]
- SetProcessWorkingSetSizeとかかな?
- 70 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 00:16:50 ]
- そうですね。
特定アプリのメモリ使用量を外部のプログラムから得る方法あるでしょうか?
- 71 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 00:33:36 ]
- >>69
それは物理メモリの使用量を調整する為のAPIなんじゃないの?
- 72 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 00:35:05 ]
- >>69
んー、そのAPIはメモリ不足時に仮想メモリに逃がすだけみたいですね。 GetProcessMemoryInfoというのを見つけました。 psapi.dll使うやつみたいですね。 これの引数の構造体メンバのWorkingSetSizeが タスクマネージャで表示されるメモリ使用量と同じらしいです。 ううう…
- 73 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 00:44:00 ]
- >>71-72
うえ、そうだったか ノイズスマソ
- 74 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 00:48:54 ]
- >>72
WorkingSetSize +PagefileUsage あたりでいんじゃね?
- 75 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 00:55:58 ]
- なんとかできそうです。
ありがとうございました。
- 76 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 01:39:34 ]
- 対象アプリケーションを作った奴に文句言うのが正しい解決法だろう。
- 77 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 01:51:13 ]
- >>67
ジョブオブジェクト
- 78 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 02:00:59 ]
- 教えてください。とあるサイトで見たコードなんですが
DWORD WINAPI oreore(LPVOID p) { MSG msg; /* メッセージキューを作る。*/ PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE); SetEvent((HANDLE)p); while (GetMessage(&msg, NULL,0,0) > 0) { switch (msg.message) { case WM_SURE_TEST1: puts("WM_SURE_TEST1"); break; case WM_SURE_TEST2: puts("WM_SURE_TEST2"); break; case WM_SURE_TEST3: puts("WM_SURE_TEST3"); break; default: puts("理解できないメッセージです"); } } ExitThread(0); } このコードの最初のPeekMessageの必要性がよくわからないです。 そもそも必要なのでしょうか?
- 79 名前:78 mailto:sage [2007/03/23(金) 02:01:44 ]
- 因みにこれはCreateThreadで作られたスレッドです。
- 80 名前:デフォルトの名無しさん [2007/03/23(金) 02:06:13 ]
- >>77
日本語でおk
- 81 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 02:11:15 ]
- 職業物体
- 82 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 02:12:20 ]
- >>78
スレッドが作成された時点ではメッセージキューが作成されていない。 (メッセージキューはスレッド単位で存在するもの) PeekMessage等のAPIが初めて呼ばれたときに作成される。 詳しくはPostThreadMessageでググってくれ。
- 83 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 02:20:09 ]
- >>80
CreateJobObject & SetInformationJobObject # 日本語でおkと言われたのに英語になったw
- 84 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 02:22:26 ]
- >>83
肝心のパラメーターが判りません。 クラスに応じた構造体を渡すみたいですが 情報出てきません…
- 85 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 02:35:37 ]
- >>84
msdn2.microsoft.com/en-us/library/ms686216.aspx ぐぐったら一発で出てきたが。 こちらは日本語でおkとか言われてもリクエストには応えかねるのでよろしく あと最後にAssignProcessToJob
- 86 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 08:26:27 ]
- >>84
MSDN読めカス ググれカス
- 87 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 09:45:40 ]
- Richeditでキーワードに色を付けたいのです。
// 赤色に変更するためのCHARFORMAT CHARFORMAT cf; cf.cbSize = sizeof(cf); cf.dwMask = CFM_COLOR; cf.crTextColor = RGB(255, 0, 0); // 選択範囲を反転表示しないように設定 SendMessage(hwndEdit, EM_HIDESELECTION, TRUE, 0); for(/* begin〜end を Richedit 内のキーワードの位置に設定しながら繰り返す */){ SendMessage(hwndEdit, EM_SETSEL, (WPARAM)begin, (LPARAM)end); // ← ※ SendMessage(hwndEdit, EM_SETCHARFOTMAT, SCF_SELECTION, (LPARAM)&cf); } ↑のように処理すると、※の場所で、スクロールバーが連動して動いてしまいます。 スクロールバーをシンクロさせない方法はありませんか? もしくはキーワード部分を選択せずに色分けする方法はありませんか?
- 88 名前:デフォルトの名無しさん [2007/03/23(金) 10:36:42 ]
- すいません誘導できますた。
IsWindow(handle)みたいなプロセスIDかスレッドの生死を判断するものはあるんでしょうか?
- 89 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 10:55:33 ]
- ,、‐ " ̄:::゙:丶、
,r: ,' 3゙ :::::::/ハヽ:ヽ::::、:ヽ {::://:::::::// ヽ\ト、:::::::! ヾ l:::::::/ 丶 `ヾ ィ、:::| |;:r::| O` 'O ゙ハ| < ないない ヽハ :.:. :.: レ ´\ r‐--‐、,ノ r、 r、/ヾ ̄下ヘ ヽヾ 三 |:l1、_ヽ/__ .ィヽ \>ヽ/ |` } n_n| | ヘ lノ `'ソ l゚ω゚| | /´ /  ̄|. | \. ィ ___ | | | ノ l | | | | i:| |
- 90 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 10:59:10 ]
- HANDLEを引数にするAPIに無効なHANDLE渡すとAPIは失敗して、
そういう意味のエラーコードが設定されるからそれで判断するとか?
- 91 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 11:13:43 ]
- GetProcessVersionとかOpenProcessなどが使えそうだけど
Session境界を超えた場合の挙動とかわからないな
- 92 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 11:15:43 ]
- GetExitCodeProcess はどう?
- 93 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 12:29:40 ]
- プロセスを全部列挙してみるとか
- 94 名前:88 [2007/03/23(金) 12:34:45 ]
- >>89-92 皆さんありがとうございました。
>>91氏のGetProcessVersion() = 0 で死亡確認できました。 ありがとうございました。
- 95 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 14:06:22 ]
- ものすごい基本の質問なんですが
charとchar*やTCHARとTCHAR*のように 最後に*が付くのと付かないのではどう違うんですか?
- 96 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 14:14:08 ]
- ぬるぽ
- 97 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 14:18:29 ]
- 一応マジレスすると、*がつくのはポインタ型。全然違うもの。
詳しくはC言語のスレ行ってくれ、そっちなら真面目に答える(かもしれない)。
- 98 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 14:25:34 ]
- >>97
ありがとうございます。 ググってみて少し分かったような気がします。 スレ違い失礼しました。
- 99 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 16:33:31 ]
- >>95 和んだw
- 100 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 18:15:47 ]
- a*は黄門、aは体
- 101 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 19:51:33 ]
- >>94
プロセスIDが再利用されると生きてると誤判定する可能性があるぞ。 OpenProcessでハンドルを持っておいた方がいい (ハンドルが1つでもある限りプロセスIDは再利用されないことが保証される) 死亡確認はGetExitCodeProcessかWaitForSingleObject
- 102 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 20:05:21 ]
- >>95
俺ならTCHAR *じゃなくてLPTSTRだぜwwwwwwwwww
- 103 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 20:32:10 ]
- >>96
まだそうと決まってないのにw
- 104 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 00:28:07 ]
- 32APIはよく知らないんですが、24bitsのDIBって有効なんでしょうか?
#define WIDTH 100 #define HEIGHT 50 LPDWORD lpPixel; BITMAPINFO bmpInfo; : : lpPixel=(LPDWORD)HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, WIDTH*HEIGHT*3 //Alpha保持しないから3でいいんだろうか ); : : //3bytesだから24でいいよね? bmpInfo.bmiHeader.biBitCount=24;
- 105 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 00:30:05 ]
- 1行辺りのバイト数を4の倍数に揃えないといけないとかなんとかあったはず。
- 106 名前:104 mailto:sage [2007/03/24(土) 00:31:22 ]
- >>105
それってファイルフォーマットじゃなくてDIBにもそういうルールがあるんですか?
- 107 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 00:36:33 ]
- うん
- 108 名前:104 mailto:sage [2007/03/24(土) 00:38:28 ]
- ググったら自己解決しました
- 109 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 00:39:03 ]
- BMPファイルはヘッダの後にDIBをそのまま並べただけなのだから、
ファイル上でそうなっているということはメモリ上でもそうなっているということ。
- 110 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 03:31:24 ]
- 質問です。ポップアップウィンドウを表示したいのですが
HWND hWnd; hWnd = CreateWindow(TEXT("STATIC"),NULL,WS_POPUP | WS_BORDER, CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT, NULL,NULL,hInst,NULL); ShowWindow(hWnd,SW_SHOW); としても何も表示されません。原因が分からず困っています。 間違いがあれば指摘して下さい。コンパイラはBCCです。
- 111 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 03:38:58 ]
- >>110
間違いを指摘してなんとかなるってレベルじゃねぇぞ! ・・・メッセージポンプ、メッセージループでググれ。
- 112 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 03:45:28 ]
- グーグってもしーかたない 迷わーずにすすめよ 行けばわかるのさ♪
- 113 名前:110 mailto:sage [2007/03/24(土) 04:20:22 ]
- 自己解決しました。
CW_USEDEFAULTを具体的な数値に置き換えると表示されました。(^_^;)
- 114 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 04:25:42 ]
- 解決してねぇぇぇぇぇぇ
- 115 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 04:35:55 ]
- おう
- 116 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 10:30:06 ]
- >>101 ありがとうございます。早速ハンドルを持ったままに変更しようと思います。
- 117 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 11:24:30 ]
- >>111
それはここに書いていないだけに違いない
- 118 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 12:55:13 ]
- 24bitDIBに4の倍数の縛りはなかったと思うぞ。
ただ1ピクセルの転送にWord、Byteそれぞれ1回づつ必要だからDoubleWord1回ですむ32bitのほうが扱い易いのは確か。 4の倍数は24bitDIB扱うライブラリの制限じゃ?(高速化のために4バイトづつ処理する関係上4の整数倍ピクセルじゃないと問題が出る)
- 119 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 13:06:41 ]
- 要はアライメントの問題って事?
- 120 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 13:09:24 ]
- Win32の非圧縮DIBでは、スキャンライン毎のDWORDアラインは必須。
あと、HeapAllocとか使うくらいならCreateDIBSectionの方が楽だな。
- 121 名前:デフォルトの名無しさん mailto:sage [2007/03/24(土) 15:59:24 ]
- >>118
「1行辺りの」バイト数に4バイトアラインの制限がある。1ピクセルあたりではない
- 122 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 13:22:59 ]
- >>5
Update来ている Microsoft® Windows® Software Development Kit Update for Windows Vista™ www.microsoft.com/downloads/details.aspx?familyid=ff6467e6-5bba-4bf5-b562-9199be864d29&displaylang=en
- 123 名前:デフォルトの名無しさん mailto:sage [2007/03/25(日) 14:32:52 ]
- >>122
今日寝る前に>>5をインストールしたばかりだというのに、 この仕打ちはあんまりだorz
- 124 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 02:10:40 ]
- Win32APIのコモンコントロールにデータグリッド(Excelの表みたいなやつ)
ってないんでしょうか?
- 125 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 02:14:21 ]
- つ[リストビュー]
- 126 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 02:15:08 ]
- >>124
リストビューコントロール(エクスプローラの右側のペインのヤツ)ぐらいしかない。
- 127 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 02:46:31 ]
- オーナードロー駆使しまくって無理やり似せたことがあるけど
なかなか死ねる
- 128 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 03:11:17 ]
- >>127
それ、壱からコントロールをフルスクラッチしたほうがまだ楽なんじゃないのか? 描画位地の調整が半端じゃなく大変だったろうに。
- 129 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 03:11:35 ]
- ActiveXコントロール
- 130 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 03:17:04 ]
- >>128
五時間くらいhDCと格闘してからそうしたorz
- 131 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 03:30:46 ]
- フルスクラッチでも挙動や見た目をコモンコントロールに似せようとするとどのみち大変なんじゃねえの
- 132 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 03:48:26 ]
- >>131
それはそうなんだが、コモンコントロールってWindowsのバージョンによって 微妙に挙動が異なったりするし、描画位置の調整が恐ろしく大変だから >>124 みたいなのはフルスクラッチしたほうが楽なんだよ。
- 133 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 10:20:57 ]
- そういや、NT3.51以前にListBoxを基底にしてListView作ったっけな
- 134 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 10:33:14 ]
- あるファイルを開いているプロセスの一覧を取得するアプリを
作りたいのですが、どのようなAPIを使えばよいでしょうか? ヒントになるようなことだけでもよろしくお願いします。
- 135 名前:124 mailto:sage [2007/03/26(月) 10:49:37 ]
- データグリッドをフルスクラッチってどどどどんな感じで作るんでしょうか。
- 136 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 10:51:27 ]
- どんなって、普通にウィンドウプロシージャ書いて、ウィンドウクラス登録して、ウィンドウ作るんだろ?
- 137 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 10:52:48 ]
- まず縦横に線を引くことからはじめるんだ
- 138 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 10:55:01 ]
- データ構造決めてからやればそんなに手間でもないけど
使う人が慣れてるやつとかけ離れてると使ってくれないかもな
- 139 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 11:00:55 ]
- オブジェクトの動作の一部だけを上書きするのがサブクラス化、
構築からウィンドウクラスの登録から全部最初から 書くのがフルスクラッチという解釈でいいんすか?
- 140 名前:124 mailto:sage [2007/03/26(月) 11:39:08 ]
- 自分で線引くってことは、もしかして、クリックされたセルの色反転させるのも
一々座標見て、「ここは上から2番目、左から3番目のセルだから、 座標x、y−s、tで描かれる長方形の色を今ある色と反転させる」とか やる必要あるんですかねッ!?行列のソートも自前!?
- 141 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 11:56:19 BE:122283779-2BP(222)]
- >>140
内部でこっそりListBoxとかを持っておくとか。
- 142 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 12:32:03 ]
- >>140
ListCtrlで足りない機能を列挙するところから始めたら?
- 143 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 12:32:41 ]
- >>140
だから自前描画は普通やらないの。
- 144 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 12:43:59 ]
- >>140
そうだよ、スクロールも考慮してな
- 145 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 13:51:56 ]
- Cでスクリーンショット撮ってクリップボードや適当な画像ファイル形式に保存する
プログラムを作成したいんだけどどうしたらいい?
- 146 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 13:54:37 BE:67935375-2BP(222)]
- GetDC(NULL)
- 147 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 13:55:43 ]
- CreateDC "DISPLAY", 0, 0, 0
|

|