OS関連

COM技術関連

Tips

Professional User Interface Suite

DirectX/WPF

GDI/GDI+

gdi++.dll

画面のキャプチャ方法三種類

Taskbar Progress Control

ウィンドウハンドルからモジュール名を得る

Processing Global Mouse and Keyboard Hooks in C#

SetUpDIxxx関数によるデバイス情報の列挙

タスクバーをプログラムから制御する

デスクトップ上のウィンドウをグリッドに沿って合わせるユーティリティ

現在ログオンしているユーザの情報を得る

GetSystemMetricsのパラメータの微妙な違い

[DllImport("user32.dll")]
public static extern int GetSystemMetrics(int nIndex);
 
const int SM_CXSCREEN = 0;
const int SM_CYSCREEN = 1;    //デスクトップ画面全体
const int SM_CXFULLSCREEN =16;
const int SM_CYFULLSCREEN =17; //フルスクリーンにしたときのクライアント領域(ステータスバー分が入らない)
const int SM_CXMAXIMIZED=61;
const int SM_CYMAXIMIZED=62; //フルスクリーンにしたときの全体(タスクバー分が入らない)

Window強制前だし要件への対応

単純にSetForegroundWindow APIとかを使うだけではダメである件について

DLLの関数差し替え

DLLの共有セグメント(C++)

DLL のソースコードに

#pragma comment(linker,"/section:SHARED,rws")
#pragma data_seg("SHARED")
  HWND  hwndOwner = 0;
  HHOOK hhk = 0;
#pragma data_seg()

のように記述。

#pragma data_seg は、#pragma data_seg で括られた区間がデータセグメントであること、セクション名が "SHARED" であることを示し

#pragma comment ディレクティブは、リンカに対する指示で、"SHARED" と名前付けられたセクションが「読み書き可能、共有」の属性を持つことを指定

この2つの記述により、変数 hwndOwner と hhk は、この DLL をロードしたプロセス間で共有される。

なお、共有する変数は

HWND hwndOwner = 0;

のように必ず初期化すること。 これを忘れると、変数が共有されません。


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS