Функции Windows API, обычно используемые функции Windows API, --- Оттиск

функция Windows API, обычно используемый

14:21 2014-10-15  xiashengwang   чтения ( 2105) Комментарии ( 0)  редактировать   коллекции

Хотя библиотека классов .Net сильна, но до сих пор иногда ограниченные функциональные возможности, захват некоторых функций API, мы будем решать проблему обеспечения еще одну идею, вот их общие функции Апи, для справки в будущем.

Я знаю, что функции API, но не знаю, как C # или VB.net это заявление, вы можете проверить этот сайт: HTTP: //pinvoke.net/

1, SetForegroundWindow

Окно на передний план, при условии, что окно не минимизировано.

[DllImport ( "User32.dll")]

общественности статической ехЬегп BOOL SetForegroundWindow (IntPtr HWND);

2, ShowWindowAsync

Окно дисплея, например, чтобы свести к минимуму нормальным, который является асинхронным.

[DllImport ( "User32.dll")]

общественности статической ехЬегп BOOL ShowWindowAsync (IntPtr HWND, внутр cmdShow);

общественное перечисление ShowState: ИНТ

{

SW_HIDE = 0,

SW_SHOWNORMAL = 1,

SW_NORMAL = 1,

SW_SHOWMINIMIZED = 2,

SW_SHOWMAXIMIZED = 3,

SW_MAXIMIZE = 3,

SW_SHOWNOACTIVATE = 4,

SW_SHOW = 5,

SW_MINIMIZE = 6,

SW_SHOWMINNOACTIVE = 7,

SW_SHOWNA = 8,

SW_RESTORE = 9,

SW_SHOWDEFAULT = 10,

SW_FORCEMINIMIZE = 11,

SW_MAX = 11

}

3, SendMessage

связь между процессами, должно быть окно, чтобы принять цикл обработки сообщений для работы. WM_COPYDATA

общественный Const INT WM_COPYDATA = 0x004A;

общественного структура COPYDATASTRUCT

{

общественного IntPtr dwData;

общественный ИНТ cbData;

[MarshalAs (UnmanagedType.LPStr)]

струнный lpData общественности;

}

[DllImport ( "User32.dll", EntryPoint = "SendMessage")]

открытый статический ехЬегп INT SendMessage (

IntPtr HWND, // дескриптор окна назначения

INT Msg, // сообщение

INT WPARAM, // первый параметр сообщения

исй COPYDATASTRUCT LPARAM // параметр второго сообщение

);

Примеры:

Отправитель:

байт [] Сарр = System.Text.Encoding.Default.GetBytes (арг [0]);

Winn32.COPYDATASTRUCT CopyData = новый Winn32.COPYDATASTRUCT ();

copyData.cbData = sarr.Length + 1;

copyData.lpData = арг [0];

copyData.dwData = (IntPtr) 100 // просто написать здесь, что числа

Winn32.SendMessage (runningInstance.MainWindowHandle, Winn32.WM_COPYDATA, 0, исх CopyData);

получатель

защищенные переопределения недействительный DefWndProc (иое сообщение м)

{

если (m.Msg == Winn32.WM_COPYDATA)

{

Winn32.COPYDATASTRUCT CopyData = новый Winn32.COPYDATASTRUCT ();

Тип = copyData.GetType ();

CopyData = (Winn32.COPYDATASTRUCT) m.GetLParam (тип);

this.textBox1.Text = copyData.lpData;

}

base.DefWndProc (ссылка м);

}

4, FindWindow

Найти дескриптор окна

[DllImport ( "User32.dll", EntryPoint = "FindWindow")]

частные статический ехЬегп INT FindWindow (строка lpClassName, строка lpWindowName);

5, SetLocalTime

Установить системное время

[StructLayout (LayoutKind.Sequential)]

общественного структура SYSTEMTIME

{

общественного USHORT wYear;

USHORT wMonth общественности;

USHORT wDayOfWeek общественности;

общественного USHORT WDAY;

общественный USHORT wHour;

общественного USHORT wMinute;

USHORT wSecond общественности;

wMilliseconds общественных UShort;

общественного недействительными FromDateTime (DateTime DateTime)

{

wYear = (USHORT) dateTime.Year;

wMonth = (USHORT) dateTime.Month;

wDayOfWeek = (USHORT) dateTime.DayOfWeek;

WDAY = (USHORT) dateTime.Day;

wHour = (USHORT) dateTime.Hour;

wMinute = (USHORT) dateTime.Minute;

wSecond = (USHORT) dateTime.Second;

wMilliseconds = (USHORT) dateTime.Millisecond;

}

общественного DateTime ToDateTime ()

{

вернуть новый DateTime (wYear, wMonth, РАБ, wHour, wMinute, wSecond);

}

}

