WindowsAPI

RasEntryDlg

RasEntryDlgは、VPNやダイアルアップ接続エントリーの作成・編集ダイアログを表示する・・・。RasEntryDlg 関数今回は、VPN接続のためにRasEntryDlgで電話帳エントリーの作成を行う・・・。今回はWin32プロジェクト・・・。RasEntryDlg.cppを追加したら、ras…

ServiceMain

今回はWindowsのシステムサービスを作る・・・。ServiceMainは、このサービスのメイン処理を担う部分・・・。ServiceMain 関数まず、コンソールアプリケーションで作成・・・。 (Win32プロジェクトでもできるが、コンソールアプリだと疑似サービスを作成して…

CreateNamedPipe

Windowsで名前付きパイプを作成するには、CreateNamedPipeを使う・・・。CreateNamedPipe 関数名前なしパイプと比べると、あそこまで大変ではない・・・。CreateNamedPipeプロジェクトにCreateNamedPipe.cppを追加し、CreateNamedPipeで"\\.\pipe\TEST"とい…

CreatePipe

Windowsで名前なしパイプを作成するには、CreatePipeを使う・・・。CreatePipe 関数WindowsAPIにはforkが無いし、パイプの扱い方もUNIXとは違うので、パイプによるプロセス間通信の実装は結構難しい・・・。C言語CreatePipeメモ(Hishidama's Windows C "Crea…

ReportEvent

ReportEventは、イベントログにメッセージを書き込む・・・。ReportEvent 関数イベントログの出力はちゃんとやろうとすると結構面倒なので、今回は割と単純にログ出力するだけ・・・。まず、TCHAR *型の文字列バッファポインタptszTextを宣言し、newでメモリ…

RegCreateKey

RegCreateKeyは、指定のレジストリキー(regedit.exeで見るとフォルダの部分)を作成する・・・。RegCreateKey 関数 RegCreateKey function (Windows)互換性のために残されているだけなので、RegCreateKeyExを推奨するが、とりあえずキーを作成してみる・・・。…

WlanEnumInterfaces

WiFi関連の操作をしたい場合は、Native WiFi APIを使う・・・。Native Wifi (Windows) Wireless LAN API - 目次 - 汁ごはん中でも、WlanEnumInterfacesは、無線LANインターフェース情報の一覧を列挙する・・・。 (Windows XP3からなので、場合によってはWind…

GetInterfaceInfo

ネットワークインターフェース情報を取得するには、IPヘルパーAPI(iphlpapi.lib)を使う・・・。 GetInterfaceInfoは、ネットワークインターフェースを取得する・・・。GetInterfaceInfo function (Windows)といっても、これはインタフェースの名前とインデッ…

CreateRectRgn

これまで、図形を描画するのにRectangleのような描画APIを使ってきた・・・。 他にも楕円を描くEllipseや、多角形を描くPolygonとかがあるが、この図形そのものをハンドルを持つ1つのオブジェクトとして表示する方法もある・・・。 画面上に置けるこの図形の…

RegisterClassEx

RegisterClassExは、ウィンドウクラスを登録するWindowsAPI・・・。RegisterClassEx 関数この関数で登録する構造体はWNDCLASSEXとなる・・・。 WNDCLASSとの違いは、構造体のサイズを指定するところと、大きなアイコンとは別に小さなアイコンを設定できると…

CreateWindowEx

CreateWindowExは、ウィンドウを作成するWindowsAPI・・・。CreateWindowEx 関数CreateWindowとの違いは、第1引数に拡張スタイルを指定できることである・・・。今回は、メインウィンドウの中に、"STATIC"ウィンドウクラスの子ウィンドウを作成し、その子ウ…

CommandLineToArgvW

CommandLineToArgvWは、GetCommandLineなどで取得した1つのコマンドライン引数文字列を分解して、複数の引数文字列配列へのポインタや、引数の数を返すWindowsAPI・・・。CommandLineToArgvW 関数GetCommandLineで取得した引数文字列は、スペースを含んだ生…

GetCommandLine

GetCommandLineは、コマンドライン引数文字列を取得するWindowsAPI・・・。GetCommandLine 関数_tWinMain関数のlpCmdLineにもコマンドライン引数文字列は格納されているが、実行ファイル名が含まれていない・・・。 実行ファイル名を含めたコマンドライン引…

LoadBitmap

LoadBitmapは、ビットマップをロードするWindowsAPI・・・。LoadBitmap 関数LoadImageよりもレガシーで、こちらはリソース登録したビットマップやシステム既定のビットマップしか読み込めず、ビットマップファイルからは読み込めない・・・。 これも互換性の…

BITMAP

ビットマップをリソースに登録することで、実際のビットマップファイルがなくても、実行ファイルに埋め込まれたビットマップファイルをロードして表示などが出来る・・・。resource.hは、BITMAP.rcは、とする・・・。 でbitmap1.bmpをBITMAP.rcと同じ場所に…

OpenEvent

OpenEventは、イベントを開くWindowsAPI・・・。OpenEvent 関数今度は、とある処理が行われたら、手動でシグナル状態や非シグナル状態にすることで、同期を取る方法・・・。イベント名は"Event"とする・・・。手動で非シグナル状態に戻すので、イベントを作…

OpenSemaphore

OpenSemaphoreは、セマフォを開くWindowsAPI・・・。OpenSemaphore 関数クリティカルセクション、ミューテックスは1つしか同時に実行できなかったが、 セマフォは指定した数までは同時に実行でき、それを超えるとどれかのスレッドが終わらない限り待つという…

OpenMutex

OpenMutexは、ミューテックスを開くWindowsAPI・・・。OpenMutex 関数pthreadのミューテックは、スレッド間でミューテックスオブジェクトを共有し、それらをロックして使うような形だった・・・。 Win32スレッドのミューテックスは、名前をキーにしてミュー…

EnterCriticalSection

EnterCriticalSectionは、排他制御する領域の開始位置であることを示すWindowsAPI・・・。EnterCriticalSection 関数クリティカルセクションは、phtreadにおけるミューテックスと同じような使い方・・・。 CRITICAL_SECTION型変数をスレッド間で共有し、ある…

WaitForMultipleObjects

WaitForMultipleObjectsは、複数のオブジェクトがシグナル状態になるまで待つWindowsAPI・・・。WaitForMultipleObjects 関数第1引数にスレッドの数、第2引数にスレッドハンドル配列・・・。 すべてのスレッドがシグナル状態になった時に待ち状態を解除した…

WaitForSingleObject

WaitForSingleObjectは、指定されたオブジェクトがシグナル状態になるまで待つWindowsAPI・・・。WaitForSingleObject 関数ここでいうオブジェクトは、スレッドに限らず、プロセスやイベントなどさまざまなものがある・・・。 シグナル状態というは、スレッ…

TerminateThread

TerminateThreadは、スレッドを強制終了させるWindowsAPI・・・。TerminateThread 関数TerminateProcess同様、緊急時に使うものなので、滅多な事では使ってはいけない・・・。1秒ごとに出力、それを5回繰り返すので、5秒は待っていなければいけないが、今回…

ExitThread

ExitThreadは、スレッドを終了させるWindowsAPI・・・。ExitThread 関数returnで終了コードを指定してもスレッドは終了するが、スレッド終了関数としてExitThreadもある・・・。ExitThreadに差し替えて、引数に終了コードを渡しただけ・・・。 i = 1, m_iNo …

GetExitCodeThread

GetExitCodeThreadは、スレッドの終了コードを取得するWindowsAPI・・・。GetExitCodeThread 関数これで終了コードを取得する・・・。戻り値の終了コードをスレッド番号m_iNoにしておく・・・。m_iNoにスレッド番号をセットして、CreateThread・・・。 戻り…

ThreadProc

スレッドに渡す関数ThreadProcには、引数を渡すことももちろんできる・・・。ThreadProc 関数引数の受け渡しは、LPVOID型(void *型ポインタ)を介して行われるので、THREAD_PARAMというパラメータを集めた構造体を用意しておく・・・。 メンバは、スレッド番…

CreateThread

CreateThreadは、スレッドを生成するWindowsAPI・・・。CreateThread 関数第1引数はNULL、第2引数は0、でおいといて、第3引数にスレッドで実行する処理関数(pthreadのstart_routine)、第4引数にその関数に渡す引数、第5引数にオプションフラグ、第6引数にス…

ShellExecute

ShellExecuteは、指定されたファイルに指定されたコマンドを実行するWindowsAPI・・・。ShellExecute 関数CreateProcessはプロセスを生成するという意味合いが強いが、こちらはコマンドプロンプトでコマンドを実行するという意味合いが強い・・・。 なので、…

TerminateProcess

TerminateProcessは、プロセスを強制終了させるWindowsAPI・・・。TerminateProcess 関数このAPIは、緊急時に使うもので、滅多な事では使ってはいけない・・・。 (正常終了ではないので、元のプロセスのメモリや、リソースなどがリークする可能性があるため…

GetExitCodeProcess

GetExitCodeProcessは、プロセスの終了コードを取得するWindowsAPI・・・。GetExitCodeProcess 関数これでSubProcessの終了コードを取得する・・・。SubProcess.cppでは、ExitProcess(10)で終了コードを10としている・・・。 30秒で終了する・・・。MainProc…

ExitProcess

ExitProcessは、プロセスを終了するWindowsAPI・・・。ExitProcess 関数引数には終了コードを指定する・・・。 きちんとした形で内側からプロセスを終了する場合にこれを使う・・・。MainProcessは前回と変わらない・・・。一方、SubProcessは、"SubProcess …