Win32API質問箱 Build125

1 :デフォルトの名無しさん:2019/02/27(水) 15:09:08.64 ID:6ExXwgQU.net
Win32APIについての質問はこちらへどうぞ。

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

■過去スレ
Win32API質問箱 Build124
http://mevius.5ch.net/test/read.cgi/tech/1510395780/
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 2019
http://mevius.5ch.net/test/read.cgi/tech/1548765663/
Visual Studio 2017 Part6
http://mevius.5ch.net/test/read.cgi/tech/1528645068/
【C++】 DirectX初心者質問スレ Part41 【C】
http://mevius.5ch.net/test/read.cgi/tech/1521786252/

2 :デフォルトの名無しさん:2019/02/27(水) 15:09:47.11 ID:6ExXwgQU

■番外編
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/

3 :デフォルトの名無しさん:2019/02/27(水) 15:10:04.70 ID:6ExXwgQU

■ネイティブなやつとか
【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/

4 :デフォルトの名無しさん:2019/02/27(水) 15:10:22.04 ID:6ExXwgQU

■需要あるかしらん
OpenGL 2.0 専用スレ
http://mevius.2ch.net/test/read.cgi/tech/1126268759/
Google NaCl プログラミング 2mol
http://mevius.2ch.net/test/read.cgi/tech/1298614677/
【boot】nasm【loader】
http://mevius.2ch.net/test/read.cgi/tech/1377053129/

5 :デフォルトの名無しさん:2019/02/27(水) 15:13:16.11 ID:6ExXwgQU

一応テンプレ更新できるものは更新と思ったけど、>>1以外変わってなかった。

>>4からは以下スレ消えてたので削除
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/
MASM32 – 選ばれし本物のプログラマ
http://mevius.2ch.net/test/read.cgi/tech/1348574727/

6 :デフォルトの名無しさん:2019/02/27(水) 15:17:35.82 ID:6ExXwgQU

このテンプレって誰かが作ったのかスレでまとめられたのかどっちだろ。
>>2-4がスレ番変わってないくらい進行遅いか過疎ってるんで、要らない気もする。(更新チェック面倒)

7 :デフォルトの名無しさん:2019/03/01(金) 13:34:02.78 ID:ozM8zBQ9

生きてるのだけでいい

8 :デフォルトの名無しさん:2019/03/02(土) 20:42:50.40 ID:s3HqWRGm

特に関連性ないスレばかりだな
これくらい興味もてよっていうチョイスなの?w

9 :デフォルトの名無しさん:2019/03/04(月) 05:12:26.49 ID:DAN4+o0x

>1
いちもつ

10 :デフォルトの名無しさん:2019/03/04(月) 14:34:43.80 ID:/O719wMt

ExitProcess(4, 0)

11 :デフォルトの名無しさん:2019/03/06(水) 10:25:19.72 ID:mg6kC0Yg

ねた
【セキュリティ】Intel製CPUに見つかった新たな脆弱性「SPOILER」はまたもシリコンレベルでの再設計による修正が必要
https://asahi.5ch.net/test/read.cgi/newsplus/1551833609/

12 :デフォルトの名無しさん:2019/03/06(水) 13:09:46.88 ID:B3vCdTN4

あまりにスレチでネタにならん

13 :デフォルトの名無しさん:2019/03/21(木) 19:16:13.21 ID:nFWHFdE/

マウスエミュレートなどを使わずにドラッグ&ドロップを実現するにはどうしたらよいでしょうか。
具体的には、ユーザーはマウス操作を邪魔されることなく、バックグラウンド・アプリでドラッグ&ドロップしたいです。

14 :さまよえる蟻人間 :2019/03/21(木) 21:47:53.92 ID:/g5fyt6Z

>>13
DROPFILES構造体とHGLOBALとPostMessage(WM_DROPFILES)を使えばできるはず。

19 :13:2019/03/21(木) 22:56:31.56 ID:nFWHFdE/

>>18
たびたび回答していただくのは有難いのですが、失礼ながら徒労に思えます。
フォルダへのファイルドロップの成功事例はご存知でしょうか?

16 :さまよえる蟻人間 :2019/03/21(木) 22:28:46.83 ID:FlExFmKW

>>15
WS_EX_ACCEPTFILES拡張スタイルをチェックしながら、WindowFromPoint、GetParent、EnumChildWindowsなどでたどっていく。
ウィンドウの構造は、Spy++で分かるはず。

17 :13:2019/03/21(木) 22:35:43.09 ID:nFWHFdE/

>>16
何をたどるのですか?

もう少し汎用的な例に変えます。
エクスプローラーで開かれたフォルダにファイルをドロップするにはどうすればいいでしょうか。
Windows10で試しているのですが、どなたかドロップ出来た方いらっしゃいますか?

18 :さまよえる蟻人間 :2019/03/21(木) 22:46:53.71 ID:FlExFmKW