[DllImport ( "kernel32.dll")]

общественности статической ехЬегп BOOL SetLocalTime (исх SYSTEMTIME времени);

6, SHGetFileInfo

Получить иконку значок исполняемого файла

[Flags]

Перечисление SHGFI: ИНТ

{

/// <резюме> получить значок </ резюме>

Icon = 0x000000100,

/// <резюме> получить отображаемое имя </ резюме>

DisplayName = 0x000000200,

/// <резюме> получить имя типа </ резюме>

TypeName = 0x000000400,

/// <резюме> получить атрибуты </ резюме>

Атрибуты = 0x000000800,

/// <резюме> получить местоположение значка </ резюме>

IconLocation = 0x000001000,

/// <резюме> возвращаемого типа ехе </ резюме>

ExeType = 0x000002000,

/// <резюме> получить индекс значка системы </ резюме>

SysIconIndex = 0x000004000,

/// <резюме> поставить ссылку накладку на значок </ резюме>

LinkOverlay = 0x000008000,

/// <резюме> показать значок в выбранном состоянии </ резюме>

Выбранный = 0x000010000,

/// <резюме> получить только определенные атрибуты </ резюме>

Attr_Specified = 0x000020000,

/// <резюме> получить большой значок </ резюме>

LargeIcon = 0x000000000,

/// <резюме> получить маленький значок </ резюме>

SmallIcon = 0x000000001,

/// <резюме> получить открытый значок </ резюме>

OpenIcon = 0x000000002,

/// <резюме> получить оболочки размер значка </ резюме>

ShellIconSize = 0x000000004,

/// <резюме> pszPath является PIDL </ резюме>

PIDL = 0x000000008,

/// <резюме> использование прошло dwFileAttribute </ резюме>

UseFileAttributes = 0x000000010,

/// <резюме> применить соответствующие пометки </ резюме>

AddOverlays = 0x000000020,

/// <резюме> Получить индекс наложения в верхних 8 бит iIcon </ резюме>

OverlayIndex = 0x000000040,

}

[StructLayout (LayoutKind.Sequential, НаборСимволы = CharSet.Auto)]

общественного структура SHFILEINFO

{

общественного SHFILEINFO (BOOL б)

{

HICON = IntPtr.Zero;

Бэкон = 0;

dwAttributes = 0;

szDisplayName = "";

szTypeName = "";

}

общественного IntPtr Hicon;

значок общественного ИНТ;

dwAttributes общественного UINT;

[MarshalAs (UnmanagedType.ByValTStr, SizeConst = 260)]

строка szDisplayName общественности;

[MarshalAs (UnmanagedType.ByValTStr, SizeConst = 80)]

строка szTypeName общественности;

};

[DllImport ( "shell32.dll", CharSet = CharSet.Unicode)] // Пути есть китайские иероглифы, использование Юникод

открытый статический ехЬегп INT SHGetFileInfo (

Строка pszPath,

ИНТ dwFileAttributes,

из SHFILEINFO Psfi,

UINT cbfileInfo,

SHGFI uFlags);

Примеры:

частные статический Icon GetIcon (строка strPath, BOOL bSmall)

{

SHFILEINFO информация = новый SHFILEINFO (истина);

INT cbFileInfo = Marshal.SizeOf (информация);

SHGFI флаги;

если (bSmall)

флаги = SHGFI.Icon | SHGFI.SmallIcon | SHGFI.UseFileAttributes;

еще

флаги = SHGFI.Icon | SHGFI.LargeIcon;

Win32API.SHGetFileInfo (strPath, 256, из инфо, (UINT) cbFileInfo, флаги);

Возвращение Icon.FromHandle (info.hIcon);

}

7, GetWindowThreadProcessId

Получить ручку процесса и идентификатор потока, он возвращает идентификатор нити, реф возвращает идентификатор процесса

[System.Runtime.InteropServices.DllImport ( "User32.dll")]

частные статический ехЬегп INT GetWindowThreadProcessId (интермедиат Hwnd, исй INT OutPressId);

Примеры: убийство первенствуйте процесс

INT ProcessId = 0;

INT ThreadId;

ThreadId = GetWindowThreadProcessId (excelApp.Hwnd, исх ProcessId);

если (ProcessId> 0)

{

Процесс System.Diagnostics.Process = System.Diagnostics.Process.GetProcessById (ProcessId);

если (процесс! = NULL)

{

process.kill ();

}

}

