2 using System.Runtime.InteropServices;
\r
3 using System.Windows.Forms;
\r
5 namespace AppliStation.Util
\r
7 public sealed class NativeMethods
\r
9 private NativeMethods()
\r
15 /// WindowsVista
\8cü
\82¯
\81A
\83v
\83\8d\83O
\83\8c\83X
\83o
\81[
\83X
\83e
\81[
\83^
\83X(
\90F)
\82ð
\90Ý
\92è
\82·
\82é
\r
17 /// <param name="progBar">
\91Î
\8fÛ
\82Ì
\83v
\83\8d\83O
\83\8c\83X
\83o
\81[</param>
\r
18 /// <param name="state">
\8fó
\91Ô
\81B(1:Normal,2:Error,3:Paused)</param>
\r
19 public static void ProgressBar_SetState(ProgressBar progBar, uint state)
\r
22 // status := (PBST_NORMAL | PBST_ERROR | PBST_PAUSED)
\r
23 // SendMessage(progressBar.Handle, PBM_SETSTATE, state, 0);
\r
24 SendMessage(progBar.Handle, 0x410, state, 0);
\r
25 } catch (Exception) {
\r
29 #region
\83^
\83X
\83N
\83o
\81[
\82¨
\82æ
\82Ñ
\83^
\83C
\83g
\83\8b\83o
\81[
\82Ì
\83t
\83\89\83b
\83V
\83\85\r
32 ///
\83^
\83X
\83N
\83o
\81[
\82¨
\82æ
\82Ñ
\83^
\83C
\83g
\83\8b\83o
\81[
\83{
\83^
\83\93\82Ì
\83t
\83\89\83b
\83V
\83\85\82Ì
\90Ý
\92è
\83t
\83\89\83O
\r
34 public enum FlashFlag : uint {
\r
36 ///
\93_
\96Å
\82Ì
\92â
\8e~
\r
40 ///
\83^
\83C
\83g
\83\8b\83o
\81[
\82ð
\93_
\96Å
\r
44 ///
\83^
\83X
\83N
\83o
\81[
\83{
\83^
\83\93\82ð
\93_
\96Å
\r
48 ///
\83^
\83C
\83g
\83\8b\83o
\81[
\82Æ
\83^
\83X
\83N
\83o
\81[
\83{
\83^
\83\93\82ð
\93_
\96Å
\r
52 /// Stop
\82ª
\90Ý
\92è
\82³
\82ê
\82é
\82Ü
\82Å
\93_
\96Å
\82·
\82é
\r
56 ///
\83t
\83H
\83A
\83O
\83\89\83E
\83\93\83h
\82Ì
\8fó
\91Ô
\82É
\82È
\82é
\82Ü
\82Å
\93_
\96Å
\r
61 [StructLayout(LayoutKind.Sequential)]
\r
66 public FlashFlag dwFlags;
\r
68 public uint dwTimeout;
\r
72 ///
\83^
\83X
\83N
\83o
\81[
\82¨
\82æ
\82Ñ
\83^
\83C
\83g
\83\8b\83o
\81[
\83{
\83^
\83\93\82ð
\93_
\96Å
\82³
\82¹
\82é
\r
74 /// <param name="form">
\91Î
\8fÛ
\83t
\83H
\81[
\83\80</param>
\r
75 /// <param name="flag">
\93_
\96Å
\83p
\83\89\83\81\81[
\83^
\83t
\83\89\83O</param>
\r
76 /// <param name="count">
\93_
\96Å
\89ñ
\90\94</param>
\r
77 /// <param name="timeout">
\93_
\96Å
\82Ì
\8aÔ
\8au(
\83~
\83\8a\95b)</param>
\r
78 /// <returns></returns>
\r
79 public static bool Form_FlashWindow(Form form, FlashFlag flag, uint count, uint timeout)
\r
82 FLASHWINFO info = new FLASHWINFO();
\r
83 info.cbSize = Marshal.SizeOf(typeof(FLASHWINFO));
\r
84 info.hWnd = form.Handle;
\r
85 info.dwFlags = flag;
\r
86 info.uCount = count;
\r
87 info.dwTimeout = timeout;
\r
89 return FlashWindowEx(ref info) == 0;
\r
90 } catch (Exception) {
\r
95 [DllImport("user32.dll")]
\r
96 static extern Int32 FlashWindowEx(ref FLASHWINFO pwfi);
\r
100 #region ColumnHeader
\82Ì
\83\
\81[
\83g
\82Ì
\8eO
\8ap
\88ó
\97p
\r
102 [StructLayout(LayoutKind.Sequential, CharSet=CharSet.Auto)]
\r
103 internal struct HD_ITEM
\r
107 [MarshalAs(UnmanagedType.LPTStr)]public string pszText;
\r
109 public int cchTextMax;
\r
111 [MarshalAs(UnmanagedType.LPTStr)]public string lParam;
\r
112 public int iImage; // index of bitmap in ImageList
\r
116 internal static IntPtr ListView_GetHeader(ListView listview)
\r
118 // SendMessage(hWnd, LVM_GETHEADER, 0, NULL);
\r
119 return SendMessage(listview.Handle, 0x101E, 0, 0);
\r
123 /// WinXP
\88È
\8d~
\81A
\83\
\81[
\83g
\82Ì
\96î
\88ó
\82ð
\95\
\8e¦
\r
125 /// <param name="listView">
\91Î
\8fÛ
\82ÌListView</param>
\r
126 /// <param name="column">
\95\
\8e¦
\82·
\82é
\96î
\88ó
\82Ì
\83w
\83b
\83_</param>
\r
127 /// <param name="order">
\83\
\81[
\83g
\82Ì
\8f¸
\8f\87\81E
\8d~
\8f\87</param>
\r
128 public static void ColumnHeader_SetSortState(ListView listView, int column, SortOrder order)
\r
131 // SendMessage(hWnd, LVM_GETHEADER, NULL, NULL);
\r
132 IntPtr hWnd = SendMessage(listView.Handle, 0x101F, 0, 0);
\r
134 HD_ITEM hdi = new HD_ITEM();
\r
135 hdi.mask = 0x0004; // HDI_FORMAT;
\r
136 for (int i = 0; i < listView.Columns.Count; i++) {
\r
137 // SendMessage(hWnd, HDM_GETITEMW, i, &hdi);
\r
138 SendMessage(hWnd, 0x120b, i, ref hdi);
\r
140 const int HDF_SORTUP = 0x400;
\r
141 const int HDF_SORTDOWN = 0x200;
\r
143 if (i != column || order == SortOrder.None) {
\r
144 hdi.fmt = hdi.fmt & ~(HDF_SORTUP | HDF_SORTDOWN);
\r
145 } else if (order == SortOrder.Ascending) { //
\8f¸
\8f\87\r
146 hdi.fmt = hdi.fmt & ~HDF_SORTDOWN | HDF_SORTUP;
\r
147 } else if (order == SortOrder.Descending) { //
\8d~
\8f\87\r
148 hdi.fmt = hdi.fmt & ~HDF_SORTUP | HDF_SORTDOWN;
\r
151 // SendMessage(hWnd, HDM_SETITEMW, i, &hdi);
\r
152 SendMessage(hWnd, 0x120c, i, ref hdi);
\r
154 } catch (Exception) {
\r
160 [DllImport("user32.dll", CharSet=CharSet.Auto)]
\r
161 internal static extern IntPtr SendMessage( IntPtr hWnd, UInt32 Msg, UInt32 wParam, UInt32 lParam);
\r
163 [DllImport("user32.dll", CharSet=CharSet.Auto)]
\r
164 internal static extern IntPtr SendMessage( IntPtr hWnd, UInt32 Msg, int wParam, ref HD_ITEM lParam);
\r