たどるは、ウィンドウハンドル。ハンドルなくば話にならぬ。
FindWindow, FindWindowEx、EnumWindowsでまずはターゲットのウィンドウハンドルを取得する。

15 :13:2019/03/21(木) 22:22:51.42 ID:nFWHFdE/

>>14
確かにその方法で、メモ帳やサクラエディタにはでドロップできるのですが、Visual Studio 2017やMozilla Firefoxにはドロップできないようです。
トップウィンドウのウィンドウハンドルを指定しているのですが、WM_DROPFILEを送るウィンドウハンドルの問題なのか、それとも違う要因なのか。

20 :デフォルトの名無しさん:2019/03/21(木) 23:24:27.79 ID:bEjwjHsM

エクスプローラがやってんだからできるだろw

21 :13:2019/03/21(木) 23:28:19.79 ID:nFWHFdE/

ちなみに徒労について書いておくと、
Visual Studio 2017とexplorer.exe をSpy++で調べたところ、WS_EX_ACCEPTFILESを持つウィンドウはひとつもなし。

22 :さまよえる蟻人間 :2019/03/21(木) 23:35:16.35 ID:FlExFmKW

ならば、OLE D&Dしかない。

23 :13:2019/03/21(木) 23:38:34.07 ID:nFWHFdE/

>>22
マウスエミュレートなしでどうかひとつ m(_ _)m

24 :さまよえる蟻人間 :2019/03/22(金) 00:46:13.42 ID:56fjhQno

25 :デフォルトの名無しさん:2019/03/22(金) 01:29:49.59 ID:lgvalJzA

そういうのはソフトによってできるできないどうしてもあるよ
ひとことでD&Dいっても実装方法色々あるからね
汎用的なの考えずにターゲット絞れ

26 :デフォルトの名無しさん:2019/03/27(水) 06:36:48.46 ID:sZeYmZ5f

CreateProcessをUTF-8で実行したいんですが何か良い方法ありませんでしょうか

27 :デフォルトの名無しさん:2019/03/27(水) 07:52:17.79 ID:DfX99uD1

>>26
呼び出し側がコードページを変えるなどしようとも、実行される側のプログラムは引数を規定コードページで受け取るので無意味。

28 :デフォルトの名無しさん:2019/03/27(水) 09:56:07.78 ID:wWh9RtuG

utf8ってかunicode使いたいってだけでしょ
CreateProcessWで

29 :デフォルトの名無しさん:2019/03/27(水) 10:44:28.85 ID:NEUzlmC+

>>26
文字コード変換を挟んだラッパー関数を作るんではダメかな

30 :デフォルトの名無しさん:2019/03/27(水) 14:13:27.93 ID:eZgXpjKy

>>28
あほやん

31 :デフォルトの名無しさん:2019/03/27(水) 17:21:20.72 ID:sZeYmZ5f

>>27
cp932が返ってきました

>>28
調べてみます(_ _)

>>29
パイプして出力を読んでそれをcp932からutf8に変換するということですよね

32 :デフォルトの名無しさん:2019/03/27(水) 17:40:22.72 ID:AY4w9geG

932から変換したらその分おちるから意味ないでしょ
SetConsoleOutputCPの話か?

33 :デフォルトの名無しさん:2019/03/27(水) 19:36:43.58 ID:TFRkKwyv

>>26
何をUTF-8にしたいの?
CreateProcessに関連する文字列は
(1) 実行ファイルのPath
(2) コマンドラインパラメータ
(3) 環境変数
(4) カレントディレクトリ

(1)(3)(4)はCreateProcessA/CreatePeocessWでMBCSかUNICODEで渡す
必要があり、UTF-8では渡せない。(UTF8をUNICODEに変換して渡す)

(2)は受け取る側(実行されるアプリ側)しだいだねえ。

36 :さまよえる蟻人間 :2019/03/28(木) 01:17:29.64 ID:JS1PpMcc

CP_UTF8とMultiByteToWideChar関数を使う。

37 :デフォルトの名無しさん:2019/03/28(木) 01:21:36.74 ID:I1dquAY4

>>33
CreateProcessにPythonとスクリプトを渡して実行、その出力をUTF-8で得たいんですが
例えば

python hoge.py

というコマンドラインを実行させるということなんですが
hoge.pyの出力はUTF-8になっているんですがCreateProcessを通すと出力がcp932になってしまうんです

41 :デフォルトの名無しさん:2019/03/28(木) 04:11:23.81 ID:Wtvk2F5L

漏れは、Ruby から、Powershell のGet-Clipboard, Set-Clipboard や、
clip コマンドを呼び出して、処理する

Ruby内では、UTF-8 で処理するから、
CP932から、UTF-8へ変換して処理して、
UTF-8から、CP932へ戻す

入力 : Windows(CP932) → 処理 : Ruby(UTF-8) → 出力 : Windows(CP932)

# クリップボード内の複数行文字列の、各行の先頭・末尾から、
# 連続する空白類を除去して、クリップボードに入れる

