2016-03-19 12 views
0

Başka bir programı izlemek için C# uygulamasını kullanıyorum ve etkin olmadığında bir düğmeyi tıklamanız yeterli.Onaltılık değerleri program ayarlarından veya IN # (özel sınıf) C# olarak int türünde nasıl yüklerim?

Pinvoke kullanıyorum ve bu harika çalışıyor. Sorunum, düğme denetim kimliğini onaltılık biçimdeki bir INI'den yüklemektir. inif sadece INI dosyasını onaltılık dize ("000003F2") için okur.

//Load control id from INI file 
public int m_button_id; 
int m_button_id = Int32.Parse(inif.Read("MMonitor", "button_id")); 

Şimdi

[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 onluya değil onaltılık biçiminde olması gerekir ... Bu şu çalışmak gerekir. Bu "000003F2" yi INI'den yüklemeli ve m_button_id'e eşit olarak ayarlamalıdır. Bir dize olmasından dolayı çok fazla sorun yaşıyorum.

el ayarlarsanız bu iyi çalışıyor ...

public int m_button_id = 0x3F2; 

cevap

0

Kullanım Convert.ToInt32(hexString, 16)

veya int.Parse(hexString, System.Globalization.NumberStyles.HexNumber)

+0

ben o cevapsız inanamıyorum. Cevap için teşekkürler! –

+0

Özel durum atıldı: System.dll'de 'System.ComponentModel.Win32Exception' - Bunu alıyorum ve int'ye hex yüklemiyor. 0x'yi kesecek ve herhangi bir sayıyı tutacaktır. Ancak, dize altıgen harf içeriyorsa yukarıdaki gibi bir istisna atar. –

+0

Hata (çizgi) ve cadı giriş verileri nerede? – Kalten

İlgili konular