WinAPI
Windowsプログラミング基礎
エントリポイント
- Windowsプログラミングには「windows.h」のインクルードが必要
- main関数ではなく、WinMain関数がエントリポイントとなる
- int WINAPI WinMan(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow) {
return 0;
- }
- WINAPIは「windef.h」ヘッダファイルで「#define WINAPI __stdcall」と定義
- 「__stdcall」はWin32APIコール時の規約
- 以下は引数の説明
- 第1引数
(HINSTANCE hInstance)
- アプリケーションの現在のインスタンスへのハンドル(アプリケーションを識別するための値)
- 第2引数
(HINSTANCE hPrevInstance)
- アプリケーションの前のインスタンスへのハンドル
- Win32では常にNULL
- 第3引数
(LPSTR lpCmdLine)
- プログラム名を除くアプリケーションのコマンドライン
- 第4引数
(int nCmdShow)
- ウィンドウの表示方法
メッセージボックス
- int WINAPI WinMan(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow) {
MessageBox(NULL, TEXT("メッセージ"), TEXT("キャプション"), MB_OK);
return 0;
- }
- 第1引数(HWND hWnd)
- 作成するメッセージボックス所有者ウィンドウへのハンドル
- NULLの場合、所有者ウィンドウなしとなる
- 第2引数(LPCTSTR lpText)
- 表示するメッセージ
- 第3引数(LPCTSTR lpCapton)
- ダイアログボックスのタイトル
- 第4引数(UINT uType)
- ダイアログボックスの内容と動作
- 戻り値(int)
- 押されたボタンに応じた値,失敗時は「0」を返す
Python
pip3 install for Ubuntu
- # インストール用スクリプトダウンロード
- $ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
- $ sudo python3 get-pip.py
- # pipのアップデート
- $ pip3 install -U pip
Numeric
- # 10進数から文字列
- >>> str(123)
- '123'
- # 文字列から10進数
- >>> int('123')
- 123
- # 10進数から16進数
- >>> hex(123)
- '0x7b'
- # 16進数から10進数
- >>> int('7b', 16)
- 123
- # 10進数から2進数
- >>> bin(123)
- '0b1111011'
- # 2進数から10進数
- >>> int('1111011', 2)
- 123
String
- # 文字からASCIIコード
- >>>ord('A')
- 65
- # ASCIIコードから文字
- >>> chr(65)
- 'A'
- # 文字列分解
- >>> list('abc')
- ['a','b','c']
- # 文字列をASCIIコードで分解
- >>> map(ord, 'abc')
- [97, 98, 99]
- # ASCIIコードから文字(複数)
- >>>> map(chr, [97, 98, 99])
- '['a', 'b', 'c']
- # 文字結合
- >>> ''.join(['a', 'b', 'c'])
- 'abc'
- # base64
- >>> 'abc'.encode('base64')
- 'YWJj\n'
- >>> 'YWJj\n'.decode('base64')
- 'abc'
- >>> print 'abc'.encode('base64')
- YWJj
暗号・ハッシュ
- # xor
- >>> ord('a') ^ ord('z')
- 24
- # rot13
- >>> 'Hello'.encode('rot13')
- 'Uryyb'
- >>> 'Uryyb'.decode('rot13')
- 'Hello'
- # hash
- >>> import hashlib
- >>> hashlib.md5('abc').hexdigest()
- '900150983cd24fb0d6963f7d28e17f72'
- >>> hashlib.sha1('abc').hexdigest()
- 'a9993e364706816aba3e25717850c26c9cd0d89d'
- >>> hashlib.sha256('abc').hexdigest()
- 'ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f2001
- 5ad'
ファイルから1行ずつ読み書き
- fin = open('./a.txt', 'r')
- fout = open('./b.txt', 'w')
- for line in fin
- fout.write('out' + line)
- fin.close()
- fout.close()
- data = open('./b.txt', 'rb').read()
- print data
ANACONDA
- jupyter
- Web上でPythonを実行
Eclipse Config
C,C++(Linux gcc)
includeパスの設定
- [Project]-[Properties]-[C/C++ Build]-[Settings]-[GCC C Compiler]-[Includes]から[Include paths(-l)]に追加する
- "${workspace_loc:}"でワークスペース名、"{ProjName}"でプロジェクト名を表す
- 例) "${workspace_loc:/${ProjName}/include}" と指定するとプロジェクト以下のincludeフォルダを参照する
- [Project]-[Properties]-[C/C++ Build]-[Settings]-[GCC C Linker]-[Libraries]から[Libraries(-l)]に追加する
- "-l"は不要
- 例)Makefile上で「-lpthread」と同等の指定は単に「pthread」と指定すればよい
- [Project]-[Prpoperties]-[C/C++ General]-[Path and Symbols]-[Includes]にIncludeパスを追加する
- パスは「C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.32.31326\include」など
- EclipseからMSVCのコンパイラ(cl.exe)が使用できるようにOSの環境設定でパスを通すか、Eclipseでコンパイラ設定を行う
- Eclipseで設定する場合は[Project]-[Prpoperties]-[C/C++ Build]-[Settings]-[C++ Compiler]-[Command]にcl.exeのフルパスを入れる
- コンパイラと同様にリンカの設定を行う
- Eclipseで設定する場合は[Project]-[Prpoperties]-[C/C++ Build]-[Settings]-[Linker]-[Command]にcl.exeのフルパスを入れる
- 参照するライブラリがある場合は、[Linker]-[Libraries]にパスを入れる