私は別のプログラムを監視するためにC#アプリケーションを使用していますが、非アクティブが検出されたときにボタンをクリックするだけです。C言語でプログラム設定やINI(カスタムクラス)から16進値をintとしてロードするにはどうすればよいですか?
私はピンボケを使用しています。私の問題は、16進形式のINIからボタンコントロールIDをロードしています。 inifは単に16進文字列( "000003F2")のINIファイルを読み込みます。
//Load control id from INI file
public int m_button_id;
int m_button_id = Int32.Parse(inif.Read("MMonitor", "button_id"));
今、私は次のように動作するようにこれが必要...
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
static extern IntPtr GetDlgItem(IntPtr hWnd, int nIDDlgItem);
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
static extern IntPtr SendMessage(IntPtr hWnd, int Msg, int wParam, IntPtr lParam);
//Click Button
IntPtr hWndButton = GetDlgItem(m_handle, m_button_id);
int wParam = (BN_CLICKED << 16) | (m_button_id & 0xffff);
SendMessage(m_handle, WM_COMMAND, wParam, hWndButton);
m_button_idは六角ない小数点以下の形式でなければなりません。 INIからこの "000003F2"をロードし、それをm_button_idに等しく設定する必要があります。私はそれが文字列であるので、非常に多くの問題を抱えています。
私は手動で設定した場合、これが正常に動作します...
public int m_button_id = 0x3F2;
私はそれを逃した信じることができません。答えをありがとう! –
例外がスローされました:System.dllの 'System.ComponentModel.Win32Exception' - これを取得し、intに16進数をロードしません。それは0xをトリムし、任意の数を保持します。ただし、文字列に16進文字が含まれている場合は、上記のような例外がスローされます。 –
エラー(行)と魔女の入力データはどこですか? – Kalten