Win32APIについての質問はこちらへどうぞ。
■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。
英語版( http://msdn.microsoft.com/en-us/library/ )の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで
■過去スレ
Win32API質問箱 Build125
https://mevius.5ch.net/test/read.cgi/tech/1551247748/
Win32API質問箱 Build124
https://mevius.5ch.net/test/read.cgi/tech/1510395780/
■関連スレ
Visual Studio 2019 Part4 https://mevius.5ch.net/test/read.cgi/tech/1585715794/
Visual Studio 2017 Part7 https://mevius.5ch.net/test/read.cgi/tech/1558179898/
【C++】 DirectX初心者質問スレ Part41 【C】 https://mevius.5ch.net/test/read.cgi/tech/1521786252/
Win32API質問箱 Build126
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2020/05/01(金) 22:16:51.96ID:ZJ42fMZB283デフォルトの名無しさん
2020/08/23(日) 16:00:25.99ID:SVuEjc7r >>282
>あと64bitで作っておけば32bitのフックもわざわざしなくていい
これはもしかすると、32BITアプリの場合、64BITのDLLのフック関数を OS
が呼び出してくれると言うことでしょうか?
>あと64bitで作っておけば32bitのフックもわざわざしなくていい
これはもしかすると、32BITアプリの場合、64BITのDLLのフック関数を OS
が呼び出してくれると言うことでしょうか?
284デフォルトの名無しさん
2020/08/23(日) 18:50:47.56ID:t0NmBsz5 32bitで実験やったんなら移植もすぐだからやってみればいい
dll使わずにする場合も専用APIとか無いし
dll使わずにする場合も専用APIとか無いし
285デフォルトの名無しさん
2020/08/24(月) 10:55:52.42ID:IztyfRL4286デフォルトの名無しさん
2020/08/30(日) 07:55:13.94ID:yNtthsj4 意味があるかどうかは外野がとやかく言うことではない
287デフォルトの名無しさん
2020/08/30(日) 10:06:50.95ID:/cTt0XEP 意味の有無を聞いてるとしか読み取れないのはどうかと思う
288デフォルトの名無しさん
2020/08/30(日) 14:59:21.03ID:XN33z1n0 素直に質問に答えりゃ良いんだよ
質問自体を疑問に思う必要などない
質問自体を疑問に思う必要などない
289デフォルトの名無しさん
2020/08/30(日) 15:09:45.20ID:GgAZZaQa 質問が間違ってるから答える気にもならないことはある
290デフォルトの名無しさん
2020/08/30(日) 16:53:37.52ID:ClA8nGT1 どうせ32bitでなら実験したってのが嘘で試しようがないんでしょ
291デフォルトの名無しさん
2020/08/30(日) 17:33:56.68ID:BjChy3oe その実験は、凄く上手く行きました、と言っておきます。
292デフォルトの名無しさん
2020/08/30(日) 17:36:51.12ID:IbTRMPI+ IMEのON/OFFはマウスやアプリでも出来るからな
そっちの対応はどうするんだろ
そっちの対応はどうするんだろ
293デフォルトの名無しさん
2020/08/30(日) 19:00:20.18ID:ClA8nGT1 皆キーボードフックしか言ってないけど
IMN_SETCONVERSIONMODE捕まえればいいやん
それもやったってんなら64bit対応するだけやん
IMN_SETCONVERSIONMODE捕まえればいいやん
それもやったってんなら64bit対応するだけやん
294デフォルトの名無しさん
2020/08/31(月) 20:27:32.61ID:YgYq5nQZ ONはともかくIME入力中だとOFFしても入力中のIMEのうにょうにょが消えないのだが
295デフォルトの名無しさん
2020/08/31(月) 21:02:36.79ID:fGHCeYBV ONだと普通の数字は全角なのに
テンキーだと半角
ちゃんと分岐してるならテンキーのうにょうにょも無しにしたらいいのに
テンキーだと半角
ちゃんと分岐してるならテンキーのうにょうにょも無しにしたらいいのに
296デフォルトの名無しさん
2020/09/07(月) 07:46:03.38ID:h3kjQIhT おまいらGetCommandLineが返した文字列からコマンド名だけ除いた部分て、どうやって得てる?
297デフォルトの名無しさん
2020/09/07(月) 08:31:55.79ID:Ml9CONKv CommandLineToArgv
298デフォルトの名無しさん
2020/09/07(月) 08:32:44.96ID:Y2TEo/a2 CommandLineToArgvW
299デフォルトの名無しさん
2020/09/07(月) 08:39:11.94ID:h3kjQIhT やっぱり自前でコマンド名だけ取り除くしかないのかな
空白や引用符に特別な意味を持たせたくないんだけど
空白や引用符に特別な意味を持たせたくないんだけど
300デフォルトの名無しさん
2020/09/07(月) 09:33:01.54ID:DSNLMJBI before afterはどんなの?
301デフォルトの名無しさん
2020/09/07(月) 10:21:46.55ID:Egt+Qwmp 結果にコミットする気が無い回答者たち
302デフォルトの名無しさん
2020/09/07(月) 10:56:37.10ID:9HEBPbyG おセックスしたいです
303デフォルトの名無しさん
2020/09/07(月) 13:52:28.70ID:X4wk0IcB MFCならCCommandLineInfoなんだがな。
304デフォルトの名無しさん
2020/09/07(月) 14:10:25.67ID:MtDNWdkb CreateProcess見るといろいろな指定の仕方ができそうで不安になるよね
305デフォルトの名無しさん
2020/09/07(月) 14:32:13.03ID:ibXVM4v9 >>296
そんなの使わずにWinMainの3rdパラメータ使う
そんなの使わずにWinMainの3rdパラメータ使う
306デフォルトの名無しさん
2020/09/07(月) 15:26:51.28ID:DSNLMJBI /a //b /c:"text"
この場合b無視すんの?
この場合b無視すんの?
307デフォルトの名無しさん
2020/09/07(月) 18:53:34.42ID:XlcRu9mb >>303
CWinApp::ParseCommandLine()は__argcと__argvを見ているだけだけどな
CWinApp::ParseCommandLine()は__argcと__argvを見ているだけだけどな
308デフォルトの名無しさん
2020/09/08(火) 01:38:27.47ID:BXhGoa38 質問なんですがWindowsのカレントディレクトリって
アプリ毎に持ってるものなんでしょうか?
それとも全アプリ共通なのでしょうか?
アプリ毎に持ってるものなんでしょうか?
それとも全アプリ共通なのでしょうか?
310デフォルトの名無しさん
2020/09/08(火) 01:54:21.79ID:BXhGoa38 >>309
スレッド毎に違うんですね!ありがとうございました。安心しました。
スレッド毎に違うんですね!ありがとうございました。安心しました。
311デフォルトの名無しさん
2020/09/08(火) 11:55:58.97ID:POT3YWIT プロセスごとだろ
嘘つくなよ
嘘つくなよ
312デフォルトの名無しさん
2020/09/08(火) 12:00:43.95ID:VotMLAWA この板には嘘つき朝鮮人しかいない
313デフォルトの名無しさん
2020/09/08(火) 13:00:32.46ID:HYZN+BkE >>312
自分がそうだからといって他人もそうだと思うのはよくないな
自分がそうだからといって他人もそうだと思うのはよくないな
314デフォルトの名無しさん
2020/09/08(火) 13:23:24.69ID:5CeoL0rA MSDN によれば、正しいのはプロセス毎。スレッド毎ではない。
*SetCurrentDirectory
The SetCurrentDirectory function changes the current directory for the current process.
BOOL SetCurrentDirectory(
LPCTSTR lpPathName // new directory name
);
*Remarks
Each process has a single current directory made up of two parts:
・・・
*SetCurrentDirectory
The SetCurrentDirectory function changes the current directory for the current process.
BOOL SetCurrentDirectory(
LPCTSTR lpPathName // new directory name
);
*Remarks
Each process has a single current directory made up of two parts:
・・・
315デフォルトの名無しさん
2020/09/08(火) 13:29:57.92ID:oUJlYCUI ということは、同一プロセス内の別スレッドでSetCurrentDirectoryが発行されると
自スレッドのカレントがいつの間にか変わっているということが起きるのか
自スレッドのカレントがいつの間にか変わっているということが起きるのか
316デフォルトの名無しさん
2020/09/08(火) 13:50:32.04ID:JNlu12o+ カレントディレクトリの取得なんて、グローバル変数から情報を取ってくるようなもんなので危険ってことだ
そんなもん使うな
そんなもん使うな
317デフォルトの名無しさん
2020/09/08(火) 14:09:32.72ID:5CeoL0rA >>315
もちろんそういうこと。
というより、カレントディレクトリも、広い意味で「UI」に関係したものと
考えられなくもないので、必ず Mainスレッドから取得するようにすれば、
安全と言える。絶対そうしなくてはならないわけではないが。
Window作製、グラフィック描画、マウス、キーボードからの入力なども、
Mainスレッドで行うのが原則。
これも絶対そうでなくてはならないというわけではないかも知れないが、
敢えて Subスレッドでやる意味も余り無い事が多く、Mainスレッドに限定
すれば、さまざまな危険回避のための余計なことを考えなくて済むメリットがある。
もちろんそういうこと。
というより、カレントディレクトリも、広い意味で「UI」に関係したものと
考えられなくもないので、必ず Mainスレッドから取得するようにすれば、
安全と言える。絶対そうしなくてはならないわけではないが。
Window作製、グラフィック描画、マウス、キーボードからの入力なども、
Mainスレッドで行うのが原則。
これも絶対そうでなくてはならないというわけではないかも知れないが、
敢えて Subスレッドでやる意味も余り無い事が多く、Mainスレッドに限定
すれば、さまざまな危険回避のための余計なことを考えなくて済むメリットがある。
318デフォルトの名無しさん
2020/09/08(火) 14:13:07.26ID:5CeoL0rA >>317
補足すれば、カレントディレクトリは、MS-DOS時代では、command.com
が管理していたもので、アプリごとに異なるわけではなかったはず。
というのは、カレントディレクトリを便利に変更できるツールを作りたい
場合などに、アプリローカルであれば、不便だったからだと思う。
その設計哲学や文化や習慣が、Windowsにも受け継がれる必要は有ったと思う。
Unixの環境変数なども、アプリローカルになっていたりするが、意外と不便な
事も多い。
補足すれば、カレントディレクトリは、MS-DOS時代では、command.com
が管理していたもので、アプリごとに異なるわけではなかったはず。
というのは、カレントディレクトリを便利に変更できるツールを作りたい
場合などに、アプリローカルであれば、不便だったからだと思う。
その設計哲学や文化や習慣が、Windowsにも受け継がれる必要は有ったと思う。
Unixの環境変数なども、アプリローカルになっていたりするが、意外と不便な
事も多い。
319デフォルトの名無しさん
2020/09/08(火) 14:55:05.93ID:2rsMzWV+ 何を根拠に長文をw
INT21 AH=3B の説明を読み直し要
INT21 AH=3B の説明を読み直し要
320デフォルトの名無しさん
2020/09/08(火) 18:38:57.08ID:HYNPtfS+ >>315
>自スレッドのカレントがいつの間にか変わっている
自分で管理できないスレッドなんてあるのか?
その別スレッドだって自分で作ったものだろ?
DLLとか自分で管理していないものもあるけどそれはスレッド関係ないわけだし
>自スレッドのカレントがいつの間にか変わっている
自分で管理できないスレッドなんてあるのか?
その別スレッドだって自分で作ったものだろ?
DLLとか自分で管理していないものもあるけどそれはスレッド関係ないわけだし
321デフォルトの名無しさん
2020/09/08(火) 18:48:41.38ID:FLHP/hAu DCE-RPCは電文受信すると勝手に
処理スレッドたててくれるよ
処理スレッドたててくれるよ
322デフォルトの名無しさん
2020/09/08(火) 19:34:11.85ID:oUJlYCUI >>320
別スレッドにするってことは自スレッドとの間にタイミングの束縛がない処理を任せるってことだよな
カレントディレクトリの変更がプロセス内の他のスレッドにも伝搬するということは
それはタイミングの束縛が生じうるってことだろ
つまり、それが困るなら別スレッドにしてはならない処理内容ってことで
そこの判断こそが「自分で管理」ということだ
別スレッドにするってことは自スレッドとの間にタイミングの束縛がない処理を任せるってことだよな
カレントディレクトリの変更がプロセス内の他のスレッドにも伝搬するということは
それはタイミングの束縛が生じうるってことだろ
つまり、それが困るなら別スレッドにしてはならない処理内容ってことで
そこの判断こそが「自分で管理」ということだ
323デフォルトの名無しさん
2020/09/08(火) 19:36:02.20ID:HYNPtfS+ ちょっと何言っているのかわからない
324デフォルトの名無しさん
2020/09/08(火) 19:41:07.94ID:oUJlYCUI そうかい、それは残念だね
325デフォルトの名無しさん
2020/09/08(火) 22:47:13.26ID:txiCBqFi スレッドがお互いを信用できないとか、そんな羅生門みたいなプログラムは嫌だなぁ。
326デフォルトの名無しさん
2020/09/08(火) 23:06:57.38ID:bOnMHAua マジで地獄の召還かもな
327デフォルトの名無しさん
2020/09/09(水) 00:11:58.92ID:VoppH/up 指定フォルダ以下のファイルをすべて処理するプログラムで
サブフォルダごとにスレッドを起動してみよう
サブフォルダごとにスレッドを起動してみよう
328デフォルトの名無しさん
2020/09/09(水) 09:51:28.66ID:9MEEjZyT フォルダ間移動ですね判ります
329デフォルトの名無しさん
2020/09/09(水) 11:03:42.50ID:w9YsWEn5 そんなバッチファイルみたいなアルゴリズムでカレントディレクトリ移動しながらマルチスレッドをやるとかがそもそも迂闊だよな。
330デフォルトの名無しさん
2020/09/10(木) 08:55:55.87ID:YCiClA3r331デフォルトの名無しさん
2020/09/10(木) 08:57:16.11ID:YCiClA3r タスクマネージャー開けばわかるけど、今時のWebブラウザ(具体的にはEdgeやFirefox等)はたくさんの子プロセスを動かしている。
332デフォルトの名無しさん
2020/09/10(木) 13:46:51.31ID:+JaTYUbA 話の流れを読めない奴は黙ってりゃいいのに…
333デフォルトの名無しさん
2020/09/20(日) 07:50:00.62ID:sAMwu2sI sse2までが必須になったのはいつだったか覚えませんか
win-7の途中くらい?
win-7の途中くらい?
334デフォルトの名無しさん
2020/09/20(日) 08:05:49.82ID:WRa/xy2u335デフォルトの名無しさん
2020/09/20(日) 08:21:02.12ID:sAMwu2sI >>334
ありがとうございます
ありがとうございます
336デフォルトの名無しさん
2020/09/22(火) 08:18:54.27ID:EoOf3jnh win32apiを使っている人は、普段の文字コードは
stringとwchar_tを使っているのでしょうか。
stringとwchar_tを使っているのでしょうか。
337デフォルトの名無しさん
2020/09/22(火) 08:26:19.44ID:bhDrmv5D LPWSTR
338デフォルトの名無しさん
2020/09/22(火) 12:46:05.64ID:EoOf3jnh ありがとうございます。
調べてみます。
stringを使いたいのに、win32apiは変換が必要?なので躊躇しています。
調べてみます。
stringを使いたいのに、win32apiは変換が必要?なので躊躇しています。
339デフォルトの名無しさん
2020/09/22(火) 13:48:40.94ID:YDb2rcNJ CreateProcessのユニコード版(W)の第2引数がリテラルだとうまくいかない件
これはハマったわ。
CreateProcess(TCHAR)でメモ帳起動させるサンプルで
_T("C:\\Windows\\notepad.exe")を直接与えてもCとしてコンパイルするとうまくいってて
c++にしたら起動しなくなったが、エラーが出ないから全然気づかなかったわ
ネットのCreateProcessのサンプルも普通に与えてるしなあ
考えてみれば実運用でこの部分は文字リテラル決め打ちにめったにならないから
知らずに回避してることも多いのかも
これはハマったわ。
CreateProcess(TCHAR)でメモ帳起動させるサンプルで
_T("C:\\Windows\\notepad.exe")を直接与えてもCとしてコンパイルするとうまくいってて
c++にしたら起動しなくなったが、エラーが出ないから全然気づかなかったわ
ネットのCreateProcessのサンプルも普通に与えてるしなあ
考えてみれば実運用でこの部分は文字リテラル決め打ちにめったにならないから
知らずに回避してることも多いのかも
341デフォルトの名無しさん
2020/09/22(火) 14:16:32.73ID:yrkD80aj そもそもMSDNに書いてるし
342デフォルトの名無しさん
2020/09/22(火) 14:16:37.87ID:5Q3AK6nV LPTSTR で受け取ってるから書き換え可能なメモリアドレスでないとあかんのじゃないのん?
リテラルは const で書き換え不可だし 一回変数経由しないと
リテラルは const で書き換え不可だし 一回変数経由しないと
343デフォルトの名無しさん
2020/09/22(火) 14:22:15.75ID:uF0JvJPV 自転車🚴のような絵文字をstd::stringで持つにはSJISではなくUTF-8として保持しておいて、
画面などの出力する直前にUTF-8からUTF-16に変換してUnicode版出力関数を呼び出す必要がある。
画面などの出力する直前にUTF-8からUTF-16に変換してUnicode版出力関数を呼び出す必要がある。
344デフォルトの名無しさん
2020/09/22(火) 15:28:51.96ID:J6Z/5nZW >>339
>lpCommandLine
>実行するコマンドライン。
>この文字列の最大長は、Unicodeで終了するnull文字を含めて32,767文字です。 lpApplicationNameがNULLの場合、lpCommandLineのモジュール名の部分はMAX_PATH文字に制限されます。
>この関数のUnicodeバージョンであるCreateProcessWは、この文字列の内容を変更できます。
>したがって、このパラメーターを読み取り専用メモリー(const変数やリテラル文字列など)へのポインターにすることはできません。
>このパラメーターが定数文字列の場合、関数はアクセス違反を引き起こす可能性があります。
>lpCommandLine
>実行するコマンドライン。
>この文字列の最大長は、Unicodeで終了するnull文字を含めて32,767文字です。 lpApplicationNameがNULLの場合、lpCommandLineのモジュール名の部分はMAX_PATH文字に制限されます。
>この関数のUnicodeバージョンであるCreateProcessWは、この文字列の内容を変更できます。
>したがって、このパラメーターを読み取り専用メモリー(const変数やリテラル文字列など)へのポインターにすることはできません。
>このパラメーターが定数文字列の場合、関数はアクセス違反を引き起こす可能性があります。
345デフォルトの名無しさん
2020/09/25(金) 09:12:14.46ID:3+LaQyVV >>339
argvに渡すから非constだぞって話か
argvに渡すから非constだぞって話か
346デフォルトの名無しさん
2020/09/25(金) 10:57:09.24ID:4ovx1Tzj 非 const の引数に const リテラル与えたら
コンパイルエラーにならないか?
コンパイルエラーにならないか?
347デフォルトの名無しさん
2020/09/25(金) 11:44:47.33ID:cdg8K9Zm それがエラーになるなら固定文字列を渡せなくなるやん
348デフォルトの名無しさん
2020/09/25(金) 12:18:15.76ID:3+LaQyVV >>346
C++11以後、そうなった筈だけどcl.exeはversion 19.27.29111でも通す(もち/W4で)
C++11以後、そうなった筈だけどcl.exeはversion 19.27.29111でも通す(もち/W4で)
349デフォルトの名無しさん
2020/09/25(金) 18:33:43.19ID:M9uVftQk Win32API全部作り直してほしい
くだらない部分で人間の時間を消費しすぎだろw
くだらない部分で人間の時間を消費しすぎだろw
350デフォルトの名無しさん
2020/09/25(金) 18:41:06.52ID:14hC/BSs351デフォルトの名無しさん
2020/09/25(金) 18:57:00.47ID:3+LaQyVV >>350
御意
御意
>>349
どんなところがダメなんでしょうか?
どんなところがダメなんでしょうか?
353デフォルトの名無しさん
2020/09/25(金) 21:58:40.78ID:62tG58VZ WINDK使ってサブシステム毎作り直せば良いのに
354蟻人間 ◆T6xkBnTXz7B0
2020/09/25(金) 22:05:15.01ID:ogXn8IQh コンパイルできるXPのソースが漏れてるらしい。
355デフォルトの名無しさん
2020/09/27(日) 00:13:50.58ID:Tq9/SM8I356デフォルトの名無しさん
2020/09/28(月) 13:45:59.88ID:A9tQ9Jdm 7もお漏らしして欲しいね
357デフォルトの名無しさん
2020/09/28(月) 13:53:48.40ID:n9LyrBhU 未だに使ってる奴が死ぬだけ
358デフォルトの名無しさん
2020/09/28(月) 14:33:51.78ID:PAQov7G9 海賊版天国の中国死ぬの?
359デフォルトの名無しさん
2020/09/28(月) 15:10:38.57ID:q9HWvXQA 穴がさらにいっぱい見つかって攻撃方法が増えるんだから自明だろ
誰が対応するんや
誰が対応するんや
360デフォルトの名無しさん
2020/09/28(月) 16:14:01.27ID:n0MW1Etw 久しぶりに Windows Update したら
Edge レイプされてポカーン
Edge レイプされてポカーン
361デフォルトの名無しさん
2020/09/28(月) 16:42:43.52ID:8K79+FWG スカ ポン タン
362デフォルトの名無しさん
2020/09/28(月) 16:51:28.28ID:QxfbhGyV > Edge レイプ
うまい!
うまい!
363デフォルトの名無しさん
2020/09/29(火) 21:54:15.29ID:6fvRDqpi _beginthreadexだけは許さんよ
もっとも醜悪な名前だわ
もっとも醜悪な名前だわ
364デフォルトの名無しさん
2020/09/29(火) 21:58:00.70ID:LdxVDSVq MJD?
365デフォルトの名無しさん
2020/10/01(木) 23:20:42.73ID:rwmZapHm >>363 すれち
366蟻人間 ◆T6xkBnTXz7B0
2020/10/18(日) 23:53:11.43ID:cRjbazHq http://eternalwindows.jp にはWin32の核心部分が載ってる。参考になる記事だ。
367デフォルトの名無しさん
2020/10/27(火) 20:43:03.29ID:rXCQsaV4 GetOpenFileName で初期ディレクトリとして OPENFILENAME の lpstrInitialDir に
任意のディレクトリを指定してファイルを開くダイアログを開いていて、おおよそ
意図した通りに動いているのですが、"C:\Users\Public\Documents"を指定したときだけ
初期ディレクトリが現在使用中ユーザーのドキュメントディレクトリになってしまいます
アクセス権のない他のユーザーのドキュメントディレクトリを指定したのなら
このような動作は理解できるのですが、パブリックディレクトリでこのように
なってしまうのは仕様でしょうか?
任意のディレクトリを指定してファイルを開くダイアログを開いていて、おおよそ
意図した通りに動いているのですが、"C:\Users\Public\Documents"を指定したときだけ
初期ディレクトリが現在使用中ユーザーのドキュメントディレクトリになってしまいます
アクセス権のない他のユーザーのドキュメントディレクトリを指定したのなら
このような動作は理解できるのですが、パブリックディレクトリでこのように
なってしまうのは仕様でしょうか?
368デフォルトの名無しさん
2020/10/28(水) 11:43:37.22ID:Mf8tEr2f SHGetSpecialFolderPath
369デフォルトの名無しさん
2020/10/28(水) 17:45:50.04ID:DoZwgPmf パブリックディレクトリの取得方法を聞いているわけではないのですが
"C:\Users\Public\Documents" は存在する有効なパスです
"C:\Users\Public\Documents" は存在する有効なパスです
370デフォルトの名無しさん
2020/10/28(水) 18:30:52.56ID:Mf8tEr2f 再現した
C:\Users\Public
ならちゃんと public が開くが
C:\Users\Public\Documents
にすると自分のアカウントに行ってしまう
C:\Users\Public
ならちゃんと public が開くが
C:\Users\Public\Documents
にすると自分のアカウントに行ってしまう
371デフォルトの名無しさん
2020/10/28(水) 18:36:57.63ID:Mf8tEr2f あと存在しないディレクトリを与えると
C:\Users\自分のアカウント\Documents
が開いた
C:\Users\自分のアカウント\Documents
が開いた
372デフォルトの名無しさん
2020/10/28(水) 18:41:30.63ID:Mf8tEr2f lpstrInitialDir
The initial directory. The algorithm for selecting the initial directory varies on different platforms.
Windows 7:
If lpstrInitialDir has the same value as was passed the first time the application used an Open or Save As dialog box, the path most recently selected by the user is used as the initial directory.
Otherwise, if lpstrFile contains a path, that path is the initial directory.
Otherwise, if lpstrInitialDir is not NULL, it specifies the initial directory.
If lpstrInitialDir is NULL and the current directory contains any files of the specified filter types, the initial directory is the current directory.
Otherwise, the initial directory is the personal files directory of the current user.
Otherwise, the initial directory is the Desktop folder.
Windows 2000/XP/Vista:
If lpstrFile contains a path, that path is the initial directory.
Otherwise, lpstrInitialDir specifies the initial directory.
Otherwise, if the application has used an Open or Save As dialog box in the past, the path most recently used is selected as the initial directory. However, if an application is not run for a long time, its saved selected path is discarded.
If lpstrInitialDir is NULL and the current directory contains any files of the specified filter types, the initial directory is the current directory.
Otherwise, the initial directory is the personal files directory of the current user.
Otherwise, the initial directory is the Desktop folder.
The initial directory. The algorithm for selecting the initial directory varies on different platforms.
Windows 7:
If lpstrInitialDir has the same value as was passed the first time the application used an Open or Save As dialog box, the path most recently selected by the user is used as the initial directory.
Otherwise, if lpstrFile contains a path, that path is the initial directory.
Otherwise, if lpstrInitialDir is not NULL, it specifies the initial directory.
If lpstrInitialDir is NULL and the current directory contains any files of the specified filter types, the initial directory is the current directory.
Otherwise, the initial directory is the personal files directory of the current user.
Otherwise, the initial directory is the Desktop folder.
Windows 2000/XP/Vista:
If lpstrFile contains a path, that path is the initial directory.
Otherwise, lpstrInitialDir specifies the initial directory.
Otherwise, if the application has used an Open or Save As dialog box in the past, the path most recently used is selected as the initial directory. However, if an application is not run for a long time, its saved selected path is discarded.
If lpstrInitialDir is NULL and the current directory contains any files of the specified filter types, the initial directory is the current directory.
Otherwise, the initial directory is the personal files directory of the current user.
Otherwise, the initial directory is the Desktop folder.
373デフォルトの名無しさん
2020/10/28(水) 19:43:23.12ID:RpzUgl/d comdlg32.dllのコモンダイアログ関係は >>367 のような想定外の動きをしたり
右クリックのコンテキストメニューで存在しない32bitフォルダを探しに行ったりと色々不具合を抱えてる
明らかにメンテされてない
ダイアログ内のListViewで開発者の想定外の事ができたりするから許されるなら使わない方が良い
右クリックのコンテキストメニューで存在しない32bitフォルダを探しに行ったりと色々不具合を抱えてる
明らかにメンテされてない
ダイアログ内のListViewで開発者の想定外の事ができたりするから許されるなら使わない方が良い
374デフォルトの名無しさん
2020/10/28(水) 20:10:50.98ID:xBovneds コモンコントロール使ってるアプリに使うなと言ってしまうと、開発プラットフォームから見直さないとダメ案件では
375デフォルトの名無しさん
2020/10/29(木) 10:55:01.44ID:XU4TLDfA376デフォルトの名無しさん
2020/10/29(木) 11:27:15.51ID:wwhOrfBp XP 以前と 7 で違うんだから
10 ならさらに変更されたとかありそう
10 ならさらに変更されたとかありそう
377デフォルトの名無しさん
2020/10/29(木) 11:29:27.07ID:wwhOrfBp >コモンコントロール部分だけ差し替えが可能なもの
秀丸ファイラーのdllって無かったかな
秀丸ファイラーのdllって無かったかな
378デフォルトの名無しさん
2020/10/29(木) 13:09:04.28ID:rgNs+gPO IFileDialog使えって話でもないのん?
379デフォルトの名無しさん
2020/11/12(木) 11:33:46.92ID:Twa29Hwt こんにちは、お世話になります。DLLファイルの削除について質問です。
プログラム終了時にロードしたDLLファイルを削除したいのですが、
場合により削除できたりできなかったりします。
実際にはもう少し複雑ですが、大まかな処理の手順を示します。
1: inst=LoadLibrary("tmp.dll")
2: hook=SetWindowsHookEx(...)
3: ...あれやこれやの処理...
4: ret1=UnhookWindowsHookEx(hook)
5: ret2=FreeLibrary(inst)
6: ret3=DeleteFile("tmp.dll")
処理部[3:]は、所望の通り動作していて、inst,hook共に正常値のよ
うです。アプリケーション終了時に[4:]以降の処理を行います。ret1,
ret2は成功値を返すのですが、ret3は失敗し、GetLastErrorの値は5で
ERROR_ACCESS_DENIED「アクセス拒否」を返してきます。アプリ
ケーション終了後はプロンプトからのDELコマンドに成功します。
処理部[3:]をスキップすると、ret3は成功値を返しファイルもただ
しく削除されています。
FreeLibraryだけでは、DLLを開放してくれないのかと思っていますが、
少し手つまりになっています。当方、日曜プログラマレベルの知識で
す。質問などに不備等ございましたらご指摘ください。
(環境)Win10-64bit,Vs2019Comm,VC++
プログラム終了時にロードしたDLLファイルを削除したいのですが、
場合により削除できたりできなかったりします。
実際にはもう少し複雑ですが、大まかな処理の手順を示します。
1: inst=LoadLibrary("tmp.dll")
2: hook=SetWindowsHookEx(...)
3: ...あれやこれやの処理...
4: ret1=UnhookWindowsHookEx(hook)
5: ret2=FreeLibrary(inst)
6: ret3=DeleteFile("tmp.dll")
処理部[3:]は、所望の通り動作していて、inst,hook共に正常値のよ
うです。アプリケーション終了時に[4:]以降の処理を行います。ret1,
ret2は成功値を返すのですが、ret3は失敗し、GetLastErrorの値は5で
ERROR_ACCESS_DENIED「アクセス拒否」を返してきます。アプリ
ケーション終了後はプロンプトからのDELコマンドに成功します。
処理部[3:]をスキップすると、ret3は成功値を返しファイルもただ
しく削除されています。
FreeLibraryだけでは、DLLを開放してくれないのかと思っていますが、
少し手つまりになっています。当方、日曜プログラマレベルの知識で
す。質問などに不備等ございましたらご指摘ください。
(環境)Win10-64bit,Vs2019Comm,VC++
380デフォルトの名無しさん
2020/11/12(木) 11:49:17.96ID:Twa29Hwt 追記
2: hook=SetWindowsHookEx(WH_KEYBOARD_LL,proc,inst,0)
フックにDLLインスタンスが絡みます。
2: hook=SetWindowsHookEx(WH_KEYBOARD_LL,proc,inst,0)
フックにDLLインスタンスが絡みます。
381デフォルトの名無しさん
2020/11/12(木) 11:54:18.15ID:fy6Pt/Zo 1〜2をやるボタンAと
4〜5をやるボタンBを配置して
ボタンBを押してから6やってみた?
4〜5をやるボタンBを配置して
ボタンBを押してから6やってみた?
382デフォルトの名無しさん
2020/11/12(木) 12:09:45.05ID:Twa29Hwt >>381 ありがと
いや、そういう処理の分解はやってないです。
ただ、[5:]と[6:]の間にSleep(10000)を挟んでみた。OSが手放してくれる時
間?が必要かと思って・・・でも、そういう事じゃないみたい。
ボタンの配置はすぐには難しいですが(汗)。でも、とりあえず、物は試しで
ユーザの入力待ちを挟んでみます。getch()あたりで・・・。
いや、そういう処理の分解はやってないです。
ただ、[5:]と[6:]の間にSleep(10000)を挟んでみた。OSが手放してくれる時
間?が必要かと思って・・・でも、そういう事じゃないみたい。
ボタンの配置はすぐには難しいですが(汗)。でも、とりあえず、物は試しで
ユーザの入力待ちを挟んでみます。getch()あたりで・・・。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国側が首相答弁の撤回要求、日本側拒否★2 [夜のけいちゃん★]
- 債券・円・株「トリプル安」に…長期金利1.755%まで上昇、円は対ユーロで史上最安値 [蚤の市★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★5 [ぐれ★]
- 【中国外務省】日中関係悪化は高市氏に責任と名指しで非難… ★6 [BFU★]
- 映画「鬼滅の刃」の興行収入急減、日本行き航空券大量キャンセル…中国メディア報道 [蚤の市★]
- 【音楽】Perfume・あ~ちゃんの結婚相手「一般男性」は吉田カバンの社長・吉田幸裕氏(41) 高身長で山本耕史似 [Ailuropoda melanoleuca★]
- 【高市悲報】日経、株安円安止まらない😭ああ…あ… [359965264]
- ホテル業界、高市のせいで中国から大量キャンセル 「大変厳しい状態。一刻も早い収束を願います」 [271912485]
- 👩「諸事情でミーアキャット飼えなくなったから誰か20万以上で買って😢」 [394133584]
- 【正論】玉木雄一郎「高市さんの答弁は米軍が攻撃を受けた場合を前提としており、撤回するのは難しい」特定野党を完全論破 [519511584]
- 日本メディア「外務省局長が頭下げてる画像が拡散されているのは中国のプロパガンダ!」日本メディアも使いまくってるのに [624898991]
- 鈴木農水大臣「コメの価格が上がってるのは新米に切り替わったからです」 [256556981]
