X



Win32API質問箱 Build124
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
垢版 |
2017/11/11(土) 19:23:00.69ID:TpLoCFAx
Win32APIについての質問はこちらへどうぞ。

■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。
 英語版( http://msdn.microsoft.com/en-us/library/ )の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで

■過去スレ
Win32API質問箱 Build123
http://mevius.2ch.net/test/read.cgi/tech/1475897582/
Win32API質問箱 Build122
http://echo.2ch.net/test/read.cgi/tech/1451988219/
Win32API質問箱 Build121
http://echo.2ch.net/test/read.cgi/tech/1438695290/
Win32API質問箱 Build120
http://echo.2ch.net/test/read.cgi/tech/1428570962/

■関連スレ
Visual Studio 2017 Part4
http://mevius.2ch.net/test/read.cgi/tech/1509244956/
【C++】 DirectX初心者質問スレ Part40 【C】
http://mevius.2ch.net/test/read.cgi/tech/1474782237/
0002デフォルトの名無しさん
垢版 |
2017/11/11(土) 19:26:38.85ID:TpLoCFAx
■番外編
WindowsDDK各種についてのスレ
http://mevius.2ch.net/test/read.cgi/tech/1049116134/
D言語 Part34
http://mevius.2ch.net/test/read.cgi/tech/1422155249/
Cygwin + MinGW + GCC 相談室 Part 8
http://mevius.2ch.net/test/read.cgi/tech/1411399211/
Borland Developer Studio 2006 No.13
http://mevius.2ch.net/test/read.cgi/tech/1175861395/
Borland C++ Compiler オ ワ タ
http://mevius.2ch.net/test/read.cgi/tech/1206951221/
0003デフォルトの名無しさん
垢版 |
2017/11/11(土) 19:28:04.05ID:TpLoCFAx
■ネイティブなやつとか
【GUI】wxWidgets(旧wxWindows) その5【サイザー】
http://mevius.2ch.net/test/read.cgi/tech/1270793556/
【Win/Mac/Linux/Android/iOS】 Qt 総合スレ 18
http://mevius.2ch.net/test/read.cgi/tech/1488948543/
●●●●TCL/TKなら俺に聞け 4●●●●
http://mevius.2ch.net/test/read.cgi/tech/1375678740/
Gtkプログラミング on Windows!!!
http://mevius.2ch.net/test/read.cgi/tech/1147024203/
0004デフォルトの名無しさん
垢版 |
2017/11/11(土) 19:29:50.88ID:TpLoCFAx
■需要あるかしらん
OpenGL 2.0 専用スレ
http://mevius.2ch.net/test/read.cgi/tech/1126268759/
OpenGL/Vulkanスレ Part22©2ch.net
http://mevius.2ch.net/test/read.cgi/tech/1440666771/
SDL=Simple DirectMedia Layerでゲームだ
http://mevius.2ch.net/test/read.cgi/tech/1103655588/
Google NaCl プログラミング 2mol
http://mevius.2ch.net/test/read.cgi/tech/1298614677/
【boot】nasm【loader】
http://mevius.2ch.net/test/read.cgi/tech/1377053129/
MASM32 - 選ばれし本物のプログラマ
http://mevius.2ch.net/test/read.cgi/tech/1348574727/
0006デフォルトの名無しさん
垢版 |
2017/11/11(土) 19:43:41.81ID:4LNBDgYy
いちもつ
0009デフォルトの名無しさん
垢版 |
2017/11/12(日) 18:55:13.45ID:g8teYUTq
Win32API標準 のリストビュー(クラス名 SysListView32) 上のリストアイテムに対して、keybd_event()やmouse_event() を使わずに
プログラムからキー押下やクリックのイベントを起こすにはどうしたらよいですか。
0012デフォルトの名無しさん
垢版 |
2017/11/12(日) 19:25:07.33ID:g8teYUTq
>>10,11
スレの性質上、意味のない無駄な書き込みはやめてもらえますか。お願いします。
意味もなくAPI名やキーワードを羅列することは、情報が冗長になりスレの価値を下げることになります。
0013片山博文MZ ◆T6xkBnTXz7B0
垢版 |
2017/11/12(日) 19:38:02.33ID:hcIx1LXl
>>9
LVM_ENSUREVISIBLEメッセージで、リストビューの項目を表示させる。
LVM_GETITEMRECTメッセージで、項目の位置を取得する。
取得した場所に対して、WM_LBUTTONDOWN/UPメッセージを呼ぶ。
0015デフォルトの名無しさん
垢版 |
2017/11/12(日) 20:17:24.65ID:g8teYUTq
>>13
リストビューにフォーカスがない状態でWM_LBUTTONDOWN/WM_LBUTTONUPを2回送信して、
ダブルクリックが仮想的に実行できるか試してみましたが、選択位置(フォーカスがないので灰色)が変わるだけで反応なしでした。
WM_LBUTTONDBLCLKだと灰色位置の変化もなし。
WM_LBUTTON*系のメッセージを使わない正規の方法があるかと思ったのですが、なさそうですね。
回答ありがとうございました。別の方法考えます。
0016片山博文MZ ◆T6xkBnTXz7B0
垢版 |
2017/11/12(日) 20:19:35.68ID:hcIx1LXl
クライアント座標とスクリーン座標があって、クライアント座標系はウィンドウごとに場所が違うから注意が必要だ。
0019デフォルトの名無しさん
垢版 |
2017/11/12(日) 21:45:52.37ID:g8teYUTq
>>18
当方、送信したい相手はdllから読み込んだ同一プロセス上のリストビューなので、GetWindowLongPtr(GWLP_WNDPROC)でイベントをフックして使った。
NM_DBLCLKイベント自体はフックしたプロシージャにちゃんと送られていることは確認できた。
NM_DBLCLKイベント送受信は成功したが、期待するダブルクリック時の振る舞いをしてくれないので、求めていた機能は成功していない状態。
これ以上はdll側の実装依存との格闘になるので、ここでの質問は終わらさせていただきます。
0021デフォルトの名無しさん
垢版 |
2017/11/13(月) 12:36:22.40ID:Q60O1ghY
ダブルクリックには常に先行するシングルクリックがあるとか2回目のシングルクリックもあるとかちゃんとやってるよね
0022デフォルトの名無しさん
垢版 |
2017/11/13(月) 21:39:25.70ID:dnspAOl6
ダブルクリック処理面倒くさい
ドライバーレベルで峻別してくれないかな

ところでGetDoubleClickTime()にあわせてタイマーイベントすると
体感長く感じるんだがどう処理するのが正しいのかな
0023デフォルトの名無しさん
垢版 |
2017/11/14(火) 00:02:34.16ID:FWNbLyCJ
ブラウザゲームとかダブルクリック使わないので
ダブルクリックなしのUIに慣れてきている自分
0024デフォルトの名無しさん
垢版 |
2017/11/21(火) 18:35:19.43ID:t2ie3Fqr
Windows7などでタスクバー上の自身のアプリにマウスを置いたときに表示される
サムネイルを別の画像にしたいのですが、やり方やサンプルなどはありませんか?
0026デフォルトの名無しさん
垢版 |
2017/11/22(水) 13:33:15.33ID:NgxFNsMl
エディットコントロールに値を手入力した後、フォーカスを失った時点で飛んでくるメッセージはありませんか?
エディットコントロールの値を、作業する直前に取り込む、という方法では、いろいろと不都合が出てきました。(たとえばレジストリへのバックアップなど)
0027デフォルトの名無しさん
垢版 |
2017/11/22(水) 13:39:07.14ID:TZAtmSaI
あります
0029 ◆QZaw55cn4c
垢版 |
2017/11/22(水) 17:44:14.54ID:NgxFNsMl
>>28
ありがとうございます。
強制的に、フォームに配置しているすべてのエディットコントロールへのフォーカスを失わせる方法はありますか?
関係ないコントロールにフォーカスを移す方法でもいいです
0032デフォルトの名無しさん
垢版 |
2017/11/24(金) 13:46:55.30ID:HWVyDVmi
SetWindowHookExのグローバルフックってもう使えないのかな?
64bitと32bitのアプリケーションが混合してる世の中だけど
0034デフォルトの名無しさん
垢版 |
2017/11/24(金) 15:30:15.15ID:HWVyDVmi
>>33
64bitのアプリケーションに32bitDllをマッピングしたら当然エラーが起きてプログラムが死んだんだけど・・・
マッピングするDllを切り替える方法とかが有るのですか?
0035 ◆QZaw55cn4c
垢版 |
2017/11/24(金) 15:40:48.12ID:ZNkp8uW6
>>28
このたびはありがとうございました。無事に実装を完了させました。
0037デフォルトの名無しさん
垢版 |
2017/11/24(金) 16:01:57.91ID:+7IWktV2
If a 64-bit application installs a global hook on 64-bit Windows, the 64-bit hook is injected into each 64-bit process, while all 32-bit processes use a callback to the hooking application.
0038デフォルトの名無しさん
垢版 |
2017/11/24(金) 20:44:09.53ID:Y2cmNidj
ウィンドウメッセージを監視するVisualStudioの付属ソフト Spy++ でさえ32bitアプリ監視向けと64bitアプリ監視向けで別々に必要なのだからしょうがない。
0039デフォルトの名無しさん
垢版 |
2017/11/25(土) 01:59:09.56ID:QwJx+kFY
32と64のexeからそれぞれhookをするしかないよ。
SetWinEventHookとかで代用できるなら片方のみでもいける。
0041デフォルトの名無しさん
垢版 |
2017/11/25(土) 15:27:02.72ID:J6q+ZC/L
Windows10上で 64ビット開発してListViewを使う

レポート形式で列を複数作り、カラムの幅の総和がリストビューの幅を超えるようにする。
項目をマウス左右(どちらでも)ドラッグで複数選択しようとすると、列の末尾にスクロールが発生し、
このときマウスカーソルがディスプレイの右下や右上に吹っ飛ぶ。
win32(x86)では発生しない。
専用テストプログラム組んで発生したのでこの場合コントロールのバグ確定でいいかな。
古めのSDK(2008とか)使っているので、最新の開発環境で作っている人の発生状況を知りたい。
004241
垢版 |
2017/11/25(土) 17:17:50.99ID:J6q+ZC/L
追加条件
ビジュアルスタイルを適用で発生・・・代替案不明
0043デフォルトの名無しさん
垢版 |
2017/11/25(土) 18:13:49.32ID:KR9Edo9E
>>41
対処法は俺も知らんけど
FCU入れるとコモンコントロールのListView使ってるアプリは全部同じ挙動になるから
OS側の不具合で間違いないと思うよ
004441
垢版 |
2017/11/25(土) 18:52:47.69ID:J6q+ZC/L
>>43
情報サンクス
しばらく様子見かな・・・
0045デフォルトの名無しさん
垢版 |
2017/11/28(火) 12:44:11.35ID:EqW/cfNY
e糞plorereで再現
0047 ◆QZaw55cn4c
垢版 |
2017/11/28(火) 20:53:48.23ID:+N+u9Tx7
ご相談させてください。
SetDIBitsToDevice 関数を使用して、bmp を表示させてようとしています。
ここで、メモリから bmp の一行分を読み込んで、SetDIBitsDevice() にて一行分だけ表示し、
繰り返し読み込みと表示を行数分だけおこなって表示させる方法を(特に)探しています。

https://ideone.com/v0METS
にて試行していますが、画面が真っ黒になりうまくありません。

どこが悪いのでしょうか?また、SetDIBitsToDevice() の第6〜第9パラメータ

int XSrc, // 転送元長方形の左下隅の x 座標
int YSrc, // 転送元長方形の左下隅の y 座標
UINT uStartScan, // 配列内の最初の走査行
UINT cScanLines, // 走査行の数

についてヒントをいただけないでしょうか?
よろしくお願いいたします。
0049デフォルトの名無しさん
垢版 |
2017/11/29(水) 15:39:20.27ID:wmbD4JNt
ドキュメントにバグがあるやつか
0050 ◆QZaw55cn4c
垢版 |
2017/11/30(木) 17:09:52.13ID:52HNpdYy
>>49
「猫Winプログラム」を並行して修正しながらやっています。
というか、猫Winプログラムに乗り換えようか…
0051デフォルトの名無しさん
垢版 |
2017/12/01(金) 05:40:43.29ID:k0FZtccS
バグだらけのひどいコードだな!
>>47よ!動かないの当たり前だ!
まず、グローバル変数で、HANDLE hFileを共有する設計前提で作ってるの?

51行目からのint WINAPI WinMain内でのバグっぽいの発見!
55行目:HANDLE hFile;
ローカル変数で定義だと…?
ローカル変数で定義するなら、そのコード内でhFileをCloseHandle();なぜしていないの?
hFileをグローバル変数で使いまわすなら、55行目のHANDLE hFile;のローカル変数の定義は不要じゃねーの?
まずは、55行目を削除しろ!

グローバル変数と、ローカル変数をちゃんと理解して使いましょう!
9行目からの LRESULT CALLBACK WndProc内でのバグ
14行目:int WIDTH = 0;
アプリケーションが終了するまで、イベントごとに毎回ウインドメッセージを処理する意味で、このプロシージャー呼ばれることは理解してるよな?
仮に、ローカル変数を確保はいいとして、case WM_PAINTでWIDTHは常に0なんだけど?
24行目〜のWM_CREATE内で一度だけ初期化して値をずっと保ちたいなら14行目は、static int WIDTH=0;じゃねーの?
そもそもCALLBACK WndProcの仕組み理解してる?

24行目
WIDTH = 4 * ((bmpInfo.bmiHeader.biWidth * bmpInfo.bmiHeader.biBitCount) + 31 / 32);
はぁ…なんで意味不明な計算してるの?
WIDTH = 4 * ((bmpInfo.bmiHeader.biWidth * bmpInfo.bmiHeader.biBitCount + 31)/ 32);
こっちが正しいんじゃね?これどういう意図で計算しているかわかってる?

猫のページ見てるならまずは、動くコードをコピペして動かせよ!手打ちでバグ作ってどーする!
コード見てて、ローカル変数の使い方や、ウィンドウプロシージャの仕組みがちゃんと理解できていないように見えるので、
直ちに、ウィンドウプロシージャでググってコールバック関数とはなにかを理解することを勧める。
猫のページの7〜10ざっくりみたけどウインドメッセージとウィンドウプロシージャの詳しい説明してないので別のとこ探して読んだほうがいいぞ。
0052デフォルトの名無しさん
垢版 |
2017/12/01(金) 08:06:09.81ID:lcmprfyj
俺からも追加
SetFilePointer は ReadFile の前にしないと
2度目以降の WM_PAINT で1ライン目がおかしくなる
最近のWindowsだと「2度目以降の〜」自体そんなに来ないかもしれんが
0053 ◆QZaw55cn4c
垢版 |
2017/12/01(金) 08:19:52.73ID:ytACGBKw
>>51
ありがとうございます。
・hFile はこの関数(WinMain) だけで使う変数で、ここで一気にビットマップを読み込むのに使っています。確かに CloseHandle(hFilt) とした方がいいですね。

・int WIDTH = 0 はひどい、static int WIDTH にするべきでした。

・WIDTH = 4 * ((bmpInfo.bmiHeader.biWidth * bmpInfo.bmiHeader.biBitCount) + 31 / 32); これもひどいなあ…ご指摘されてはじめてまずさがわかりました。
ようはビットマップの一行の幅を 32ビット単位にする操作ですね。31をたして、全体を 32 で割って DWORD 数を出し、それに 4 をかけてバイト数を出す、
ご指摘のとおり
WIDTH = 4 * ((bmpInfo.bmiHeader.biWidth * bmpInfo.bmiHeader.biBitCount + 31)/ 32); にいたしました。

すると画面に縦じまが現れました。これは重大な進歩です、これを元にもう一度元ソースを見直します。
ありがとうございました。
0054 ◆QZaw55cn4c
垢版 |
2017/12/01(金) 08:51:13.54ID:ytACGBKw
>>51
>>53
すみません、hFile はグローバル変数でした。ローカル変数定義を削除しました
0055 ◆QZaw55cn4c
垢版 |
2017/12/01(金) 08:57:42.07ID:ytACGBKw
>>51>>53
ご指摘を受けたあたりを修正して、うまく表示できるようになりました。
コメントをいただき、ありがとうございました!
https://ideone.com/W8wuOF

>>52
SetFilePointer() は次回 WM_PAINT 時に備えたものだと考えています。
0056デフォルトの名無しさん
垢版 |
2017/12/01(金) 22:26:20.38ID:rQkaX9hI
>>46
解決したみたいだけど、デバッグの知識は身につけといた方がいいよ。
無駄な試行錯誤をする事が減って使える時間が増える。
0057デフォルトの名無しさん
垢版 |
2017/12/02(土) 19:13:30.95ID:K6qIkKEG
線だけで長方形を描画したいのですが、もっとも簡単に実現できるAPIはどれですか?
cで使えるものでお願いします
0058デフォルトの名無しさん
垢版 |
2017/12/02(土) 19:16:20.77ID:XRYOyseR
copyrect
0061デフォルトの名無しさん
垢版 |
2017/12/02(土) 20:31:13.22ID:VR8xyICx
win32APIのみなら>>59 >>60のを使うといいよ
速度重視で2d描画をしたいなら、Direct2dのAPI使ったらどうだ?線を描くならDrawLine、長方形ならDrawRectangleで描けるぞ。
0062デフォルトの名無しさん
垢版 |
2017/12/03(日) 11:52:35.88ID:cCU4BKBm
jpg や png などの2D静止画を高速描画するのに最も適したライブラリってどれだろう?
gdiplus? DirectX?
0063デフォルトの名無しさん
垢版 |
2017/12/03(日) 12:14:03.55ID:I8IEjg5G
ハードウェア描画前提ならdirectXじゃないかなー
wikiでgdiを調べると詳しく書いてあるかもよ。
好きなライブラリー使えばいいよ。
0064デフォルトの名無しさん
垢版 |
2017/12/03(日) 12:26:39.95ID:FVppKXn3
最終的にはメモリDCに書き込んだのをBitBlt()するのが組みやすい
フォーマット変換だけならwicやOpenCV
0065デフォルトの名無しさん
垢版 |
2017/12/03(日) 12:47:14.81ID:cCU4BKBm
メモリDCで作業してるのに、スレッド排他ロックでアプリ側のマルチスレッド実装を台無しにしてくれるgdiplus
0066デフォルトの名無しさん
垢版 |
2017/12/03(日) 13:01:46.59ID:FVppKXn3
jpgだとJpegTurboってのがあって、それなりに速かった
jpgで画像を連続で送ってくるカメラがあって、それで試しに使ったことがある
0067デフォルトの名無しさん
垢版 |
2017/12/03(日) 16:05:28.97ID:FvsK2hd0
>>62
表示だけならライブラリ探さなくてもOleLoadPicture()で読み込んでDCにIPicture::Renderするだけでいいんじゃないか?
0068デフォルトの名無しさん
垢版 |
2017/12/03(日) 19:28:19.70ID:WsUY0GNs
>60 1pixel小さいです
0070デフォルトの名無しさん
垢版 |
2017/12/04(月) 15:02:45.68ID:6cKdvMQZ
メモリDCへの拡大縮小画像のレンダリングを高速に実現する最適な方法ってなんなのだろう?
ちなみにGDI+ gdiplusは論外。GraphicクラスでメモリDC渡してレンダリングすると、GDI+がスレッドロックするので並列化による省時間はできない。
0071デフォルトの名無しさん
垢版 |
2017/12/04(月) 15:23:27.29ID:1/3RfdNR
最適ならDirectX一択だろ
最速になると描画よりも拡大縮小アルゴリズムの話になりそう
0072デフォルトの名無しさん
垢版 |
2017/12/04(月) 16:26:01.49ID:6cKdvMQZ
>>67 の方が教えてくれた IPicture::Render はWindows2000時代からあるレンダリングAPIという認識。
わざわざVista時代にDirect2dをリリースした意味は何なのか、という疑問がありまして、その辺どうなの、と。
0073デフォルトの名無しさん
垢版 |
2017/12/04(月) 19:17:48.59ID:7Hssi5iQ
32bitARGB画像ならDirect2Dだな、小数点座標指定できるし。
Direct2DのAPIではピクセルフォーマット変換とかHeight方向反転とかできなかったと思うので
異なる場合には渡す前に変換しておく必要がある
0074デフォルトの名無しさん
垢版 |
2017/12/04(月) 20:29:21.18ID:6cKdvMQZ
せめて有名Webブラウザ並みの描画速度で複数画像を一覧表示できてほしいんだけど、その点、gdiplusはダメダメ。
Wikipediaなどの情報によると有名WebブラウザはDirect2Dによる描画らしいので、Direct2Dがいいのかな。
0075デフォルトの名無しさん
垢版 |
2017/12/04(月) 21:10:25.84ID:1/3RfdNR
今作ってるソフトの遅い部分が「描画」でそこを改善したいんじゃなくて、たぶんこれから作るソフトの計画だよな
ある程度形になってからどこに時間食ってるか調べてそこを潰したほうが開発時間も動作速度もいいと思うな
0076デフォルトの名無しさん
垢版 |
2017/12/04(月) 22:09:44.67ID:5YKgC1OQ
>Direct2DのAPIではピクセルフォーマット変換とかHeight方向反転とかできなかったと思うので
当然SetTransformはあるしなんなら自分で書いたシェーダを挿入できるエフェクトグラフもあるでよ?
0080 ◆QZaw55cn4c
垢版 |
2017/12/05(火) 01:55:50.52ID:x6DQdw1l
低レベルな話ですみません。

ダイアログアプリケーション(calc.exe と同様)
を win32api/C で書いています。

希望:ベースのダイアログの色を起動後に変えたい。

したこと: WM_CTLCOLORSTATICを捕らえて、
SetBkColor((HDC)wp, BackGroundColorG); および
return HBRUSH / HBRUSH を DefWindowProc() に渡さずに返す

以上で、スタティックコントロールの背景色およびエディットコントロールのディスエイブル時の背景色は変わりました。

しかし、ベースダイアログの色は変わりません。
頭で、RegisterClass() にわたす前に設定する WNDCLASS の hbrBackground の値が、ダイアログのCreateWindow() の後も反映されています。

後から
SetClassLongPtr((HWND)lp, GCL_HBRBACKGROUND, (LONG)hbrBackGroundS)
しても反映されないことを確認しています。

起動後にダイアログの色を変えるにはどうすればいいでしょうか?
明日には再現コードをお見せできると思います。
アドバイスいただきたくよろしくお願いいたします。

#WINDCLASS.hbrBackground = NULL にすると、透けてデスクトップが移りこみ、これはこれで面白いです…もう寝ます
0081デフォルトの名無しさん
垢版 |
2017/12/05(火) 02:14:11.47ID:7/1p3S3k
>>80
WM_CTLCOLORDLG でブラシを返す
0082 ◆QZaw55cn4c
垢版 |
2017/12/05(火) 03:59:00.03ID:x6DQdw1l
>>81
コメントいただき感謝しています。
試してみたのですが、よくありません。やはりダイアログは WNDCLASS.hbrBackground の指定が優先されています。

現象を再現させたコード次のとおりです。こちらでは cygwin/mingw 32 ビットでコンパイルしています。
test.c https://ideone.com/pch378
test.h https://ideone.com/1iKq2z
test.rc https://ideone.com/kZH3Uf
makefile https://ideone.com/9MDXT0
0085 ◆QZaw55cn4c
垢版 |
2017/12/05(火) 07:11:29.40ID:x6DQdw1l
>>81, >>83-84
コメントありがとうございます。
状況が変わりました。すなわち、

1. DefWindowProc() ではなく、DefDialogProc() にする
2. (>>81) WM_CTLCOLORDLG メッセージ処理(ブラシを返す)

によりダイアログのベースの色が変わりました。
現在典拠を探しています。

遅いところ皆様ありがとうございました。勇気がでてきました!
https://ideone.com/ZBuhbz

>>84
StackOverflow のプログラム例は、(通常)ウィンドウがあって、そこから CreateDialog で新しくモードレスダイアログを作るときの作法ですね。
IsDailogMessage() が必要かどうかは、まだよくわかりません。
0086デフォルトの名無しさん
垢版 |
2017/12/05(火) 07:41:30.27ID:S7FU9Yl0
大雑把に言うと WindowProc に来る前 DefDlgProc が
値を返しちゃうので色が変わらないわけです (多分)。

他にも DefDlgProc が反応するメッセージについては WindowProc ではなく DlgProc で処理する必要があります。
どれがそうか一覧等あるのかは知りませんが。
0087デフォルトの名無しさん
垢版 |
2017/12/08(金) 17:59:18.20ID:UBTxsLd5
フルスクリーンでも、色の取得ができるAPIは存在しないのでしょうか?
GetPixelを試みましたが、何故かフルスクリーン対象にすると 常に0を返されます

フルスク色取得が可能なapi、もしくはGetPixelでも出来るのでしたらやり方を教えてください
0088デフォルトの名無しさん
垢版 |
2017/12/08(金) 21:57:36.41ID:TcYdv7Hd
MemDC にコピーしてから好きに弄ぶ
0090デフォルトの名無しさん
垢版 |
2017/12/09(土) 22:01:16.23ID:Lkee30cD
質問です。
あるソフトがしたUSBの出力を、コンピュータの外部ではなくそのコンピュータ内の他のソフトへリダイレクトすることはできますでしょうか?
0091デフォルトの名無しさん
垢版 |
2017/12/09(土) 22:33:28.46ID:rMepMJ5T
>>90
方法1 (「あるソフト」にパッチが可能なら)
CreateFile()/WriteFile()などをフックする。
ただし、これらはKernel32.dllにあるAPIなので通常の方法ではフックできない。
「あるソフト」内のByte列"Kernel32.dll"を(例えば)"Xernel32.dll"に書き換え、
Xernel32.dllを作成・フックする。

方法2
対象デバイス用デバイスドライバと同じAPIを持ち、かつその入出力を「他のソフト」
へ受け渡すAPIを持つデバイスドライバを作成する。

方法3 (本物のUSBデバイスも生かしておくなら)
フィルタードライバーを作成し、そこで「あるソフト」の出力を盗み見る。
0093デフォルトの名無しさん
垢版 |
2017/12/09(土) 23:53:32.26ID:ntUKDUa2
と、書き込んでからプロキシ思い出した。あれ64bitのは作るの面倒すぎだけど32だったらありだな
0094デフォルトの名無しさん
垢版 |
2017/12/10(日) 04:43:00.48ID:Ivp7Fyt3
USBハブで物理的にteeすることって可能なんだろうか
0095デフォルトの名無しさん
垢版 |
2017/12/10(日) 04:49:03.51ID:jPbEe7nV
Window API Hook で検索すればすぐ出てくるけど API のフックはかなり簡単にできる
DLL インジェクション併用で CreateFile / WriteFile をフックするのがいいかもね
0096デフォルトの名無しさん
垢版 |
2017/12/10(日) 09:52:56.38ID:tk0MZw2P
> ・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
テンプレのこれいるか?ってほど簡単にできるしな

1つのページを見るだけではできなくても
いくつかのページの情報を自分なりにまとめたらできるようになる
0097デフォルトの名無しさん
垢版 |
2017/12/10(日) 10:07:01.58ID:0DY65cdk
皆さまありがとうございました
APIフックを試します
0099 ◆QZaw55cn4c
垢版 |
2017/12/10(日) 19:23:15.93ID:NAV3AZ5L
うーむ、やっとコンパイルできた…
32ビットコードは 32ビットのODBCデータソースしかみないし
64ビットコードは 64ビットのODBCデータソースしかみないのか…

手持ちの excel は 32ビットで、見に行くODBC テーブルは 32 ビット用であったことが混迷に拍車をかけてしまっていた
cigwin の odbcライブラリとしては -lodbc32 でコンパイルしているが、32ビットなのか 64 ビットなのか、いったいどうなっているんだ?!
0100デフォルトの名無しさん
垢版 |
2017/12/10(日) 20:10:47.46ID:NCCsPX6A
shell32.dll とか kernel32.dll とかもそうだし、
32→64 ビットではモジュールの名前変わらなかったからね
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況