Хотя библиотека классов .Net сильна, но до сих пор иногда ограниченные функциональные возможности, захват некоторых функций API, мы будем решать проблему обеспечения еще одну идею, вот их общие функции Апи, для справки в будущем.

Я знаю, что функции API, но не знаю, как C # или VB.net это заявление, вы можете проверить этот сайт: HTTP: //pinvoke.net/

1, SetForegroundWindow

Окно на передний план, при условии, что окно не минимизировано.

[DllImport ( "User32.dll")]

общественности статической ехЬегп BOOL SetForegroundWindow (IntPtr HWND);

2, ShowWindowAsync

Окно дисплея, например, чтобы свести к минимуму нормальным, который является асинхронным.

[DllImport ( "User32.dll")]

общественности статической ехЬегп BOOL ShowWindowAsync (IntPtr HWND, внутр cmdShow);

общественное перечисление ShowState: ИНТ

{

SW_HIDE = 0,

SW_SHOWNORMAL = 1,

SW_NORMAL = 1,

SW_SHOWMINIMIZED = 2,

SW_SHOWMAXIMIZED = 3,

SW_MAXIMIZE = 3,

SW_SHOWNOACTIVATE = 4,

SW_SHOW = 5,

SW_MINIMIZE = 6,

SW_SHOWMINNOACTIVE = 7,

SW_SHOWNA = 8,

SW_RESTORE = 9,

SW_SHOWDEFAULT = 10,

SW_FORCEMINIMIZE = 11,

SW_MAX = 11

}

3, SendMessage

связь между процессами, должно быть окно, чтобы принять цикл обработки сообщений для работы. WM_COPYDATA

общественный Const INT WM_COPYDATA = 0x004A;

общественного структура COPYDATASTRUCT

{

общественного IntPtr dwData;

общественный ИНТ cbData;

[MarshalAs (UnmanagedType.LPStr)]

струнный lpData общественности;

}

[DllImport ( "User32.dll", EntryPoint = "SendMessage")]

открытый статический ехЬегп INT SendMessage (

IntPtr HWND, // дескриптор окна назначения

INT Msg, // сообщение

INT WPARAM, // первый параметр сообщения

исй COPYDATASTRUCT LPARAM // параметр второго сообщение

);

Примеры:

Отправитель:

байт [] Сарр = System.Text.Encoding.Default.GetBytes (арг [0]);

Winn32.COPYDATASTRUCT CopyData = новый Winn32.COPYDATASTRUCT ();

copyData.cbData = sarr.Length + 1;

copyData.lpData = арг [0];

copyData.dwData = (IntPtr) 100 // просто написать здесь, что числа

Winn32.SendMessage (runningInstance.MainWindowHandle, Winn32.WM_COPYDATA, 0, исх CopyData);

получатель

защищенные переопределения недействительный DefWndProc (иое сообщение м)

{

если (m.Msg == Winn32.WM_COPYDATA)

{

Winn32.COPYDATASTRUCT CopyData = новый Winn32.COPYDATASTRUCT ();

Тип = copyData.GetType ();

CopyData = (Winn32.COPYDATASTRUCT) m.GetLParam (тип);

this.textBox1.Text = copyData.lpData;

}

base.DefWndProc (ссылка м);

}

4, FindWindow

Найти дескриптор окна

[DllImport ( "User32.dll", EntryPoint = "FindWindow")]

частные статический ехЬегп INT FindWindow (строка lpClassName, строка lpWindowName);

5, SetLocalTime

Установить системное время

[StructLayout (LayoutKind.Sequential)]

общественного структура SYSTEMTIME

{

общественного USHORT wYear;

USHORT wMonth общественности;

USHORT wDayOfWeek общественности;

общественного USHORT WDAY;

общественный USHORT wHour;

общественного USHORT wMinute;

USHORT wSecond общественности;

wMilliseconds общественных UShort;

общественного недействительными FromDateTime (DateTime DateTime)

{

wYear = (USHORT) dateTime.Year;

wMonth = (USHORT) dateTime.Month;

wDayOfWeek = (USHORT) dateTime.DayOfWeek;

WDAY = (USHORT) dateTime.Day;

wHour = (USHORT) dateTime.Hour;

wMinute = (USHORT) dateTime.Minute;

wSecond = (USHORT) dateTime.Second;

wMilliseconds = (USHORT) dateTime.Millisecond;

}

общественного DateTime ToDateTime ()

{

вернуть новый DateTime (wYear, wMonth, РАБ, wHour, wMinute, wSecond);

}

}

