using System; using System.Collections.Generic; public static class Program { public static void Swap<T>(ref T a, ref T b) { T temp = a; a = b; b = temp; } public static void DownHeap<T>(T[] a, Int32 left, Int32 right, Comparison<T> comparison) { T</t></t></t>…
using System; using System.Collections.Generic; public static class MergeSortAlgorithm<T> { private static void Merge(T[] a, T[] b, T[] c, Comparison<T> comparison) { Int32 pa = 0; Int32 pb = 0; Int32 pc = 0; while (pa < a.Length && pb < b.Lengt</t></t>…
using System; using System.Collections.Generic; public static class Program { enum Flag { Continue, Break }; public static void CombSort<T>(T[] arr, Comparison<T> comparison) { Int32 gap = arr.Length; Flag flag = Flag.Continue; while (flag == Fl</t></t>…
using System; using System.Collections.Generic; public static class Program { public static void ShakerSort<T>(T[] arr, Comparison<T> comparison) { Int32 i, k, head, tail; T hold; head = 0; tail = arr.Length - 1; k = head; while (head < tail) { </t></t>…
using System; using System.Collections.Generic; public static class Program { public static void BinaryInsertionSort<T>(T[] arr, Comparison<T> comparison) { for (Int32 i = 1; i < arr.Length; i++) { T n = arr[i]; Int32 left = 0; Int32 right = i; </t></t>…
Win32APIの関数呼び出し後に、GetLastError関数を呼び出してエラーコードを取得する際に、エラーコードの説明を取得したい場合もある。このときには、FormatMessage関数を用いる。 DWORD FormatMessage( DWORD dwFlags, // 入力元と処理方法のオプション LPC…
StrFormatByteSize64この関数は、整数を書式化する際に、KB, MB, GBなどの単位を自動的につけてくれます。 #include <windows.h> #include <stdio.h> #include <locale.h> #include <shlwapi.h> #pragma comment(lib, "shlwapi.lib") int main() { LONGLONG qdwNumber; TCHAR szBuf[32]; UINT uiSize =</shlwapi.h></locale.h></stdio.h></windows.h>…
ファイルに関連付けられている実行ファイル名を取得するためには、Shell APIのFindExecutable関数を用いる HINSTANCE FindExecutable( LPCTSTR lpFile, // ファイル名文字列へのポインタ LPCTSTR lpDirectory, // 既定ディレクトリ文字列へのポインタ LPTSTR…
SHAnsiToUnicode関数と SHUnicodeToAnsi関数を用いる。 #include <windows.h> #include <stdio.h> #include <locale.h> #include <shlwapi.h> #pragma comment(lib, "shlwapi.lib") int main() { WCHAR wcs[32]; char mbs[32]; //Unicode文字列をコンソールに表示させるため setlocale(LC_ALL, setloca</shlwapi.h></locale.h></stdio.h></windows.h>…
マウスカーソルの位置を設定するためには、SetPhysicalCursorPos関数を用いる BOOL WINAPI SetPhysicalCursorPos( __in int X, __in int Y ); マウスカーソルをデスクトップの左上に移動するサンプルプログラム #include <windows.h> int main() { //デスクトップの左上</windows.h>…
左右のマウスボタンを交換するには、SwapMouseButton関数を用いる BOOL SwapMouseButton( BOOL fSwap // ボタンの交換または復元 );fSwapにTRUEを指定すると、左右のマウスボタンが入れ替わる。FALSEを指定すると元に戻る。サンプルプログラム #include <windows.h> int</windows.h>…
プリンタの構成要素を列挙するためには、EnumePrinterData関数を用いる。 DWORD EnumPrinterData( HANDLE hPrinter, // 操作対象のプリンタを識別するハンドル DWORD dwIndex, // 取得する値のインデックス LPTSTR pValueName, // 値の名前を受け取るバッフ…
インストールされているプリンタドライバ情報を列挙するためには、EnumPrinterDrivers関数を用いる。 BOOL EnumPrinterDrivers( LPTSTR pName, // サーバー名へのポインタ LPTSTR pEnvironment, // 環境名へのポインタ DWORD Level, // 構造体のレベル LPBYT…
プリンタの変更を監視するためには、FindFirstPrinterChangeNotification, FindNextPrinterChangeNotificationを用いる。 HANDLE FindFirstPrinterChangeNotification( HANDLE hPrinter, // 変更を監視するプリンタまたはプリンタサーバーを識別する // ハン…
利用可な可能なプリンタ、プリントサーバー、プリントプロバイダを列挙するためには、EnumPrinters関数を使用する。 BOOL EnumPrinters( DWORD Flags, // プリンタオブジェクトのタイプ LPTSTR Name, // プリンタオブジェクトの名前 DWORD Level, // 情報レ…
プリンタ情報を取得するためには、GetPrinter関数を用いる。GetPrinter関数でプリンタ情報を取得するためには、以下の3つの手順が必要となる1.OpenPrinter関数で取得したいプリンタのハンドルを取得する 2.GetPrinter関数に 1で取得したハンドルを指定して…
プリンタドライバ情報を取得するためには、GetPrinterDriver関数を用いる。 プリンタドライバ情報を取得する手順としては、1.まずOpenPrinter関数でプリンタオブジェクトのハンドルを取得する2.次に、取得したプリンタオブジェクトのハンドルを用いてGetPrin…
Win32API 印刷に利用可能なポートを列挙するためには、EnumPorts関数を用いる。EnumPorts関数は以下のように定義されている。 BOOL EnumPorts( LPTSTR pName, // サーバー名へのポインタ(NULLを指定した場合は、ローカルコンピュータのプリンタポートが列挙…
利用可能なモニター情報を列挙するには、EnumMonitors関数を用いる。EnumMonitors関数は、以下のように定義されている BOOL EnumMonitors( LPTSTR pName, // サーバー名へのポインタ(NULLを指定した場合、ローカルモニターが列挙される) DWORD Level, // 構…
この度、Visual Studio 2010からC++0xのshared_ptrを使うことができるようになったということで試してみました。 まず、2つのshared_ptrで整数型の配列を参照する例(ソースコードについて、コメントを頂きましたため、修正いたしました。) #include <stdio.h> #includ</stdio.h>…
Compress.exeは、16bitの時代にはよく使われていたようで、今となってはあまり使われていないかもしれないが、Compress.exeで圧縮されたファイルを解凍するプログラムを実装してみる。Compress.exeとは、マイクロソフトから提供されているLZ77を使用した圧縮…
ファイルにアクセス拒否ACEを設定するためには、AddAccessDeniedAce関数を用いる。手順は、以下のとおり No項目 1InitializeAclでDACLを初期化する 2LookupAccountName関数で、アカウントに対するSIDを取得する 3AddAccessDeniedAce関数で、アクセス拒否ACE…
整数型(char, short, int, long, __int64(Windows環境))を2進数で表示するプログラム #include <stdio.h> #include <limits.h> #define INT64_BIT 64 #define LONG_BIT 32 #define INT_BIT 32 #define SHRT_BIT 16 void print_binary_int64(__int64 n) { for (long i = INT64</limits.h></stdio.h>…
システムの時刻を設定するためには、SetSystemTime関数を用いる。SetSystemTime関数を用いるためには、SE_SYSTEMTIME_NAME特権を有効にしておく必要がある。SetSystemTimeでシステム時刻を設定する例 システム時刻を「今日」の零時に設定する手順としては、…
ウィンドウズをシャットダウンやログオフ、再起動するためには、ExitWindowsEx関数を用いる。ExitWindowsEx関数は以下のように定義されている。 BOOL ExitWindowsEx( UINT uFlags, // シャットダウン操作 DWORD dwReserved // 予約済み ); ExitWindowsExで、…
プロセストークンに割り当てられている特権を有効にするためには、AdjustTokenPrivileges関数を用いる。手順は以下のとおり No項目 1OpenProcessToken関数で、プロセストークンを取得する 2LookupPrivilegeValue関数で、特権に対応するLUID(ローカル一意識別…
プロセストークンに割り当てられている特権情報を取得するためには、手順で処理を実行する。 No項目 1OpenProcessToken関数でプロセストークンを取得する 2GetTokenInformation関数で、「1」で取得したプロセストークンの特権情報を取得する 3「2」で取得…
ファイルにセキュリティ情報を設定するためには、SetFileSecurity関数を用いるが、SetNamedSecurityInfo関数を用いることもできる。 手順は、以下のとおり No項目 1InitializeAcl関数で、DACLを初期化する 2LookupAccountName関数で、アカウントに対するSID…
ファイルやディレクトリのセキュリティ情報(セキュリティ記述子やACL)は、GetFileSecurity関数で取得可能であるが、GetNamedSecurityInfo関数でも取得可能である。 GetNamedSecurityInfo関数で、セキュリティ情報(セキュリティ記述子)を取得し、ACEを列挙…
プロセストークンのグループ情報を取得するには、OpenProcessToken関数、GetTokenInformation関数、LookupAccountSidA関数を用いる手順は、以下のとおり No項目 1OpenProcessToken関数で、プロセストークンを取得する 2GetTokenInformation関数で、トークン…