str = `powershell Get-Clipboard`
str.encode! Encoding::UTF_8, Encoding::CP932 # UTF_8 へ変換

ary = str.each_line.map( &:strip ) # 連続する空白類を除去する

IO.popen( ‘clip’, ‘w:cp932’ ) do | clip | # CP932 へ戻す
clip.print( ary.join “¥n” )
end

43 :デフォルトの名無しさん:2019/03/28(木) 20:17:49.46 ID:Qzjf5uAe

>>41
処理中にクリップボードが使われたらどうなるの

48 :デフォルトの名無しさん:2019/03/29(金) 01:50:33.70 ID:P29wxCsC

.netの比率増えてきたけど、まだまだ.すくないなー

51 :デフォルトの名無しさん:2019/03/29(金) 06:02:19.13 ID:Eeymx9+7

Win32APIのラッパーはMFCと言うイメージ。
.netは.netと言うVMのAPIかな。
元がDelphiのVCLだからラッパーと言うのもおこがましい、高度に抽象化されたライブラリだし。

53 :デフォルトの名無しさん:2019/03/29(金) 17:48:35.77 ID:4iWq2eRj

極論かもしれないけど.netは単体のアプリケーションでMSの提供する
APIでWindowsの画面表示を書き換えるための環境なんだよね

なんでロジックと画面の書き換え以外の低レベルアクセスとかしようと
するとどうしてもWin32APIが必須になるのでいまだに「DllImport」みたいな
APIを残しておかないといかないわけで

低レベルはC++で書いてライブラリ化すればってのが本道なんだろうけど
結局「DllImport」するだけなんで、だったら直接Win32API呼んだほうが
早いし簡単だしってことでWin32APIから離れられないってことで

JavaもそうだけどマルチプラットフォームのためのVMで動作する言語は
低レベルアクセスを実装しちゃうとプラットフォームの違いを吸収できない
のでライブラリ参照みたいな仕組みで実装するしかないんだけどね

61 :デフォルトの名無しさん:2019/04/01(月) 03:53:34.68 ID:OA8CryLM

今回残念なのはシステム改修の需要は増えたけど
その場しのぎのパッチみたいな作業だけが増えたこと
どこも次の次の元号やその先の元号変更時に
「今回みたいに一ヶ月も期間置かなくても即日変更可能なシステムにしておこう」
って方向で改修する流れにならなかった
これはせっかくの天皇陛下の御英断と改元リハーサルにも関わらず
将来に禍根を遺す結果となってしまった

71 :デフォルトの名無しさん:2019/04/24(水) 13:27:16.17 ID:drQF/d6o

天皇制いらね。
即位したから10連休?恩赦?
バカじゃねーの
どこの後進国だよw

81 :デフォルトの名無しさん:2019/04/25(木) 20:27:13.71 ID:OZvMAFB5

メーラーのThunderbirdだと、OSで元号表示にしたら「西暦2019年4月25日(木) 12:14」のように表示され、
元号表示ってそういう意味じゃないだろ、と静かなツッコミを楽しむことができるぞ。

146 :デフォルトの名無しさん:2019/06/09(日) 11:16:09.70 ID:wmlwj4f3

>>139
> マクロ関数だと全て無条件で戻り値voidになってるっぽいな
何かで自動生成してるんじゃね
IDEなら>>145の様に内容確認するのも容易だからたいした問題じゃないわな
まあMSしっかりしろよとは思うが

154 :デフォルトの名無しさん:2019/06/09(日) 19:11:47.62 ID:jumrM7iv

>>153
ListView_GetItemCountの返却値がvoidというmsdnの公式発表を批判しているのだが
何がどう的外れとおまえさんはぬかすんだ?

typoなら訂正すべきところ、それすら行われていないんだが
おまえさんとこの自転車操業を自転車操業だから大目に見ろという論法を一般化しようってか?

268 :デフォルトの名無しさん:2019/09/07(土) 09:58:32.00 ID:dh6f1+zl

これはひどい

369 :デフォルトの名無しさん:2019/09/19(木) 09:51:38.16 ID:VunEY3BQ

ああ
WM_QUIT
かな

446 :デフォルトの名無しさん:2019/10/09(水) 22:12:20.45 ID:wmrCsqX1

lpDistanceToMoveHighがNULLの時のFILE_ENDは単純にファイルサイズも下位32bitだけ見て処理してそう
でかいファイル扱うなら素直にSetFilePointerEx使った方がよさげ

504 :デフォルトの名無しさん:2019/10/23(水) 15:31:41.90 ID:J1BMEu9t

いや判るだろ

1809 update 入れた後に可笑しくなったんだろω

600 :デフォルトの名無しさん:2019/11/09(土) 13:55:21.92 ID:hHKZwsDl

タスクマネージャもよく後ろに移動する時あるけど何なのあれ

633件をまとめました。
最新情報はこちら