19/02/27 15:09:08.64 6ExXwgQU.net
Win32APIについての質問はこちらへどうぞ。
■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。
英語版( URLリンク(msdn.microsoft.com) )の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで
■過去スレ
Win32API質問箱 Build124
スレリンク(tech板)
Win32API質問箱 Build123
スレリンク(tech板)
Win32API質問箱 Build122
スレリンク(tech板)
Win32API質問箱 Build121
スレリンク(tech板)
Win32API質問箱 Build120
スレリンク(tech板)
■関連スレ
Visual Studio 2019
スレリンク(tech板)
Visual Studio 2017 Part6
スレリンク(tech板)
【C++】 DirectX初心者質問スレ Part41 【C】
スレリンク(tech板)
2:デフォルトの名無しさん
19/02/27 15:09:47.11 6ExXwgQU.net
■番外編
WindowsDDK各種についてのスレ
スレリンク(tech板)
D言語 Part34
スレリンク(tech板)
Cygwin + MinGW + GCC 相談室 Part 8
スレリンク(tech板)
Borland Developer Studio 2006 No.13
スレリンク(tech板)
Borland C++ Compiler オ ワ タ
スレリンク(tech板)
3:デフォルトの名無しさん
19/02/27 15:10:04.70 6ExXwgQU.net
■ネイティブなやつとか
【GUI】wxWidgets(旧wxWindows) その5【サイザー】
スレリンク(tech板)
【Win/Mac/Linux/Android/iOS】 Qt 総合スレ 18
スレリンク(tech板)
●●●●TCL/TKなら俺に聞け 4●●●●
スレリンク(tech板)
Gtkプログラミング on Windows!!!
スレリンク(tech板)
4:デフォルトの名無しさん
19/02/27 15:10:22.04 6ExXwgQU.net
■需要あるかしらん
OpenGL 2.0 専用スレ
スレリンク(tech板)
Google NaCl プログラミング 2mol
スレリンク(tech板)
【boot】nasm【loader】
スレリンク(tech板)
5:デフォルトの名無しさん
19/02/27 15:13:16.11 6ExXwgQU.net
一応テンプレ更新できるものは更新と思ったけど、>>1以外変わってなかった。
>>4からは以下スレ消えてたので削除
OpenGL/Vulkanスレ Part22©2ch.net
スレリンク(tech板)
SDL=Simple DirectMedia Layerでゲームだ
スレリンク(tech板)
MASM32 - 選ばれし本物のプログラマ
スレリンク(tech板)
6:デフォルトの名無しさん
19/02/27 15:17:35.82 6ExXwgQU.net
このテンプレって誰かが作ったのかスレでまとめられたのかどっちだろ。
>>2-4がスレ番変わってないくらい進行遅いか過疎ってるんで、要らない気もする。(更新チェック面倒)
7:デフォルトの名無しさん
19/03/01 13:34:02.78 ozM8zBQ9.net
生きてるのだけでいい
8:デフォルトの名無しさん
19/03/02 20:42:50.40 s3HqWRGm.net
特に関連性ないスレばかりだな
これくらい興味もてよっていうチョイスなの?w
9:デフォルトの名無しさん
19/03/04 05:12:26.49 DAN4+o0x.net
>1
いちもつ
10:デフォルトの名無しさん
19/03/04 14:34:43.80 /O719wMt.net
ExitProcess(4, 0)
11:デフォルトの名無しさん
19/03/06 10:25:19.72 mg6kC0Yg.net
ねた
【セキュリティ】Intel製CPUに見つかった新たな脆弱性「SPOILER」はまたもシリコンレベルでの再設計による修正が必要
スレリンク(newsplus板)
12:デフォルトの名無しさん
19/03/06 13:09:46.88 B3vCdTN4.net
あまりにスレチでネタにならん
13:デフォルトの名無しさん
19/03/21 19:16:13.21 nFWHFdE/.net
マウスエミュレートなどを使わずにドラッグ&ドロップを実現するにはどうしたらよいでしょうか。
具体的には、ユーザーはマウス操作を邪魔されることなく、バックグラウンド・アプリでドラッグ&ドロップしたいです。
14:さまよえる蟻人間
19/03/21 21:47:53.92 /g5fyt6Z.net
>>13
DROPFILES構造体とHGLOBALとPostMessage(WM_DROPFILES)を使えばできるはず。
15:13
19/03/21 22:22:51.42 nFWHFdE/.net
>>14
確かにその方法で、メモ帳やサクラエディタにはでドロップできるのですが、Visual Studio 2017やMozilla Firefoxにはドロップできないようです。
トップウィンドウのウィンドウハンドルを指定しているのですが、WM_DROPFILEを送るウィンドウハンドルの問題なのか、それとも違う要因なのか。
16:さまよえる蟻人間
19/03/21 22:28:46.83 FlExFmKW.net
>>15
WS_EX_ACCEPTFILES拡張スタイルをチェックしながら、WindowFromPoint、GetParent、EnumChildWindowsなどでたどっていく。
ウィンドウの構造は、Spy++で分かるはず。
17:13
19/03/21 22:35:43.09 nFWHFdE/.net
>>16
何をたどるのですか?
もう少し汎用的な例に変えます。
エクスプローラーで開かれたフォルダにファイルをドロップするにはどうすればいいでしょうか。
Windows10で試しているのですが、どなたかドロップ出来た方いらっしゃいますか?
18:さまよえる蟻人間
19/03/21 22:46:53.71 FlExFmKW.net
たどるは、ウィンドウハンドル。ハンドルなくば話にならぬ。
FindWindow, FindWindowEx、EnumWindowsでまずはターゲットのウィンドウハンドルを取得する。
19:13
19/03/21 22:56:31.56 nFWHFdE/.net
>>18
たびたび回答していただくのは有難いのですが、失礼ながら徒労に思えます。
フォルダへのファイルドロップの成功事例はご存知でしょうか?
20:デフォルトの名無しさん
19/03/21 23:24:27.79 bEjwjHsM.net
エクスプローラがやってんだからできるだろw
21:13
19/03/21 23:28:19.79 nFWHFdE/.net
ちなみに徒労について書いておくと、
Visual Studio 2017とexplorer.exe をSpy++で調べたところ、WS_EX_ACCEPTFILESを持つウィンドウはひとつもなし。
22:さまよえる蟻人間
19/03/21 23:35:16.35 FlExFmKW.net
ならば、OLE D&Dしかない。
23:13
19/03/21 23:38:34.07 nFWHFdE/.net
>>22
マウスエミュレートなしでどうかひとつ m(_ _)m
24:さまよえる蟻人間
19/03/22 00:46:13.42 56fjhQno.net
ヒント: URLリンク(github.com)
25:デフォルトの名無しさん
19/03/22 01:29:49.59 lgvalJzA.net
そういうのはソフトによってできるできないどうしてもあるよ
ひとことでD&Dいっても実装方法色々あるからね
汎用的なの考えずにターゲット絞れ
26:デフォルトの名無しさん
19/03/27 06:36:48.46 sZeYmZ5f.net
CreateProcessをUTF-8で実行したいんですが何か良い方法ありませんでしょうか
27:デフォルトの名無しさん
19/03/27 07:52:17.79 DfX99uD1.net
>>26
呼び出し側がコードページを変えるなどしようとも、実行される側のプログラムは引数を規定コードページで受け取るので無意味。
28:デフォルトの名無しさん
19/03/27 09:56:07.78 wWh9RtuG.net
utf8ってかunicode使いたいってだけでしょ
CreateProcessWで
29:デフォルトの名無しさん
19/03/27 10:44:28.85 NEUzlmC+.net
>>26
文字コード変換を挟んだラッパー関数を作るんではダメかな
30:デフォルトの名無しさん
19/03/27 14:13:27.93 eZgXpjKy.net
>>28
あほやん
31:デフォルトの名無しさん
19/03/27 17:21:20.72 sZeYmZ5f.net
>>27
cp932が返ってきました
>>28
調べてみます(_ _)
>>29
パイプして出力を読んでそれをcp932からutf8に変換するということですよね
32:デフォルトの名無しさん
19/03/27 17:40:22.72 AY4w9geG.net
932から変換したらその分おちるから意味ないでしょ
SetConsoleOutputCPの話か?
33:デフォルトの名無しさん
19/03/27 19:36:43.58 TFRkKwyv.net
>>26
何をUTF-8にしたいの?
CreateProcessに関連する文字列は
(1) 実行ファイルのPath
(2) コマンドラインパラメータ
(3) 環境変数
(4) カレントディレクトリ
(1)(3)(4)はCreateProcessA/CreatePeocessWでMBCSかUNICODEで渡す
必要があり、UTF-8では渡せない。(UTF8をUNICODEに変換して渡す)
(2)は受け取る側(実行されるアプリ側)しだいだねえ。
34:さまよえる蟻人間
19/03/28 00:45:59.07 JS1PpMcc.net
shell lightweight library, 略してshlwapiには便利な関数がたくさん詰まってるよ。のぞいてみてね。
35:デフォルトの名無しさん
19/03/28 01:15:19.97 IvEebbBd.net
utf-8はmbcsやろ
36:さまよえる蟻人間
19/03/28 01:17:29.64 JS1PpMcc.net
CP_UTF8とMultiByteToWideChar関数を使う。
37:デフォルトの名無しさん
19/03/28 01:21:36.74 I1dquAY4.net
>>33
CreateProcessにPythonとスクリプトを渡して実行、その出力をUTF-8で得たいんですが
例えば
python hoge.py
というコマンドラインを実行させるということなんですが
hoge.pyの出力はUTF-8になっているんですがCreateProcessを通すと出力がcp932になってしまうんです
38:デフォルトの名無しさん
19/03/28 01:59:36.05 IvEebbBd.net
setdefaultencoding
URLリンク(www.wakayama-u.ac.jp)
39:27
19/03/28 02:00:16.16 AOcR4eqo.net
つ ReadConsoleW()
40:37
19/03/28 03:39:05.22 I1dquAY4.net
すみません、Pythonのスクリプトに
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
を追加したら期待する出力を得られました
Win32API 関連の問題ではなかったみたいです
sys.stdout.encoding が cp932 になっていたのが原因だったみたいです
Windows環境のPythonだと標準で cp932 になるんですね
>>38-39
無事解決できました
ありがとうございました
41:デフォルトの名無しさん
19/03/28 04:11:23.81 Wtvk2F5L.net
漏れは、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
42:デフォルトの名無しさん
19/03/28 08:03:26.64 LrMYA2Ef.net
>>41
どこにでも沸いて出てくるんだな。
消えろ。
43:デフォルトの名無しさん
19/03/28 20:17:49.46 Qzjf5uAe.net
>>41
処理中にクリップボードが使われたらどうなるの
44:デフォルトの名無しさん
19/03/28 20:41:44.79 1BkYlymu.net
未だ、Win32apiって使われてるんだな。
自分はこの前古いwince向けソフトの機能追加のために
久しぶりに使った。
ce向けは仕様が若干簡素化されてたりしても少しはまった。後、開発環境(evc++)の軽さにも驚いた
45:デフォルトの名無しさん
19/03/28 21:05:30.35 +dQtlJGX.net
未だいうて、APIそのものは必須やろ
46:デフォルトの名無しさん
19/03/28 21:25:20.80 1BkYlymu.net
表現が不適切だった。
現在のアプリ開発は.netが主体なので、c言語でwinアプリを書く機会って減ってるのかなと思って。
※.netだと便利なライブラリが準備されてるので、そもそも
win32api を使う機会も減るのかと
47:デフォルトの名無しさん
19/03/28 22:17:42.48 iCjWPJaI.net
>>46
便利なのとなんでも出来るかって云うのはイコールではないからね
手段は多く持っていたほうが良い
48:デフォルトの名無しさん
19/03/29 01:50:33.70 P29wxCsC.net
.netの比率増えてきたけど、まだまだ.すくないなー
49:デフォルトの名無しさん
19/03/29 05:10:05.40 NCHlEZ3/.net
.NETは糞
50:デフォルトの名無しさん
19/03/29 05:16:49.27 zXK6y1Ir.net
.NET じたいがWin32APIなどライブラリのラッパーですよね?
51:デフォルトの名無しさん
19/03/29 06:02:19.13 Eeymx9+7.net
Win32APIのラッパーはMFCと言うイメージ。
.netは.netと言うVMのAPIかな。
元がDelphiのVCLだからラッパーと言うのもおこがましい、高度に抽象化されたライブラリだし。
52:デフォルトの名無しさん
19/03/29 06:38:45.99 ynnAtX2U.net
.NETは型システムを含めたランタイムそのものを内包しているので単なるライブラリではないだろ
53:デフォルトの名無しさん
19/03/29 17:48:35.77 4iWq2eRj.net
極論かもしれないけど.netは単体のアプリケーションでMSの提供する
APIでWindows�
54:フ画面表示を書き換えるための環境なんだよね なんでロジックと画面の書き換え以外の低レベルアクセスとかしようと するとどうしてもWin32APIが必須になるのでいまだに「DllImport」みたいな APIを残しておかないといかないわけで 低レベルはC++で書いてライブラリ化すればってのが本道なんだろうけど 結局「DllImport」するだけなんで、だったら直接Win32API呼んだほうが 早いし簡単だしってことでWin32APIから離れられないってことで JavaもそうだけどマルチプラットフォームのためのVMで動作する言語は 低レベルアクセスを実装しちゃうとプラットフォームの違いを吸収できない のでライブラリ参照みたいな仕組みで実装するしかないんだけどね
55:デフォルトの名無しさん
19/03/29 22:57:10.75 tI8PdZN8.net
44だけど、.netやjavaのようなvmが昔から普及してたらと思うよ。昨年からwinceからlinuxへのアプリ移植行ったけど、できるだけ元コードに手をいれたくなかったので、win32apiやmfcと同じ動きをする関数を作って対応した。
今はlinuxで.netも動くようなので、c#で書いてたらこんな開発しなくても済んだのにと思ったりする。
当時のCPUではvmアプリはまともに動かなかったかもしれないけど。
56:デフォルトの名無しさん
19/03/30 13:47:21.12 SC/1hzmw.net
今だって、例えばJavaならJNIゴリゴリだったりして
本気で使うアプリの移植性がいいとは思えないがなあ
安い値段で拾ってこれるプログラマが触る部分にはちょうど良いのだろうが
57:デフォルトの名無しさん
19/03/30 14:03:53.87 fcBwHp1J.net
移植前のの開発者や仕様決める奴の能力次第だな
後々のこと考えてた奴のを移植するのは言語関係なく移植楽
58:デフォルトの名無しさん
19/03/30 21:16:53.64 JW4B6YKp.net
>>56
その通りだと思う。
ただ、vm上で動くアプリはプラットフォーム依存部をvmが吸収してくれるので、そこの部分の移植は不要。
59:デフォルトの名無しさん
19/03/30 23:53:26.23 tgzhrogL.net
vine息してるの?
60:デフォルトの名無しさん
19/03/30 23:55:03.97 tgzhrogL.net
うっかりさんした
wineって息してるの?
61:デフォルトの名無しさん
19/03/31 08:15:43.79 JrOSOdLx.net
vine (linux) よりは息してる
62:デフォルトの名無しさん
19/04/01 03:53:34.68 OA8CryLM.net
今回残念なのはシステム改修の需要は増えたけど
その場しのぎのパッチみたいな作業だけが増えたこと
どこも次の次の元号やその先の元号変更時に
「今回みたいに一ヶ月も期間置かなくても即日変更可能なシステムにしておこう」
って方向で改修する流れにならなかった
これはせっかくの天皇陛下の御英断と改元リハーサルにも関わらず
将来に禍根を遺す結果となってしまった
63:デフォルトの名無しさん
19/04/01 17:58:58.51 NMCWmssp.net
ウインドウを閉じさせるのは簡単だけど
例えばWin10の「YourPhone.exe」など、プロセスがキモいから終了させたいという場合
スナップショットでプロセスIDまでは掴んでいるのだけど
そこからプロセスを終了させるには、子プロセスを調べたりして面倒そうですか?
64:デフォルトの名無しさん
19/04/01 18:02:31.23 54BjtqNy.net
>天皇陛下の御英断
ちょーキモい野郎だ
あんな寄生虫は即刻処刑すべきだ
特別会計や本来不要な「国債」でどんだけ搾取されてると思ってるんだ
65:デフォルトの名無しさん
19/04/01 18:11:13.52 x9DSuWhe.net
>>63
在日特権で寄生してるどっかの民族にそれ言えよ
66:デフォルトの名無しさん
19/04/01 18:11:52.31 Pri2Y0H6.net
>>62
使わないんだったら最初から起動しなければいい
67:デフォルトの名無しさん
19/04/01 19:14:41.26 54BjtqNy.net
>在日特権で寄生してるどっかの民族にそれ言えよ
天皇が同和朝鮮人に治外法権を与えるから
同和朝鮮人は女の子を強姦して臓器を抜き出して病院から2千万円ゲットだ
警察に捕まっても天皇同和だと言えば解放される
問題は朝鮮人天皇にあると思いませんか?
68:さまよえる蟻人間
19/04/02 02:01:52.93 wSWhi9Oz.net
>>66
ほとんどの人はもう免疫が出来てるぜ。あきらめろ。
69:さまよえる蟻人間
19/04/14 16:21:07.45 S1CO8flC.net
「IEコンポーネントでダウンロードマネージャを実装したい」 URLリンク(t.co) #teratail 👀
Rock54: Caution(BBR-MD5:b73a9cd27f0065c395082e3925dacf01)
70:さまよえる蟻人間
19/04/14 16:59:09.04 S1CO8flC.net
早く来い来い返事来い
71:デフォルトの名無しさん
19/04/24 11:50:56.31 hh9F/mKg.net
OSの日付表示を元号表示にしてない非国民なんているの?
72:デフォルトの名無しさん
19/04/24 13:27:16.17 drQF/d6o.net
天皇制いらね。
即位したから10連休?恩赦?
バカじゃねーの
どこの後進国だよw
73:デフォルトの名無しさん
19/04/24 13:40:25.86 KVKHKBwP.net
8964
上級国民の公務員様が休みたいだけ
74:デフォルトの名無しさん
19/04/24 19:08:02.96 r7nTGT0x.net
ぼくも明日から5/6まで休みますが上級国民にカテゴライズして貰えるのですかね?(純真)
75:デフォルトの名無しさん
19/04/25 09:01:42.98 XBKhyEHe.net
>>71
極東の後進国ですよ。文明の到着が一番遅れるんです。
76:デフォルトの名無しさん
19/04/25 11:12:33.92 OZvMAFB5.net
業務でエクスプローラでファイルリストを見る時は、曜日も表示できるようにすると便利だということに最近になって気づいた。
頭を慣らすために西暦ではなく元号の年月日時表示形式にするのは、プロとしての心得でしょ。
77:デフォルトの名無しさん
19/04/25 11:39:57.10 TNMeUiOs.net
頭を慣らすために曜日非表示は最低限だろ。日付非表示までいけよ。プロとしての心構えが足りないぞ
78:デフォルトの名無しさん
19/04/25 12:34:20.52 OZvMAFB5.net
元号&曜日つきの日付設定の件は、ファイルブラウザ限定の話ではない。メールブラウザとかも。
79:デフォルトの名無しさん
19/04/25 13:11:52.20 FQnGn1Mx.net
スレ違いだから別スレかマ板でやれよ
80:
19/04/25 20:17:52.49 6xUIrXDu.net
>>67
>臓器を抜き出して
人体標本とかはありうるみたいですね…
閲覧注意 URLリンク(blog.goo.ne.jp)
81:さまよえる蟻人間
19/04/25 20:21:36.23 gDOnnbsD.net
曜日表示はWin32の守備範囲だぜ。スレ違いではない。
82:デフォルトの名無しさん
19/04/25 20:27:13.71 OZvMAFB5.net
メーラーのThunderbirdだと、OSで元号表示にしたら「西暦2019年4月25日(木) 12:14」のように表示され、
元号表示ってそういう意味じゃないだろ、と静かなツッコミを楽しむことができるぞ。
83:デフォルトの名無しさん
19/04/25 21:01:32.97 jFTtrwgp.net
>>81
日本では「AD」を「西暦」と呼んでいるから違和感があるだけ。「AD」は「アンノドミニ」という名の元号。
84:デフォルトの名無しさん
19/04/25 21:22:22.93 OZvMAFB5.net
EnumDateFormatsExEx() で取得できる書式を使っても、GetDateFormatEx()では「西暦」を含む文字列は出力されない。
となるとMozilla Thunderbirdは書式に含まれるggを独自に「西暦」という文字列に置換していると予想できる。
85:デフォルトの名無しさん
19/04/25 22:18:02.14 jqthfa4A.net
>>83
紀元前を意識してるんだっけ?
Windowsがそんな昔を想定して作られているとは思えぬ。
86:デフォルトの名無しさん
19/04/25 23:33:13.95 ts61mY/0.net
キリスト再臨を意識してるんだろう
87:デフォルトの名無しさん
19/04/25 23:33:38.87 jZ4+eHeJ.net
>>82
アホか、元号について調べてから出直してこいよ
ちなみに西暦は紀元な
88:デフォルトの名無しさん
19/04/26 00:58:40.96 vOVYhDJF.net
>>84
さすがにグレゴリウス暦だろうなあ
89:デフォルトの名無しさん
19/04/26 06:15:41.35 RL3aG5HG.net
SYSTEMTIME structure
URLリンク(docs.microsoft.com)
The year. The valid values for this member are 1601 through 30827.
90:デフォルトの名無しさん
19/04/26 14:04:32.85 LLMkwGoL.net
>>86
西暦はそういう年号なんだよ。まともに調べてものを言えよ!
91:デフォルトの名無しさん
19/04/26 14:36:49.17 W8c6vXCR.net
>>89
元号と年号の区別もつかないアホは黙っとけw
92:デフォルトの名無しさん
19/04/26 15:04:24.87 7UckC18L.net
ほんとアホばっかw
西暦xxxx年って書き方は普通だよ
平成は元号であり年号でもある
西暦は年号だけど元号ではない
>>81は「年号表示」という訳にしとくのがいい
93:デフォルトの名無しさん
19/04/26 19:32:27.95 RL3aG5HG.net
60 名前:名無しさん@1周年[sage] 投稿日:2019/04/26(金) 17:07:27.22 ID:ZP74hWkE0
access2016は対応済みだな、表示をgee/mm/ddにしてH31/05/01と入力するとR01/05/01と変換してくれる。
ちなみに2007だとR01/05/01と入力するとご丁寧にもH31/05/01と変換してくれるw
そこまでやるならきちんと対応しろと言いたい。
94:デフォルトの名無しさん
19/04/26 19:46:10.67 wYSD0glh.net
大規模開発の時に役立つ
・モジュール間の結合を下げて、作業分担・デバック・例外処理の範囲を明確化できる
・継承の型指定で、質がピンキリなプログラマーたちの実装を縛れる
・オブジェクト指向の思想は直感的でわかりやすいから、頭の弱いPGにも理解させやすい
特にプログラマーの質が低い時は、javaを使わないと大規模開発できない
95:デフォルトの名無しさん
19/04/26 19:46:49.95 pk1a8vBU.net
>>92
まだ改元された訳じゃないからそれで正しい
5/1 以降は動作が変わるはず
96:デフォルトの名無しさん
19/04/26 20:04:46.99 vOVYhDJF.net
>>92
運転免許の表記がH35だが、勝手にRに変えられても困る
97:デフォルトの名無しさん
19/04/26 20:07:40.50 QuMKW8xW.net
S64年からH1年 と書くようになった時、たぶんあまり違和感を感じなかったと思うが
R1年ってなんか妙だな
R1とか書かれたら国一と勘違いしそう
98:デフォルトの名無しさん
19/04/26 20:48:26.22 /RLYU0hs.net
令和18年にR18ネタが大量発生する予感
99:デフォルトの名無しさん
19/04/26 21:06:12.68 rqrZnamv.net
自作アプリで、他アプリがアクティブなときでもマウスイベントを監視するために、
SetWindowsHookEx(WH_MOUSE_LL, HookProc, hmod, 0);
とすると、確かにHookProcが呼ばれますが、
アクティブな他アプリが管理者特権あり(タスクマネージャとか)だと呼ばれません。
その場合でも、自作アプリが管理者特権ありで実行されていれば、
ちゃんとHookProcが呼ばれます。
自作アプリを管理者特権なしの通常の実行時でも、
タスクマネージャとかがアクティブなときのマウスイベントを監視するには
どうすればいいのでしょうか?
フリーソフトのX-Mouse Button Controlとか、StrokesPlusとか、
ではできているようなので、なにかしら方法はあると思うのですが。
(win10, 64bit)
100:デフォルトの名無しさん
19/04/26 23:16:56.39 vOVYhDJF.net
自分より上位の権限で動作してるプログラムの動作を盗めちゃったら
特権の意味がないじゃん
101:デフォルトの名無しさん
19/04/27 01:51:35.35 yvp3RQsi.net
そういう場合setupでSYSTEMで動くサービスをこっそり仕込んどくんだよ
102:デフォルトの名無しさん
19/04/27 17:05:51.62 WooJ2l2s.net
フックを仕込むプロセスを管理者権限で起動すればいいだけでは
103:デフォルトの名無しさん
19/04/27 18:26:23.20 6JD570yx.net
こっそり悪いことをしたいのに、それでは困るんです!!
詳しい人だけレスしてください!!
104:98
19/04/27 19:02:31.25 FkFh7/lX.net
マウスジェスチャツールの類って、
管理者権限アプリがアクティブな時は動作しません、
ってわけにはいかず、
実際、例示したソフトは管理者権限なくても
ちゃんと動作してて、これって一体どうやって実現してるんだろう?
という純粋な興味と、
できれば管理者権限はあまり濫用したくないのと。
105:デフォルトの名無しさん
19/04/27 19:08:42.81 yvp3RQsi.net
たとえばUACの画面でも動いてるってことは管理者特権で動いてるってことだよ
106:デフォルトの名無しさん
19/04/28 04:58:00.18 j843ApD7.net
>>100だよね
107:デフォルトの名無しさん
19/04/28 16:27:22.99 iQtWq0Ma.net
>>103
すでに試しているかもしれないけど、同じようにキーフックとマウスフックする
プログラムで試したら、同じようにタスクマネージャがアクティブウィンドウに
なっていると反応しなくなったので、アプリ自体を管理者権限で起動したら
動作するようになったよ
なので、手作業で管理者権限で実行しなくてもうまく動作するアプリは内部で
権限の取得を行っているんだと思うけど
試していないので分からないけど「"windows10" "管理者権限" 取得 api」
あたりでぐぐるとヒントあるかも
108:デフォルトの名無しさん
19/05/02 19:34:03.04 vshP5qNq.net
エディタボックスの EM_GETFILELINE について教えろ下さい。
109:デフォルトの名無しさん
19/05/02 22:27:42.89 XhxUsVCI.net
指定したファイル(または論理)行のテキストを取得します(テキストの折り返し区切り文字は無視されます)。このマクロを使用するか、EM_GETFILELINEメッセージを明示的に送信することができます。
110:デフォルトの名無しさん
19/05/04 14:13:39.47 mtwbaS1U.net
改元を契機に、OSの日付表示を「和暦」にすることをお勧めしたい。
エクスプローラで日付に曜日をつけられるのは「和暦」だけ。
ファイル一覧の更新日時に曜日が表示されていると便利だよ。
111:デフォルトの名無しさん
19/05/04 21:51:14.91 a8KzjyU7.net
パソコン初心者スレで言ってろよw
曜日が欲しいのにないなら自分で表示すればいいだろ
112:デフォルトの名無しさん
19/05/04 22:24:07.50 mtwbaS1U.net
そもそも日付設定を西暦にすると短い書式で曜日表示できないWindows10の仕様は不便だと思うけど、どうよ?
113:デフォルトの名無しさん
19/05/04 23:01:24.11 mp9Fg+WJ.net
タスクバーは非表示にしてるからそいつに頼ることがない
114:デフォルトの名無しさん
19/05/05 00:10:59.90 QZI32h5J.net
>>111
設定→時刻と言語→地域→日付、時刻、地域の追加設定→日付、時刻、または数値の形式の変更→追加の設定→日付タブ→短い形式をyyyy/MM/dd '('ddd')'にする
115:デフォルトの名無しさん
19/05/05 15:39:35.92 vTdWYBgo.net
㍾㍽㍼と比べて
令和の合字は横幅が広く作られているようだ
バグ出るソフト多数
116:デフォルトの名無しさん
19/05/05 15:56:15.83 HdQlTZxY.net
その程度で誤動作するようなソフトはもとからバグまみれなんじゃないか?
117:さまよえる蟻人間
19/05/05 17:33:49.39 BlnSuy3y.net
これすごいよ。試してみてね。
【ソフト名】vista2xp
【URL】URLリンク(github.com)
【説明】Vista/7/10向けのアプリをXP向けアプリに変換できるかもしれないソフト
118:デフォルトの名無しさん
19/05/05 17:57:18.06 3Dri8dsV.net
>>116
最近気にも留めてかなかったけど
とうとうスパム業者のレベルにまで落ちぶれたんだな片山
119:さまよえる蟻人間
19/05/05 18:58:37.17 BlnSuy3y.net
archive.2ch-ranking.net/tech/1407006123.html#97
ここにXPで動かしたいという要望があったから書き込んだのに。。。
120:さまよえる蟻人間
19/05/05 20:25:34.20 KHPeL5hx.net
凄さわかります?
121:デフォルトの名無しさん
19/05/06 18:57:39.39 o0+2Jvom.net
ヤバさ10000倍
122:デフォルトの名無しさん
19/05/06 19:41:50.63 lfqhRR/k.net
5年前のレスなのに・・・・ヤバイ
123:98
19/05/08 19:24:40.51 6PpqmmLA.net
マニフェストで、uiAccess='true'とし、オレオレ証明書で署名すると、
自アプリに管理者権限がなくても、
管理者権限ありの他アプリがアクティブな時にもマウスのフックが効くようになりました。
(結果的にはスレ違いだったか?)
124:デフォルトの名無しさん
19/05/08 19:58:08.02 h6vLlN0g.net
>>122
なかなかやるじゃないの
125:デフォルトの名無しさん
19/05/08 22:35:29.55 VmC21Scz.net
へー
126:デフォルトの名無しさん
19/05/16 09:59:35.10 q0mRunzJ.net
リストコントロールをLVS_OWNERDATAで仮想リストビューとして使う際、
LVS_EX_FULLROWSELECTを付けていないと、
マウスで先頭からガーっと範囲選択を広げながらスクロールさせてるときに
どんどん重くなっていくんだけど、これは防ぎようがないんですかね。
LVS_EX_FULLROWSELECTを付けるとそんなことになはならないです。
確かに、LVS_EX_FULLROWSELECTを付けてないときは、
選択範囲内のY座標に含まれるすべてのアイテムに対して、
先頭カラムの文字の長さを見なければいけないのはわかるんだけど。
127:デフォルトの名無しさん
19/05/16 11:56:46.64 Ox4fjiQE.net
やり方かえろ
そんなインターフェースが万一速くなってもだれも喜ばない
128:デフォルトの名無しさん
19/05/16 14:14:30.40 ehYc/git.net
元号の構造体が「明治、大正、昭和、平成」の4択しか無かったとかいうアホな仕様もアホかも知れないが(Windows31の頃か?)
改元が決まってから今年に入るまで完全放置プレイだったってのも何だかなあ
↓
その構造体の修正も、その単体パッチに含まれてるのよ
129:デフォルトの名無しさん
19/05/16 15:50:11.52 U2hw1vcW.net
>>125
完全に横で関係ない話だけど、仮想リストビューって名称が取っつきにくくて分かりにくいと思ってた。
LVS_OWNERDATAって名前付けてくれてマジありがとうだった思い出。
130:デフォルトの名無しさん
19/05/17 09:22:15.27 WU6BNfa1.net
>>126
ユーザーから指摘された挙動です。
マウスで範囲選択できるリストビューというのは普通だし、
項目が多いから仮想リストにするのも別に間違ってないはずだし、
その二つを組み合わせたら駄目という暗黙ルールなんですかね。
131:デフォルトの名無しさん
19/05/17 09:46:25.79 LE8qq7Xv.net
>>129
2個目~5個目を選択するとして
2個目を選択した状態で5個目をShift+クリックじゃダメなん?
132:デフォルトの名無しさん
19/05/17 11:45:00.31 CPhGekQ/.net
Edge、FirefoxなどWebブラウザのJavascriptが新元号の令和に対応してない。
なぜかIE11は令和に対応済み。
133:デフォルトの名無しさん
19/05/23 10:54:32.01 O47OnyW4.net
>>130
もちろんその操作は理解していますが、回避方法の質問ではなく、
ユーザーが範囲選択しただけで処理が極端に重くなるというのが疑問でした。
処理が遅くならないようにするためのLVS_OWNERDATAだと思ってたので。
134:デフォルトの名無しさん
19/05/23 12:16:50.69 U0EOYL7g.net
LVN_GETDISPINFOの処理にミスはないの?
LVS_OWNERDATAとLVS_EX_FULLROWSELECTどっちも使わないときの
処理速度も遅いんなら仕様だと思うけどね
135:デフォルトの名無しさん
19/05/28 12:39:31.20 V7/pYf2g.net
>>133
以下のような、連番を表示するだけの簡単なテストでも発生します。
MFCのコードだけど、結局はAPIなので原理は同じはず。
IDC_LIST1もIDC_LIST2も、ダイアログエディタ上で置いたリストコントロールで、
リスト関連のスタイルはLVS_OWNERDATAを付けただけ。
IDC_LIST1のほうはマウスで選択範囲を広げていくとどんどん遅くなります。
LVS_EX_FULLROWSELECTを付けたIDC_LIST2のほうは全く遅くなりません。
m_list
136:1.SetExtendedStyle(m_list1.GetExtendedStyle() | LVS_EX_DOUBLEBUFFER); m_list1.InsertColumn(0, _T("カラム"), LVCFMT_LEFT, 100); m_list1.SetItemCountEx(10000); m_list2.SetExtendedStyle(m_list2.GetExtendedStyle() | LVS_EX_DOUBLEBUFFER | LVS_EX_FULLROWSELECT); m_list2.InsertColumn(0, _T("カラム"), LVCFMT_LEFT, 100); m_list2.SetItemCountEx(10000); LVN_GETDISPINFOハンドラ { NMLVDISPINFO *pDispInfo = reinterpret_cast<NMLVDISPINFO*>(pNMHDR); LVITEM* pItem = &pDispInfo->item; if (pItem->mask & LVIF_TEXT) { CString strItem; strItem.Format(_T("%d"), pItem->iItem); _tcsncpy_s(pItem->pszText, pItem->cchTextMax, strItem, _TRUNCATE); } *pResult = 0; }
137:デフォルトの名無しさん
19/05/28 12:51:33.37 EOiH5L82.net
マンコが臭い
138:デフォルトの名無しさん
19/06/04 08:10:51.94 HNHYFj8Q.net
デスクトップで右クリメニューの「ディスプレイ設定」→
ディスプレイ詳細設定→
ディスプレイ1のアダプターのプロパティを表示します→
専用ビデオメモリ: 128MB
↑この値を取得したいんですけど方法分る人居ますか?
Win32APIで無理なら他の方法でもいいので。
139:蟻人間
19/06/04 09:43:34.64 RcmlQznO.net
URLリンク(code.msdn.microsoft.com)
140:デフォルトの名無しさん
19/06/04 10:38:23.73 HNHYFj8Q.net
>>137
ありがとうございます!助かりました!
141:デフォルトの名無しさん
19/06/07 09:56:48.90 DnFV7L+4.net
URLリンク(docs.microsoft.com)
戻り値voidでどうやってアイテムの数取得するんだw
マクロ関数だと全て無条件で戻り値voidになってるっぽいな
誰も指摘しないんだろうかね
142:デフォルトの名無しさん
19/06/07 11:32:17.95 PPbCM9Wo.net
誰も消防車を呼んでいない精神に基づいてフィードバックしといたよ
143:デフォルトの名無しさん
19/06/07 11:41:35.06 nJu+ZeI9.net
GetLastResult()
144:デフォルトの名無しさん
19/06/08 19:35:27.05 RlSH8i12.net
コモンコントロールは作りもAPIも割といい加減だよ
不具合の原因がコレだったみたいなの多すぎ
145:デフォルトの名無しさん
19/06/09 08:12:49.27 jumrM7iv.net
>>139
LVM_GETITEMCOUNT を直で使うしかなさそうだな
ラッパー関数がある場合はSendMessageは使うなというくせに無茶ぬかす連中だ
146:デフォルトの名無しさん
19/06/09 08:49:26.37 8KChITol.net
>>143
何を言ってるんだ
147:デフォルトの名無しさん
19/06/09 09:13:16.09 SyILEOwA.net
ドキュメントが間違っているだけ。
マクロはintを返すように正しく定義されている。
=== CommCtrl.h ===
#define LVM_GETITEMCOUNT (LVM_FIRST + 4)
#define ListView_GetItemCount(hwnd) (int)SNDMSG((hwnd), LVM_GETITEMCOUNT, 0, 0L)
148:デフォルトの名無しさん
19/06/09 11:16:09.70 wmlwj4f3.net
>>139
> マクロ関数だと全て無条件で戻り値voidになってるっぽいな
何かで自動生成してるんじゃね
IDEなら>>145の様に内容確認するのも容易だからたいした問題じゃないわな
まあMSしっかりしろよとは思うが
149:デフォルトの名無しさん
19/06/09 11:17:42.54 Ko0/a2ew.net
>ラッパー関数がある場合はSendMessageは使うなというくせに
言ってることとやってる事が違うっていう意味かと
>>144
アスペか
150:デフォルトの名無しさん
19/06/09 12:52:47.40 VLDoaadq.net
>>147
???
だからドキュメントのシグネチャが間違ってるだけで「マクロの方を使えと」いう方針とやってることが違うというわけじゃねえだろ
「LVM_GETITEMCOUNTを使うしかない」とか言ってる時点で実際の定義もそうなってると勘違いしてるからなw
ちなみにmsdnのドキュメントは合ってる(URLリンク(msdn.microsoft.com))
MSも雑だしアプリ開発者の方も雑だなってだけの話
151:デフォルトの名無しさん
19/06/09 15:47:59.75 2sqBIYy9.net
雑同士の雑な殴り合い
152:デフォルトの名無しさん
19/06/09 16:01:22.43 P23LzvOV.net
SendMessage()でもマクロでもメンバ関数でもどれでもいいけど、「GETITEMCOUNT」で大小文字区別なしでキーワード検索できるようにしておくことが重要でしょ。
各開発環境に付属するメソッド参照だけだと追跡しきれないので結局、原始的なキーワード検索になる。
153:デフォルトの名無しさん
19/06/09 16:38:58.71 8KChITol.net
>>147
> 直で使うしかなさそう
> ラッパー関数
何を言ってるんだ
154:デフォルトの名無しさん
19/06/09 18:30:20.13 jumrM7iv.net
教祖様に批判的な意見には無差別な敵意にかられる信者がここにはいるようだね
155:デフォルトの名無しさん
19/06/09 18:55:06.29 8KChITol.net
的外れな事が批判的な意見か
156:デフォルトの名無しさん
19/06/09 19:11:47.62 jumrM7iv.net
>>153
ListView_GetItemCountの返却値がvoidというmsdnの公式発表を批判しているのだが
何がどう的外れとおまえさんはぬかすんだ?
typoなら訂正すべきところ、それすら行われていないんだが
おまえさんとこの自転車操業を自転車操業だから大目に見ろという論法を一般化しようってか?
157:デフォルトの名無しさん
19/06/09 19:20:30.28 wmlwj4f3.net
横からだけど…
> 何がどう的外れとおまえさんはぬかすんだ?
>>143 > LVM_GETITEMCOUNT を直で使うしかなさそうだな
158:デフォルトの名無しさん
19/06/09 19:39:45.23 jumrM7iv.net
>>155
それがどう的外れなんだ? msしっかりしろと、あんたが言ったんだが
159:デフォルトの名無しさん
19/06/09 20:00:24.85 881O2WpS.net
皮肉であることが俺含めて伝わっていなかったらしい
160:デフォルトの名無しさん
19/06/09 20:09:15.52 8KChITol.net
>>154
だから引用してるやん
> LVM_GETITEMCOUNT を直で使うしかなさそうだな
> ラッパー関数がある場合はSendMessageは使うなというくせに
ListView_GetItemCountを使ってもSendMessageにLVM_GETITEMCOUNTを指定しても
全く同じって事が理解できていないから>>143みたいな発言になるんだろ
161:デフォルトの名無しさん
19/06/09 20:24:49.88 2sqBIYy9.net
暇そうだな
162:デフォルトの名無しさん
19/06/09 20:55:51.32 wmlwj4f3.net
>>156
ドキュメントの話と実際の実装の話の区別もついてないから指摘されてる
>>148がはっきり書いてるだろ
皮肉だと言い訳するならそれでもいいけどw
163:デフォルトの名無しさん
19/06/09 22:37:10.83 5tHDq89F.net
LVM系ってSendMessageで構造体のポインタ渡すマンだから
外部プロセスから弄ろうとすると面倒すぎる
164:デフォルトの名無しさん
19/06/10 12:33:46.13 g6tidy/F.net
>>154
MSのいつもの言い訳「仕様です」
つまりvoidのtypoは仕様だ
165:デフォルトの名無しさん
19/06/10 12:42:02.76 5kEo9ezr.net
>>158
>>143 を擁護するつもりは無いが
>ListView_GetItemCountを使ってもSendMessageにLVM_GETITEMCOUNT
同じ機能だということも承知の上で
「LVM_GETITEMCOUNT を直で使うしかなさそうだな」→オレオレ関数を造りたいのにオレには造らせない
「ラッパー関数がある場合はSendMessageは使うなというくせに」→MS自身はSNDMSGを使ってる
論点が違うんだよ
MS自身が用意した(SendMessageを使った)ラッパー関数を使えという主張に納得するかしないかの問題
>>143 は
MS無視して(SendMessageを使った)ラッパー関数を自分で造ったら使ってもいいだろってことで
「ラッパー関数がある場合はSendMessageは使うな」に意味が無いと言いたいんだろ
漏れはエントロピー増やすのは反対
166:デフォルトの名無しさん
19/06/10 13:08:37.02 gj8XPCJq.net
>>163
>>143じゃないならそのエスパーもややこしくしてるだけやん?
論点�
167:烽サっちがズレてるような というか「MS自身が用意した(SendMessageを使った)ラッパー関数」とか言ってるし 他人のふりした>>143か、>>147もそうだったのか、とすら思える どっちが>>143の意図だったにせよ的外れなのには変わりないけどな
168:デフォルトの名無しさん
19/06/10 13:17:29.12 5kEo9ezr.net
どっちでもいいな
voidじゃないのにvoidと書かれてるのが問題なんだから
169:デフォルトの名無しさん
19/06/10 13:19:51.67 Fv0cH94V.net
>>164 が >>143 である可能性も否定できない
170:デフォルトの名無しさん
19/06/10 13:33:14.11 gj8XPCJq.net
自分で自分を否定するのか
そして>>166が>>143である可能性も
でいいのかな
171:デフォルトの名無しさん
19/06/10 15:19:10.62 U3FSgHuu.net
ここまで漏れの自演
172:デフォルトの名無しさん
19/06/10 18:54:19.05 h2AhNEsP.net
すごいレスが伸びてると思ったら・・・・
人と人をいがみ合わせるMSが巨悪だということで手打ちにしたらいかがだろうか
173:デフォルトの名無しさん
19/06/10 19:18:33.98 Fj7bi2y1.net
ドキュメントが間違ってたぐらいで鬼の首取ったようにギャアギャア騒ぐことが許されるのは初心者のうちだけでしょ。
174:デフォルトの名無しさん
19/06/10 19:34:39.88 OlE51f/u.net
単なる指摘に>>143が過剰反応してるだけ
175:デフォルトの名無しさん
19/06/10 22:22:35.68 aj7K9vQb.net
>>158
何だおまえさん、MSKKの社員がここでどうたらぬかしてるとでもぬかすのか?
だったら、それを公式見解と断る必要があるんだが
176:デフォルトの名無しさん
19/06/10 22:23:29.07 aj7K9vQb.net
>>162
ほんこれ
177:デフォルトの名無しさん
19/06/10 22:29:27.87 TC6Uh5Cw.net
またエントロピーが増えてきたw
178:デフォルトの名無しさん
19/06/11 09:28:10.66 oRHFwQ78.net
>>172
誰もそんな事言ってないけど?
179:デフォルトの名無しさん
19/06/11 14:20:31.55 lbh69FdF.net
初心者質問です。
VBAからIEで印刷するときにプリンター選択を自由に行いたいです。
プリンタを選択する部分は、syslistview32というクラス名で、hwndまでわかっています。
sendmessageの、LVM_GETITEMCOUNTで、プリンターの数まで取得できることを確認しました。
今は、LVM_SETITEMSTATEで、構造体とテキトーなindexをsetして、sendmessageをしたら、IEが落ちてしまうような状態です。
メモリー書き込みも考慮しなければいけないなど情報も見かけましたが、VBA半年程度しかやっていないので、OSに近い処理は何から調べたらいいのかわかりません
プリンター名が指定の文字列に該当するもののindexをsyslistview32から取得し、syslistview32の選択をそのindexにするような、VBAのコードをお教えいただくことはできないでしょう。(Cなどでも大丈夫です。)
以上、よろしくお願いします。
180:デフォルトの名無しさん
19/06/11 14:27:56.01 Y18rXsQw.net
LVM_GETITEMCOUNT を NG にした
残念だったな
181:デフォルトの名無しさん
19/06/11 15:50:09.81 mh1wU8om.net
とばっちりカワイソス
182:デフォルトの名無しさん
19/06/11 16:15:17.11 DThKFJnr.net
LVM_GETITEMCOUNTって書いとけばキチガイ一人避けれるということでしょ
183:デフォルトの名無しさん
19/06/11 16:18:02.74 DThKFJnr.net
>>176
デフォルトのプリンタを取得して保存しとく
デフォルトのプリンタ変更する
IEで印刷開始
デフォルトのプリンタもとに戻す
こんなんじゃだめなのか?
184:デフォルトの名無しさん
19/06/11 16:34:17.98 +sMFHfdj.net
LVM_GETITEMCOUNT スレッドまたぎはNG
185:デフォルトの名無しさん
19/06/11 17:55:31.55 b3tPk+od.net
>>180
ありがとうございます
今はそれで運用しているのですが、デフォルトプリンターを変更しても、IEで現在立ち上げているページのプリンターの選択は変わりませんでした。(新しいタブやページなどは変わる)
ですので、デフォルトプリンターを変更した後タブを複製して、そのタブをアクティブにして、複製されていないhtmlの箇所をコピーして、印刷して、タブを閉じて、デフォルトプリンターを元に戻すような処理にしています。
プリンターを変更しないといけない処理が過去にあったりしたそうなので、その場でプリンター選択を操作できるのであれば、知りたいという感じです
186:デフォルトの名無しさん
19/06/11 18:15:49.68 1BO360IJ.net
LVM_SETITEMSTATEで落ちるのはオレオレ構造体のミスとかじゃないの
187:デフォルトの名無しさん
19/06/11 19:34:28.79 iv+iCaIJ.net
別プロセスからメッセージ投げるから、IEが構造体にアクセスできないってことでしょ?
VirtualAllocExでメモリ確保してそこに構造体用意しては
LVM_GETITEMCOUNT
188:デフォルトの名無しさん
19/06/11 20:56:45.31 HsLA7EXf.net
>>175
じゃあ何のために158みたいな戯れ言をぬかしたんだ?
アホだからか? それともバカだからか?
189:デフォルトの名無しさん
19/06/11 21:07:50.93 oRHFwQ78.net
>>185
なんで>>158から社員が出てくるんだよ
理解できていないのは>>143って事だぞ
全く同じって事が(>>143には)理解できていないから>>143みたいな発言になるんだろ
って事だぞ
190:デフォルトの名無しさん
19/06/11 22:59:27.04 xU3mv9gp.net
意味が分からん。
ドキュメントが間違ってるだけで、マクロ関数はintで実装されてるから気にせず使えって話で合ってる?
191:デフォルトの名無しさん
19/06/11 23:02:51.29 VKkOh0JU.net
>>184
ありがとうございます。少し調べてやってみます。
192:デフォルトの名無しさん
19/06/14 00:21:25.69 TGTlo7vf.net
WiteProcessMemoryの返り値が0になる(´・ω・`)
GetSharedMemの返り値 のアドレスが、「-1597046784」 とか返ってくる(´・ω・`)
Long型(-200万~200万くらい)なのに(´・ω・`)
助けてください(´・ω・`)
tid = GetWindowThreadProcessId(lngSysListView32, pid)
hProc = OpenProcess(PROCESS_VM_OPERATION Or PROCESS_VM_READ Or PROCESS_VM_WRITE, _
False, pid)
lpShared1 = GetSharedMem(hProc, LenB(li))
lpShared2 = GetSharedMem(hProc, LenB(lt))
For i = 0 To maxitem - 1
li.mask = LVIF_TEXT
li.iItem = i
li.iSubItem = 0
li.lpszText = lpShared2
li.cchTextMax = LenB(lt)
lngRC = WriteProcessMemory(hProc, ByVal lpShared1, li, LenB(li), lWritten)
lngRC = WriteProcessMemory(hProc, ByVal lpShared2, lt, LenB(lt), lWritten)
Public Function GetSharedMem(ByRef hProc As Long, ByVal memSize As Long) As Long
GetSharedMem = VirtualAllocEx(ByVal hProc, ByVal 0&, ByVal memSize, MEM_RESERVE Or MEM_COMMIT, PAGE_READWRITE)
End Function
193:デフォルトの名無しさん
19/06/14 01:18:48.45 udVNzUQx.net
176だよな・・・
GetSharedMemなんてAPIあったっけ?と思ったら、MSDNのサンプルまんま使ってるのかな?
lpShared2とかltとか変数の意味が分からん
この辺参考にして作り直したら
URLリンク(hongliang.seesaa.net)
194:デフォルトの名無しさん
19/06/14 02:03:09.01 WbpzR08B.net
-1597046784==0xa0cf0000、別におかしくはなさそうな
>Long型(-200万~200万くらい)なのに(´・ω・`)
VBA(VBS?)のLongって22bitなの?
10bit勘違いしてるだけでは?
195:デフォルトの名無しさん
19/06/14 07:51:56.01 AF2NDvCn.net
>>190
ありがとうございます
読んで理解して再度実装してみます
今回のコードはこれを丸コピして、プリンター選択画面に対して試してみているという感じです。(プリンター名一覧を取得できるかどうか)
URLリンク(teratail.com)
>>192
うわ、本当だ。知れて良かったです。ありがとうございます
bit反転が起きていると思って、反転させてみたら(+2 ^32?)オーバーフローが起きて、勘違いしていました
LVM_SETITEMSTATEはここを参考にして書いていました
URLリンク(stackoverflow.com)
URLリンク(oshiete.goo.ne.jp)
今調べたらこっちのはSolvedなので参考にしてみます
URLリンク(social.msdn.microsoft.com)
いろいろと助かります
196:デフォルトの名無しさん
19/06/14 12:34:20.64 rNE5XrYC.net
馬鹿には無理
197:デフォルトの名無しさん
19/06/14 12:52:57.90 bpAwmG5b.net
ソフト業界でマイクロソフトは邪魔でしかない。
まともなものをよくするならいいが、悪するのがマイクロソフトで
しかも、おかしなものを直さず放置して悪化させる。
マイクロソフトは邪魔な存在でしかない。
マイクロソフトの弱点は仕様通りに作れないのは欠点は
同時に自社のソフトをWindows以外のデバイスへ移植できないことも意味する。
そこ弱点だし、将来性がないのもそのあたり。
Windowsの次のOSの仕組みを作ってもソフトの移植ができない。
来年か再来年あたりに出すわけだが引き継ぎできないだろうね。
昔にアーケードゲームの中途半端な移植のファミコンソフトレベルでしかない。
作っても何か違うって状態になる。
198:デフォルトの名無しさん
19/06/14 13:22:29.13 FKc1iwhz.net
>>194
突然どうした?
この朝鮮臭い駄文は窓板きっての汚物キチガイマカーのコピペと見受けるが
199:デフォルトの名無しさん
19/06/14 15:32:06.70 vVm8Z7bX.net
>>194
内容はともかく、もうちょっと日本語を頑張れ。
200:デフォルトの名無しさん
19/06/14 15:50:36.86 sZCV0u2+.net
>>194
>マイクロソフトの弱点は仕様通りに作れないのは欠点は
同時に自社のソフトをWindows以外のデバイスへ移植できないことも意味する。
この文章は日本語としておかしい。
>昔にアーケードゲームの中途半端な移植のファミコンソフトレベルでしかない。
この文章も日本語としておかしい
201:
19/06/14 18:48:04.20 FySvhFYo.net
>>194
>悪するのが
>マイクロソフトの弱点は仕様通りに作れないのは欠点は同時に自社のソフトをWindows以外のデバイスへ移植できないことも意味する。
>そこ弱点だし
>そのあたり
>昔に
以上、日本語としておかしい部分を抽出したので訂正するように
202:デフォルトの名無しさん
19/06/14 21:10:26.30 B8znrq/O.net
日本語おかしい奴vsあたまおかしい奴
203:デフォルトの名無しさん
19/06/14 21:14:02.15 RsWDD4iG.net
エイリアン対アバター並の意欲作だな
204:蟻人間
19/06/14 21:14:45.86 lQGpZUNA.net
あたまがぱっかーん
205:デフォルトの名無しさん
19/06/16 04:09:22.45 HeZkFDT3.net
寄生獣だな
206:デフォルトの名無しさん
19/06/16 15:19:28.33 RxcvAD6u.net
ダメだぁ...
WriteProcessMemory がどうしても失敗する(´・ω・`)
デスクトップのsyslistview32やexplorerのDirectUIHWNDでは成功(返り値1)するんだけど、
メモ帳やIEのプリンター選択のsyslistview32や、メモ帳のEditに対しては失敗(返り値0)する
なんでー?
207:デフォルトの名無しさん
19/06/16 15:34:33.84 RxcvAD6u.net
Err.LastDllError の番号は998で、
メモリ ロケーションへのアクセスが無効です。
208:デフォルトの名無しさん
19/06/16 17:12:52.81 Z9zSyDOE.net
WOW64
209:デフォルトの名無しさん
19/06/16 20:39:35.26 RxcvAD6u.net
>>205
64bit版でコンパイルしたら、32bit版のプロセスに介入することできないから難しいという感じでしょうか(´;Д;`)
64bit版のIEでも返り値は0でした...
Long型を、LongPtrにしてもダメでした...
210:デフォルトの名無しさん
19/06/17 02:30:25.07 q7RVlLCN.net
32bit,x64の実行ファイル2つ作って用途に合わせて切り替えたら?
211:デフォルトの名無しさん
19/06/17 11:24:55.79 lxO8a0KV.net
いよいよwindowsを捨てる時が来たようだ
212:デフォルトの名無しさん
19/06/18 04:17:01.07 fify6tPn.net
また買えばいいよ
213:デフォルトの名無しさん
19/06/18 06:23:28.70 3nOE2mBA.net
プログラム板にキチガイ降臨中!botに一晩も反応する異常さ
一般人(学校恩師)に殺害予告をしているのでスレ建て通報してください。
スレリンク(tech板)
142 名前:a4 ◆700L1Efzuv 投稿日:2019/06/18(火) 05:29:55 ID://qVkzO
>>141
名古屋の人な 俺ね、君の問題を大橋先生と混ぜないことにする。つまりね、
片桐孝洋のことをボコろうと思う。普通に顎の骨を折る。これくらいで警察来るか?
一般市民とかさ、普通にさ、俺らの秘密なんだけどさ、日本人なんて復活ねーから。
214:デフォルトの名無しさん
19/06/18 12:45:38.38 1CtlGReK.net
堂々の一位
URLリンク(hissi.org)
215:デフォルトの名無しさん
19/06/22 14:06:32.16 DZJ/hc7X.net
>>206
自分は一旦それで絶望して
32bitアプリ用のラッパー作って呼んでる
32bit資産使ってる人はみんなこうじゃないかな
216:デフォルトの名無しさん
19/06/22 14:29:13.02 8YBlX71B.net
seamless ωωω
217:デフォルトの名無しさん
19/06/25 16:44:22.77 hU5ITaEA.net
既存の Console に代わる Windows Terminal のプレビュー版が公開されたけど
今後コンソールアプリはどういう作りになるんだろう
既存の ConsoleAPI またはその拡張API になるのか
それともConsoleAPI は廃止されて Unix なんかと同様のエスケープシーケンスを制御する
curses ライブラリみたいのが提供されるのか
まぁオープンソースみたいだからソース見ればいいんだろうけど
218:デフォルトの名無しさん
19/06/25 16:58:20.59 vGWUuZ9A.net
初歩的な質問ですが、64bitのプロセスにもWin32APIって使えますか?
219:デフォルトの名無しさん
19/06/25 17:11:37.24 JYAeHTmF.net
使える
ただし、例えばGetWindowLongのようにポインタのビット数を決め打ちしている箇所に注意が必要
220:蟻人間
19/06/25 17:11:56.15 CrMrKXln.net
>>215
Win64APIではWoW64というシステムがWin32からWin64への互換性レイヤーになる。
221:デフォルトの名無しさん
19/06/25 17:35:47.56 XhZtJiMw.net
32bit OS の場合
System32 = 32bit 用 DLL (Win32API)
64bit OS の場合
System32 = 64bit 用 DLL (64bitWin32API)
SysWOW64 = 32bit 用 DLL (32bitWin32API)
222:デフォルトの名無しさん
19/06/25 17:37:53.13 vGWUuZ9A.net
ありがとうございます
これで気にせず昔の情報あされます
223:デフォルトの名無しさん
19/07/10 12:39:20.34 LrFGCWwq.net
SysListView32のリストビューで、縦スクロールバーが表示されている状態で、
アイテムをクリックして選択し、すぐにホイールを回してそのアイテムを画面外に出すと、
一定時間後にそのアイテムが表示される位置まで飛んでしまいます。
選択されていないアイテムよりも、すでに選択されているアイテムをクリックした方が、
ホイールを回すまでの時間が多少長くてもその現象が起きます。
これWindows自体のバグでしょうか。
内部のタイマー処理でも絡んでいるのでしょうか。
224:デフォルトの名無しさん
19/07/10 12:47:11.51 +uFplCdI.net
君が発見出来るような程度のバグなら
既に誰かが発見して治してるよ
225:デフォルトの名無しさん
19/07/10 12:50:54.60 z7915HRG.net
ホイールは3rdパーティーのマウスドライバや常駐もので
余計にメッセージ飛ばしたりすることあるから厄介
226:デフォルトの名無しさん
19/07/10 13:04:08.77 GamN/JFp.net
Win10の一年位前のビルドでSysListView32がスクロールバーを出してる状態でドラッグすると
画面右端にカーソルがすっ飛ぶバグがあったな
SysListView32使ってるアプリは多いからこれは一般ユーザーもすぐに気付い
227:デフォルトの名無しさん
19/07/10 13:14:56.30 LrFGCWwq.net
>>222
ホイールでなくスクロールバーのドラッグでも起きました。
操作が難しくなりますが、アイテムをクリックして選択し、
すぐにスクロールバーをドラッグしてそのアイテムを画面外に出すと、やはり同じ現象が起きます。
228:デフォルトの名無しさん
19/07/11 10:11:43.64 Bpzge626.net
全然関係なくて申し訳ないが
シングルクリックとダブルクリックの判定って結構難しいよな
クリックのメッセージが飛んできても
シングルクリックのつもりなのか
ダブルクリックの一回目のクリックのつもりなのか
その時点では判断が付かない
なのでダブルクリックの二回目のクリックが飛んで来るかどうか
少し時間をおいてみるしかない
この間にユーザーが何か操作すると
229:デフォルトの名無しさん
19/07/11 10:24:09.19 BSTUJEPb.net
>>225
っWM_LBUTTONDBLCLK
230:デフォルトの名無しさん
19/07/11 10:24:15.51 dt9f58xR.net
アホ発見
231:デフォルトの名無しさん
19/07/11 10:27:17.02 xJ4m2V3T.net
かわいい
232:デフォルトの名無しさん
19/07/11 10:32:56.46 Bpzge626.net
>>226
WM_LBUTTONDBLCLKが飛んで来たらダブルクリック
でも飛んでこないかもしれない(つまりシングルクリック)という事だよ
飛んでくるかどうかは少し待ってみないとわからない
エクスプローラでファイルの名前の変更するとき
少し待たされるあの動作
タイマー使ってWM_LBUTTONDBLCLKが来るか少し待ってみるっていう
でもこの魔の時間にユーザーが操作することがあって
例えばホイール回したりスクロールバー触ったり
233:デフォルトの名無しさん
19/07/11 10:50:36.09 BSTUJEPb.net
>>229
コンパネでダブルクリックの間隔を調節できるから
そのへんはユーザーに責任転嫁できる
234:デフォルトの名無しさん
19/07/11 10:56:55.16 dt9f58xR.net
ダブルクリックはシングルボタンのAppleから持ち込まれた悪臭
235:デフォルトの名無しさん
19/07/11 11:57:55.84 6Wf0CyIx.net
>>230
と思うじゃん
236:デフォルトの名無しさん
19/07/11 23:57:18.00 QGiOPnup.net
飛んでくるまでいつまで待てばいいですか
少しっていつですか
237:デフォルトの名無しさん
19/07/12 00:14:57.72 B1Jsh2gD.net
あれ?シングルクリックってダブルクリックになったら、マージされてダブルクリックで処理されると思っていた。
238:デフォルトの名無しさん
19/07/12 06:48:21.69 dXXCmuDP.net
GetDoubleClickTimeでググれ
239:デフォルトの名無しさん
19/07/12 10:36:37.27 ueORW37F.net
>>234
マージされるのは二回目のクリック
今言ってるのは一回目のクリックをどう扱うかという話
この一回目のクリックは
シングルクリックのつもりなのか
ダブルクリックの一回目なのか
コンピュータには知る由もない
240:デフォルトの名無しさん
19/07/12 12:00:48.30 Y/iKed6k.net
なんでここまで説明しないと分からんのだろ
特にハイコンテクストって訳でもないのに
241:デフォルトの名無しさん
19/07/12 12:24:57.20 gSsTJBIy.net
誰が誰に対して?
1回目の誰が2回目の誰に対してマージされて処理されるのか?
おやすみ
242:デフォルトの名無しさん
19/07/12 12:53:40.57 nIUn02wm.net
GetCursorPosでポインターの場所、GetKeyStateでマウスボタンが押されてるか離されてるか
取得できるから、あとは時間測って適当にクリックとダブルクリック、ドラッグを判別する
SwapMouseButtonで右利き左利きとか、GetDoubleClickTimeでダブルクリック判定する時間とか
そんなのを設定できるようにしとけば完璧
これがおまえらが一番納得する方法だろwww
243:デフォルトの名無しさん
19/07/12 17:04:32.98 Uu5c0ODM.net
自信満々で嘘書くな迷惑
244:デフォルトの名無しさん
19/07/13 05:00:55.61 5W75r4eA.net
クリック動作はダブルクリックの直前に発生しても致命的にならないものであればいんでない?
クリック 選択
ダブルクリック 実行
これを逆にするようなら難しくなるだけかと
245:デフォルトの名無しさん
19/08/04 16:34:02.68 78/vdzUN.net
QueryPerformanceFrequencyが10000000を返してくるようになってた
将来はQPCは常に100ナノ秒単位で表しますよってなっていくんだろうか
今回たまたま自分の環境がそうなってしまっただけなんだろうか
246:蟻人間
19/08/04 21:08:54.77 QRYqe1Xw.net
URLリンク(katahiromz.web.fc2.com)
Win32の人、使ってみてね。便利だよ。
247:デフォルトの名無しさん
19/08/05 13:40:42.17 NOA3rn3w.net
グロ中尉
248:デフォルトの名無しさん
19/08/07 11:59:12.69 6nD1xIcw.net
現在、AddFontResourceとRemoveFontResourceを使って
プログラムからフォントを登録して使っています。
でもこの方法だと、RemoveFontResourceを呼んでも
システムを再起動しないと登録されたままになってしまいます。
その間はフォントファイルも削除できないです。
どうにかプログラム使用時だけフォントを有効にする方法はないでしょうか?
プログラム終了すれば登録されたフォントも登録解除されるような方法がいいです。
249:デフォルトの名無しさん
19/08/07 12:59:48.16 u0NlqDQ2.net
>>245
ドキュメントを読むとWM_FONTCHANGEをブロードキャストする必要があるらしいけどやってる?
もしくはAddFontResourceExでFR_PRIVATEを指定すると
> When the process terminates, the system will remove all fonts installed by the process with the AddFontResourceEx function
とあるからそれに頼るのもありかも
250:デフォルトの名無しさん
19/08/07 13:05:20.88 6nD1xIcw.net
>>246
AddFontResourceExでFR_PRIVATE指定でもしかするといけるかもしれませんね!
試してみます。ありがとうございます。
251:デフォルトの名無しさん
19/09/05 10:39:03.32 qYKhXOia.net
質問させてください。
日本語の Windows10 で、Windows Explorer のアドレスバーに
日本語で「デスクトップ」とだけ入力してエンターキーを押すとデスクトップに移動できます。
他にも、「ドキュメント」「ピクチャ」「ダウンロード」「3D オブジェクト」「OneDrive」など
いくつかの単語が特定のフォルダーと関連付けられていますが、
この対応をプログラムで調べる方法はありますでしょうか。
例えば SHGetFileInfo を使えばデスクトップのフルパスから
「デスクトップ」という日本語の display name を得ることはできますが、
SHGetFileInfo では上記のような関連付けの有無は判定できませんし、
そもそもフルパスから日本語名を得るのではなくその逆をしたいので、
SHGetFileInfo はあまり役に立たなそうです。
何かお分かりのことがありましたら教えていただけないでしょうか。
どうぞよろしくお願いします。
252:デフォルトの名無しさん
19/09/05 10:44:01.37 Cn2xW5Dx.net
内部で対応表持たせるしかないだろ
253:蟻人間
19/09/05 11:22:27.86 sYiofqED.net
SHGetLocalizedNameという関数が日本語パス名を返すみたいだが、逆はない。
SHGetSpecialFolderLocation/SHGetSpecialFolderPathで特殊フォルダのパス名を取得し、
SHGetLocalizedNameで日本語パス名を取得する。
それで対応表を作るといいだろう。
254:デフォルトの名無しさん
19/09/05 11:23:33.11 A2EHupI7.net
それは対応表作るにしても結構苦労するよ
例えば俺のWin10のユーザフォルダの中を見ると
同じフォルダ内にドキュメント、と、ピクチャ、が二つずつあったりする
ディスプレイネームが同じでITEMIDLISTが違うアイテムが
同一フォルダに複数存在してたりする環境もあるって事
俺の場合は片方はOneDriveでもう一つはローカル用
同じ名前で同じフォルダ
だから単にドキュメントといってもどっちの事か分からんwwwという事態に
苦労するよ、それ
255:デフォルトの名無しさん
19/09/05 11:28:46.02 A2EHupI7.net
てか、同じ名前のアイテムを同一フォルダに突っ込むWindowsが糞仕様なんだけど
普通に使う分にもどっちがどっちか分からんでムカつく
OneDriveの方は「ドキュメント(OneDrive)」とか区別付く名前にしとけよ
それかOneDriveっていうフォルダ掘ってその下に配置しろよ
同じ名前のアイテムが同じフォルダにあると混乱することぐらい分かるだろ糞
256:デフォルトの名無しさん
19/09/05 12:28:53.83 ug+Xr8Ig.net
独り言はチラ裏へ
257:デフォルトの名無しさん
19/09/05 12:29:13.60 Cn2xW5Dx.net
アクセス履歴見ながら対応表を順次変更すりゃいい
そういうのはアイデア次第でどうとでもなる
258:デフォルトの名無しさん
19/09/05 12:30:06.05 qYKhXOia.net
>>249
レスどうもありがとうございます。
他の方のレスを拝見してみても、やっぱりなかなか難しそうですね。
>>250
大変有用な情報どうもありがとうございます。この方針が一番現実的そうですね。
SHGetSpecialFolderLocation/SHGetSpecialFolderPath は
CSIDL しか受け付けなくて、「3D オブジェクト」のように CSIDL がないフォルダもあるので、
CSIDL の代わりに GUID が使える SHGetKnownFolderIDList を使おうと思います。
ただいずれにしても、どのフォルダの CSIDL/GUID を指定するかは
プログラムの段階で決めないという認識で正しいでしょうか?
その部分を自動で決められれば最高なのですが難しそうですね。
あと、日本語名を取得するのに SHGetLocalizedName を紹介していただきましたが、
SHGetFileInfo を使うのとどちらがいいでしょうか?
SHGetFileInfo なら直接日本語名が得られるのに対して、SHGetLocalizedName だと
'the ID of the localized file name in the resource file' が返ってきますが、
こちらのほうがパフォーマンス的に有利だったりするのでしょうか?
>>251
貴重なご意見どうもありがとうございます。確かになかなか問題の根は深そうです。
エクスプローラーのアドレスバーはそのあたりをいい感じに解決しているようなので
その仕組みをそのまま拝借できたら楽なのですが、そう簡単には行かなさそうですね。
259:デフォルトの名無しさん
19/09/05 12:39:12.77 qYKhXOia.net
>>252 >>254
レスどうもありがとうございます。
確かに Windows のフォルダ階層の仕組みは少し分かりにくいところがありますが、
今回の件についてはその問題はあまり関係なくて、
ちょっと誤解を与えてしまっている気がするので改めてやりたいことを説明させていただきます。
エクスプローラでは、今どのフォルダを開いているかにかかわらず、
アドレスバーに単に「デスクトップ」とだけ入力してエンターキーを押せばデスクトップに移動できます。
つまり、エクスプローラーの中では「デスクトップ」という単一の単語とデスクトップのフルパスとが
対応付けられているということになります。そして私は、この対応表を取得したいと考えております。
260:デフォルトの名無しさん
19/09/05 13:04:18.60 REbzCKHr.net
質問です。
ファイルに関連付けされている実行ファイルパスを取得するのに
FindExecutable()やAssocQueryString()を使っているのですが、
一部関連付けが取得できません。
どうやら関連付け先の実行ファイルの種類がWindowsパッケージ(デスクトップ)版と
ストアアプリ版とでは動作が異なるらしく、パッケージ版は上記APIで取得できる
ようですがストアアプリ版は取得できないようです。
仕方がないのでレジストリを直接たどる方法を模索しているのですが、
パッケージ版は分かるのですがストアアプリ版がよく分りません。
自分で調べた限りでは、HKCR\{拡張子}\OpenWithProgidsのREG_NONE型の{名前}
を元に、HKCR\{名前}\ApplicationのApplicationNameまでたどればいいと
いう情報を見つけて実践してみました。が、
261:デフォルトの名無しさん
19/09/05 13:05:00.53 REbzCKHr.net
(つづき)
実際に.pdfがedgeに関連付けられていて上記APIでは取得できない環境
においてレジストリをたどると
\HKCR\.pdf\OpenWithProgids
のREG_NONE型の名前「AppXd4nrz8ff68srnhf9t5a8sbjyar1cr723」を元に
\HKCR\AppXd4nrz8ff68srnhf9t5a8sbjyar1cr723\Application
のApplicationNameまではたどり着きました。
しかしこれに設定されている文字列が
@{Microsoft.MicrosoftEdge_44.18362.329.0_neutral__8wekyb3d8bbwe?ms-resource://Microsoft.MicrosoftEdge/Resources/AppName}
となっています。
どう見ても実行パスではないというか、これをさらにどうにかするのか
たどる方法が間違っているのか分からなくなりました。
正しい方法をよろしくお願いします。
262:デフォルトの名無しさん
19/09/05 13:11:24.93 d3q2zCXJ.net
>>256
試しにmspaintと入力してエンター押したらペイントが起動しない?
と言う事は入力が日本語ならC:\Users\<ユーザー名>\この中の対応するフォルダを開く
とか内部でやってるんじゃないかな
英語の場合はLoadLibraryと同じように
Explorer.exeと同じディレクトリ
Explorer.exeのカレントディレクトリ
システムディレクトリ
Windowsディレクトリ
環境変数のPATHに指定されてるディレクトリ
の順で検索されてmspaintが起動とか
263:デフォルトの名無しさん
19/09/05 13:14:07.55 d3q2zCXJ.net
英語とか日本語とか関係なかったねw
264:デフォルトの名無しさん
19/09/05 22:24:50.64 qYKhXOia.net
>>259
レスありがとうございます。お返事が遅くなってしまい申し訳ないです。
> 試しにmspaintと入力してエンター押したらペイントが起動しない?
265:r> 本当ですね! しかし一方で、C:\Users\<ユーザ名>\AppData というフォルダはあるのに アドレスバーに AppData と入力してエンターを押しても期待通りの動作はせず、 なかなかルールは複雑みたいです。 また、日本語環境ではアドレスバーに「Desktop」と入力してエンターを押しても 期待される動作にはならず、「デスクトップ」でなければならないようなので、 やはりシステムの言語設定は関係あるように思われます。 SHGetFileInfo で取得できる displayName を調べれば 日本語環境ならデスクトップフォルダから「デスクトップ」という文字列が得られるので その逆ができればいいかと思ったのですが、実際はそれほど簡単な問題ではないようです。 例えば私の環境では C:\Users\<ユーザ名> の displayName は ウィンドウズの GUI から設定できる「ユーザ名(アカウント名)」になっていますが、 エクスプローラーのアドレスバーで期待通りの動作になる文字列は 「ユーザ名(アカウント名)」ではなく「フルネーム」でした。 エクスプローラーのアドレスバーの動作を完全に模倣するのは難しそうですが、 ここでいただいたアドバイスを元に、現実的な方法を考えていきたいと思います。
266:蟻人間
19/09/05 22:38:16.11 oF7lOGXi.net
レジストリにAppPathという設定もあるぞ。
267:デフォルトの名無しさん
19/09/06 19:55:29.68 H/ygVIaK.net
>>261
いくつか気付いた事を報告 その1/2
・ユーザーフォルダ内のフォルダで移動できたもの
アドレス帳
お気に入り
デスクトップ
ドキュメント
ピクチャ
ビデオ
ミュージック
仮説1 ~\<ユーザー名>\(日本語名で表示される一部のフォルダ)って条件なのかもしれない
仮説2 仮説1の一部のフォルダで法則があるとしたらレジストリで保存場所を変更できるフォルダではないか?
試しに「プログラム」「スタートアップ」と入力しても移動できた
レジストリの「HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders」
ここに列挙されてるやつがヒントになるかもしれない
・レジストリをヒントに入力して移動できたもの
プログラム
recent
sendto
スタート メニュー
スタートアップ
・その他で移動できたもの (ツリービューで日本語表記をヒントにした)
パブリック
コンピュータ
ネットワーク
コントロール パネル
ごみ箱
268:デフォルトの名無しさん
19/09/06 20:02:10.05 H/ygVIaK.net
いくつか気付いた事を報告 その2/2
・ここまでの間に気付いた事
アドレスバーに「コ」と入力すると
コントロール パネル
コンピュータ
コンピュータの簡単操作センター
この3つの入力候補が現れたけど
入力候補が表示されるのとされないのもあった
あと日本語・英語混在(sendto recent)でさらに混乱させる事になってしまったかもしれないw
269:デフォルトの名無しさん
19/09/06 20:40:37.12 H/ygVIaK.net
ドキュメントがDocumentsの表示になった時の直し方で
LocalizedResourceNameが出てくるからそれをヒントにするのもいいかもしれない
270:デフォルトの名無しさん
19/09/06 23:22:21.54 ZBxclhCf.net
>>262
コメントどうもありがとうございます。
色々とレジストリにもヒントが隠れてそうなので調べてみたいと思います。
>>263-265
大変有用な情報どうもありがとうございます。
書いていただいた内容を見ながら実験してみて分かったこととして、
問題のアドレスバーの挙動は環境によって相当にブレがあるようです。
私の環境(Windows 10 Pro)では、
>>263 に書いていただいた文字列のうち
「recent」「コンピュータ(ちなみにコンピュータ『ー』もダメ)」は
期待通りの動作にならず、代わりにブラウザ(私の環境では Firefox)で
入力した文字列が検索されてしまいました。
私の環境ではアドレスバーに「Creative Cloud Files」と入力すると
対応する Adobe のソフトが作ったフォルダが開かれるので
ある程度外部ソフト等の影響があるだろうとは思っていたのですが、
「コンピュータ」ですら環境によって結果が異なるとは予想外でした。
ちなみに外部ソフトの影響に関しては、レジストリの
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace
に登録されているものが該当しているような気がするのですが、
確かなことは分かっていません。
ともあれ、非常に興味深い実験結果と考察を読ませていただき
大変勉強になりました。どうもありがとうございます。
また何かお気づきのことがあれば教えていただけると嬉しく思います。
271:デフォルトの名無しさん
19/09/07 09:05:50.93 /U7tKF4y.net
>>266
10の場合はコンピュータがPCに変わったんだと思う
272:デフォルトの名無しさん
19/09/07 09:58:32.00 dh6f1+zl.net
これはひどい
273:デフォルトの名無しさん
19/09/07 13:40:15.53 LGCtCXOo.net
デフォルトで用意されている日本語のフォルダ名を英語に戻す
URLリンク(laboradian.com)
11個の日本語名になっているフォルダ
日本語名のフォルダには、desktop.ini という隠しファイルがある
274:デフォルトの名無しさん
19/09/12 18:25:54.76 h3dV0Q14.net
Win32アプリのバージョンリソースについての質問です。
自作アプリの1.0.0をリリースした後、1.1.0を作成中にベータ版を出す場合、
リソースのFILEVERSIONやPRODUCTVERSIONはどのように記述するのがよいのでしょうか。
1,1,0,0は、1.1.0の正式版に使いたいのですが、これより大きい値を付けるのも変だし、
数字以外の文字は入力できないようなので。
275:デフォルトの名無しさん
19/09/12 19:23:34.97 WE18f4SS.net
1.0.0.1とかはあかんの?
276:デフォルトの名無しさん
19/09/12 19:48:34.37 5JZ2mwNb.net
好きにしろよww
自作アプリなんて俺は1.0も1.1も2.0もみんなβだから1.00から0.01刻みで増やしてる
昔はカスタムビルドステップでビルド番号もつけてたけど今はやってない
277:デフォルトの名無しさん
19/09/12 20:46:30.04 igJ/H+nC.net
ちょろめとかふぃれふぉxはメジャーの数字上げ過ぎてひどいことになってるな
ばかなんですかね
278:デフォルトの名無しさん
19/09/13 10:15:47.66 wKEqF87n.net
1.1.0.α
1.1.0.β
1.1.0.γ
279:デフォルトの名無しさん
19/09/13 10:18:26.30 ud7Tmahn.net
1.0.0.01
1.0.0.011
1.0.0.0111
1.0.0.01111
280:デフォルトの名無しさん
19/09/13 11:29:05.95 aNvomMID.net
>>271
> 1.0.0.1とかはあかんの?
やっぱりこれが妥当なんですかね。
他のアプリのベータ版も見てみたいとは思うのですが。
秀丸エディタは、ベータ版は4桁目を増やし続けて、リリース版には99を入れてました。
1.1.0.99が1.1.0のリリース版という法則でした。
> 1.1.0.α
> 1.0.0.01
FILEVERSIONやPRODUCTVERSIONには、αや01は入力できないです。
必ず4つの数字を入れないと、勝手に0が入ってしまいますし。
281:デフォルトの名無しさん
19/09/13 12:49:50.53 IRP8OWhI.net
昔、同僚にクラス設計やコメントの書式にやたら拘る奴がいたの思い出した
綺麗なソースコード書いてたけど、まったく動かないゴミですぐ職場から消えたわw
282:デフォルトの名無しさん
19/09/13 12:54:34.90 NSArXc0X.net
そういう人って恋人も見た目重視にしてそう
ソースコード(見た目)って意味で
283:デフォルトの名無しさん
19/09/13 17:47:19.57 +RoIj51L.net
>>276
所詮決め事なんで>>272の言うとおり好きにしてくださいって話だけど
良くありがちなのは
�
284:<Wャーバージョン.マイナーバージョン.ビルドバージョン みたいな メジャーバージョンはアーキテクチャとかUIの大きな変更とかユーザから見ても 変更されたことが分かるような場合 マイナーバージョンは単機能追加とかバグ修正などユーザから一見分からない ような軽微な変更の場合 ビルドバージョンは作業途中の状態を管理するための連番や単一作業の区切りを 管理するための連番とか みたいな感じで自分で目的を決めて使うしかないよ 他には作業の効率管理のためにさらにビルド回数を最後に付けてコンパイルする たびに番号加算していくとか 後はOSのバージョンごとにパッキングを変える場合はPRODUCTOVERSIONと FILEVERSIONを関連性は持たせるけど個別に管理するとか >>273 あれは企業的に仕事をしてますよアピールなので残念なのは経営層か 投資家かな バグ修正はマイナーバージョン、それ以外はすべてメジャーバージョンの修正に することですごくたくさん仕事してますよがアピールできるので
285:デフォルトの名無しさん
19/09/13 17:52:57.53 xaEp9cr2.net
>>273 さんはそんなこと言われなくても判ってて書いてるだろ
286:デフォルトの名無しさん
19/09/13 23:06:09.82 ZW8mwhnp.net
INVALID_HANDLE_VALUEってマジで糞だよな
うっかりしてると失敗したときNULLが返ってくるって勘違いするというか
ボーッとしてるとそういうコード書いちまうことがある
大概のAPIでは失敗したときNULLが返ってくるってのもある
混在いやん
287:デフォルトの名無しさん
19/09/13 23:10:11.55 ZW8mwhnp.net
あと、なんでINVALID_HANDLE_VALUEが必要になったのか技術的な背景が気になる
普通に0を返しとけばいいじゃん、って思うよね
他のAPIがそうなってるんだから
謎
288:デフォルトの名無しさん
19/09/13 23:49:45.81 xZuGkTzd.net
お前だけじゃボケ
289:デフォルトの名無しさん
19/09/14 00:13:31.65 n9TGnnZi.net
>>281
どんなAPIでも最低限の仕様確認してから使えよ
290:デフォルトの名無しさん
19/09/14 03:06:20.87 BTqGkHHG.net
しかしそれらを超越した次元で総合的に判断してやっぱりINVALID_HANDLE_VALUEは糞
必要ないからな
291:デフォルトの名無しさん
19/09/14 03:09:13.59 ztnZ3eZq.net
The Old New Thingにあったな
URLリンク(devblogs.microsoft.com)
292:デフォルトの名無しさん
19/09/14 05:42:23.89 MJsGg5EL.net
>>284
それは論点が違う
マジで糞かどうかだろうが
285はちゃんと自分なりの見解を言っているし
286は情報提供している
お前だけとかくだらんことしか言わんボーガスとは次元が違う
16bit時代は低コストに拘るあまり
色々とアホなことをしていた
その名残を糞って言えないやつも糞だ
293:デフォルトの名無しさん
19/09/14 10:06:00.92 TUFMAlcF.net
ComboBoxはCB_ERRがある
ListBoxはLB_ERRがある
ListViewはただの-1で定義無し
LV_ERRじゃないのはなんで?
294:デフォルトの名無しさん
19/09/14 11:02:16.25 BTqGkHHG.net
>>286読んで思い出したが
そうそうHANDLEのスマポ作るときにウザいんだよな
既定の初期値を何にしておくかって問題があるからな!
ああ糞だ
295:デフォルトの名無しさん
19/09/14 11:26:55.16 BTqGkHHG.net
後HANDLEのスマポのデストラクタでCloseHandleするとき
失敗したり何も入ってなかったり
無効なハンドルの場合はCloseHandleしないようにする場合も嫌らしい
無効なハンドルを表す値が二つ有るからな!!
if( handle && handle != INVALID_HANDLE_VALUE ){ ::CloseHandle( handle ); }
と書いてしまいたいところだが、本当にこれでよいのか?
それかCloseHandleに無効なハンドルを渡したときは何もしないことを期待して
if文なしで単に::CloseHandle( handle );とだけ書くか
しかしCloseHandleに無効なハンドルを渡したときの動作はMSDNには書かれてないんだよな
まぁ何もしないと思うが
296:デフォルトの名無しさん
19/09/14 11:39:00.01 BTqGkHHG.net
ああ今調べたら、CloseHandleに無効なハンドル渡したら
GetLastErrorが汚染されるらしいな
297:デフォルトの名無しさん
19/09/14 11:51:46.43 U/7wJfIU.net
初期化と開放とかのインターフェース作って、そのインターフェース派生でAPIアクセスしてるな
その手のはAPI直接叩くソース書くと後からコーディングミスに気付いても修正困難になるしバグの元
298:デフォルトの名無しさん
19/09/14 13:23:12.69 i3tDL1ol.net
>>288
前者2つはOS基本機能、後者はコモンコントロールというオプション
という違いから歴史と立ち位置が違う
ついでに言えば設計から全然違うんで、定義がないのは不思議ではない
299:デフォルトの名無しさん
19/09/14 13:47:20.57 U/7wJfIU.net
どれもコモンコントロールだよ
歴史的には昔はリストビューがコモンコントロールじゃなかったかもしれないが分からない
300:デフォルトの名無しさん
19/09/14 14:05:12.55 mIZ3m5oP.net
昔のWindowsAPIはHANDLEとポインタが別物だったのを知らん人がいるのか
301:デフォルトの名無しさん
19/09/14 14:06:49.93 mIZ3m5oP.net
>>288
ポインタが奇数になるはずはない(キリっ
だから奇数の空間を全て別のオブジェクトに
おれ天才じゃね?って糞言語が日本にはある
302:デフォルトの名無しさん
19/09/14 15:56:30.20 6R0WtlX/.net
フリーのリソースエディタとAPIでGUIプログラムを作っているけど、
もう時代遅れなのかな。
みなさんは、GUIプログラムはどうやって作っていますか。
303:デフォルトの名無しさん
19/09/14 16:05:19.86 BWRFT45i.net
リソースエディタなんぞ使わず全部apiからテキストエディタ上で
数値指定で作ってるんでそんな自分よりかは進んでるぞ
まあ今の時代ならvisual studio使うのが普通だろうね
304:デフォルトの名無しさん
19/09/14 16:05:25.06 YkcbTkKM.net
20年前から来たのかな?
305:
19/09/14 16:49:47.51 1pj+LkZL.net
>>297
cygwin/mingw64 でコンパイル・リンクできるよう、リソースは手書きですね…
306:蟻人間
19/09/14 16:58:44.72 0f+SL6BM.net
俺は自作のリソーエディタ使ってるけど。MinGWでもVC++でもビルドできるよ。
307:デフォルトの名無しさん
19/09/14 17:18:22.21 i3tDL1ol.net
>>294
コモンかどうか名前はさておき、リストビューは明確にcomctl32を使うような
宣言とリンクがないと使えないでしょ
リストもコンボはこいつの範疇ではない
308:デフォルトの名無しさん
19/09/14 19:04:46.82 TUFMAlcF.net
WinUser.h
ComboBox CB_ERR
ListBox LB_ERR
CommCtrl.h
ListView関係のメッセージやマクロ
この違いは歴史関係って事?
LVM_INSERTITEMが失敗した場合は-1が返るけど
LV_ERR(-1)とするのはおかしい?
309:デフォルトの名無しさん
19/09/14 19:37:03.95 5CB9SZmv.net
作者の気持ちを想像して答えなさいスレッド
310:デフォルトの名無しさん
19/09/14 21:33:59.27 FV8dJ/wR.net
Windowsで.NET使わずにC/C++とWin32APIでPerl互換の正規表現を使ったプログラムを作る場合、
従来はboost::regexやPCREなど別途ライブラリが必要だったけど、Windows10以降はICUの正規表現を使えるようになった。
ただし、可変長文字列を扱うUnicodeStringクラスがヘッダーファイルicu.hから削除されているので、std::wstringなどで代替する必要がある。
311:デフォルトの名無しさん
19/09/14 21:43:24.62 EnCOcX5P.net
ListViewはWindows95で追加されたコントロール
312:デフォルトの名無しさん
19/09/14 22:37:17.04 bBqfD384.net
昔の事は多少は多目に見てやれよ。今みたいにSNSが活発じゃないし、githubで他人のソースも簡単に見れるわけしゎゃない。知見を共有しづらい時代なんだから
313:デフォルトの名無しさん
19/09/14 22:44:48.45 BTqGkHHG.net
システムハンガリアンという糞も生みだしたしな