[DllImport ( "kernel32.dll")]

общественности статической ехЬегп BOOL SetLocalTime (исх SYSTEMTIME времени);

6, SHGetFileInfo

Получить иконку значок исполняемого файла

[Flags]

Перечисление SHGFI: ИНТ

{

/// <резюме> получить значок </ резюме>

Icon = 0x000000100,

/// <резюме> получить отображаемое имя </ резюме>

DisplayName = 0x000000200,

/// <резюме> получить имя типа </ резюме>

TypeName = 0x000000400,

/// <резюме> получить атрибуты </ резюме>

Атрибуты = 0x000000800,

/// <резюме> получить местоположение значка </ резюме>

IconLocation = 0x000001000,

/// <резюме> возвращаемого типа ехе </ резюме>

ExeType = 0x000002000,

/// <резюме> получить индекс значка системы </ резюме>

SysIconIndex = 0x000004000,

/// <резюме> поставить ссылку накладку на значок </ резюме>

LinkOverlay = 0x000008000,

/// <резюме> показать значок в выбранном состоянии </ резюме>

Выбранный = 0x000010000,

/// <резюме> получить только определенные атрибуты </ резюме>

Attr_Specified = 0x000020000,

/// <резюме> получить большой значок </ резюме>

LargeIcon = 0x000000000,

/// <резюме> получить маленький значок </ резюме>

SmallIcon = 0x000000001,

/// <резюме> получить открытый значок </ резюме>

OpenIcon = 0x000000002,

/// <резюме> получить оболочки размер значка </ резюме>

ShellIconSize = 0x000000004,

/// <резюме> pszPath является PIDL </ резюме>

PIDL = 0x000000008,

/// <резюме> использование прошло dwFileAttribute </ резюме>

UseFileAttributes = 0x000000010,

/// <резюме> применить соответствующие пометки </ резюме>

AddOverlays = 0x000000020,

/// <резюме> Получить индекс наложения в верхних 8 бит iIcon </ резюме>

OverlayIndex = 0x000000040,

}

[StructLayout (LayoutKind.Sequential, НаборСимволы = CharSet.Auto)]

общественного структура SHFILEINFO

{

общественного SHFILEINFO (BOOL б)

{

HICON = IntPtr.Zero;

Бэкон = 0;

dwAttributes = 0;

szDisplayName = "";

szTypeName = "";

}

общественного IntPtr Hicon;

значок общественного ИНТ;

dwAttributes общественного UINT;

[MarshalAs (UnmanagedType.ByValTStr, SizeConst = 260)]

строка szDisplayName общественности;

[MarshalAs (UnmanagedType.ByValTStr, SizeConst = 80)]

строка szTypeName общественности;

};

[DllImport ( "shell32.dll", CharSet = CharSet.Unicode)] // Пути есть китайские иероглифы, использование Юникод

открытый статический ехЬегп INT SHGetFileInfo (

Строка pszPath,

ИНТ dwFileAttributes,

из SHFILEINFO Psfi,

UINT cbfileInfo,

SHGFI uFlags);

Примеры:

частные статический Icon GetIcon (строка strPath, BOOL bSmall)

{

SHFILEINFO информация = новый SHFILEINFO (истина);

INT cbFileInfo = Marshal.SizeOf (информация);

SHGFI флаги;

если (bSmall)

флаги = SHGFI.Icon | SHGFI.SmallIcon | SHGFI.UseFileAttributes;

еще

флаги = SHGFI.Icon | SHGFI.LargeIcon;

Win32API.SHGetFileInfo (strPath, 256, из инфо, (UINT) cbFileInfo, флаги);

Возвращение Icon.FromHandle (info.hIcon);

}

7, GetWindowThreadProcessId

Получить ручку процесса и идентификатор потока, он возвращает идентификатор нити, реф возвращает идентификатор процесса

[System.Runtime.InteropServices.DllImport ( "User32.dll")]

частные статический ехЬегп INT GetWindowThreadProcessId (интермедиат Hwnd, исй INT OutPressId);

Примеры: убийство первенствуйте процесс

INT ProcessId = 0;

INT ThreadId;

ThreadId = GetWindowThreadProcessId (excelApp.Hwnd, исх ProcessId);

если (ProcessId> 0)

{

Процесс System.Diagnostics.Process = System.Diagnostics.Process.GetProcessById (ProcessId);

если (процесс! = NULL)

{

process.kill ();

}

}

рекомендация

отwww.cnblogs.com/bedfly/p/12154034.html
рекомендация