GetCurrentDirectory

GetCurrentDirectoryは、このプロセスにおける現在のディレクトリパスを取得する。

GetCurrentDirectory 関数 (winbase.h) - Win32 apps | Microsoft Learn

shlwapi.libではなく、kernel32.libの関数なので、shlwapi.libのリンクは不要。
GetCurrentDirectory.cppで、

このように書く。
デバッガ実行すると、プロジェクトファイルのあるディレクトリをカレントディレクトリにしてしまうので、debugディレクトリまたはreleaseディレクトリの中のexeを直接実行。

確かにこの場合は、releaseディレクトリがカレントディレクトリになってる。
確かにこの場合は、releaseディレクトリがカレントディレクトリになってる。

確かにこの場合は、releaseディレクトリがカレントディレクトリになってる。

Sample/winapi/GetCurrentDirectory/GetCurrentDirectory/src/GetCurrentDirectory at master · bg1bgst333/Sample · GitHub

from句

C#LINQは、Enumerable.WhereやEnumerable.Selectなど、メソッドはやっていたが、それ以前の基本的な句に関してはやってなかったので、やっていく。

クエリ式の基本 (C# での LINQ) | Microsoft Learn

LINQは、基本的にfrom~in~で始まり、select~またはgroup~で終わる。

以前は空プロで作ってたのか。
以前は空プロで作ってたのか。

以前は空プロで作ってたのか。

空プロの場合はSystem.Coreを参照しないといけないのか。
空プロの場合はSystem.Coreを参照しないといけないのか。

空プロの場合はSystem.Coreを参照しないといけないのか。
MainClass.csで、

クラスや構造体じゃなくて、intの配列を列挙してみる。
arrayからeを取り出すのだが、クラスとかだとselectにはプロパティとかの要素名を指定するが、intとかだとそのままeそのものを指定する。

結果はこうなった。
結果はこうなった。

結果はこうなった。
eそのものが要素の配列が列挙された。

Sample/cs/from/from/src/from at master · bg1bgst333/Sample · GitHub

GetFullPathName

GetFullPathNameで、指定された相対パスから絶対パスを取得する。

GetFullPathNameW 関数 (fileapi.h) - Win32 apps | Microsoft Learn

GetFullPathName.cppで、

相対パスなら、GetFullPathNameで絶対パスとファイル名部分を取得する。

"."だとreleaseフォルダ、".."だとその上のGetFullPathNameフォルダの絶対パスなどが取得できる。
"."だとreleaseフォルダ、".."だとその上のGetFullPathNameフォルダの絶対パスなどが取得できる。

"."だとreleaseフォルダ、".."だとその上のGetFullPathNameフォルダの絶対パスなどが取得できる。

Sample/winapi/GetFullPathName/GetFullPathName/src/GetFullPathName at master · bg1bgst333/Sample · GitHub

PathIsRelative

PathIsRelativeは、指定されたパスが相対パスかどうかをチェックする。

PathIsRelativeW 関数 (shlwapi.h) - Win32 apps | Microsoft Learn

PathIsRelative.cppで、

argv[1]をチェックする。

"C:\"から始まるtext1.txtは絶対パス
"C:\"から始まるtext1.txtは絶対パス

"C:\"から始まるtext1.txtは絶対パス
"."や".."は相対パスと判定された。

Sample/winapi/PathIsRelative/PathIsRelative/src/PathIsRelative at master · bg1bgst333/Sample · GitHub

PathIsDirectory

PathIsDirectoryは、指定されたパスがディレクトリかどうかチェックする。

PathIsDirectoryW 関数 (shlwapi.h) - Win32 apps | Microsoft Learn

PathIsDirectory.cppで、

PathFileExistsの判定の後に、PathIsDirectoryの判定もする。

text1.txtに加えて、ディレクトリtestdir、拡張子のないファイルunknownを用意。
text1.txtに加えて、ディレクトリtestdir、拡張子のないファイルunknownを用意。

text1.txtに加えて、ディレクトリtestdir、拡張子のないファイルunknownを用意。

結果はこう。
結果はこう。

結果はこう。
text1.txtは、ファイルだが、ディレクトリではない。
testdirは、ファイルとして判定され、なおかつディレクトリである。
unknownは拡張子がないが、ファイルであり、ディレクトリではない。

Sample/winapi/PathIsDirectory/PathIsDirectory/src/PathIsDirectory at master · bg1bgst333/Sample · GitHub

PathFileExists

PathFileExistsで、指定のパスにファイルが存在するかチェックする。

PathFileExistsA 関数 (shlwapi.h) - Win32 apps | Microsoft Learn

PathFileExists.cppで、

コマンドライン引数のargv[1]に渡したファイルパス文字列を、PathFileExistsに渡して判定。

シェルAPIなので、shlwapi.libを追加。
シェルAPIなので、shlwapi.libを追加。

シェルAPIなので、shlwapi.libを追加。

text1.txtというファイルを置いておく。
text1.txtというファイルを置いておく。

text1.txtというファイルを置いておく。

text1.txtのパスは存在するので"Exist"、text2.txtは存在しないので"Not exist"。
text1.txtのパスは存在するので"Exist"、text2.txtは存在しないので"Not exist"。

text1.txtのパスは存在するので"Exist"、text2.txtは存在しないので"Not exist"。

Sample/winapi/PathFileExists/PathFileExists/src/PathFileExists at master · bg1bgst333/Sample · GitHub

GetFocus

GetFocusで、フォーカスを取得したウィンドウのハンドルを取得できる。

GetFocus 関数 (winuser.h) - Win32 apps | Microsoft Learn

GetFocus.rcで、

Item8, Item8-1追加。
GetFocus.cppで、

GetFocusで取得したハンドルが、hEdit1と同じなら"Edit1"、hEdit2と同じなら"Edit2"と表示。

Edit1にフォーカス
Edit1にフォーカス

Edit1にフォーカス。

Item8-1を選択
Item8-1を選択

Item8-1を選択。

"Edit1"と表示
"Edit1"と表示

"Edit1"と表示。

Edit2にフォーカス
Edit2にフォーカス

Edit2にフォーカス。

Item8-1を選択
Item8-1を選択

Item8-1を選択。

"Edit2"と表示
"Edit2"と表示

"Edit2"と表示。

Sample/winapi/GetFocus/GetFocus/src/GetFocus at master · bg1bgst333/Sample · GitHub