我面臨一個非常奇怪的問題,無法弄清楚錯誤在哪裏。我使用SendMessage_EX來獲得指定行的文本:無法在我的c#程序中使用兩次SendMessage_EX
SendMessage_Ex(hr.Handle, EM_GETLINE, l, buffer);
然後我調用該方法兩次這樣的:
StringBuilder buffer = new StringBuilder(256);
SendMessage_Ex(hr.Handle, EM_GETLINE, 5, buffer);
StringBuilder buffer1 = new StringBuilder(256);
SendMessage_Ex(hr.Handle, EM_GETLINE, 4, buffer1);
它得到第5行的文本正確,但隨後的4號線,它返回什麼都沒有(buffer1是空的)。 如果我把它倒過來,先得到第4行然後第5行,它將返回第4行的文本,並且第5行沒有任何內容。
這很奇怪,我確信我犯了一個簡單的錯誤,但是在哪裏是錯誤的? 我感謝任何幫助。 :)
顯然,你忘了,包括SendMessage_Ex的身體()方法,所以我們可以看看它是如何讀取的緩衝區 – sll
我能夠重現。 Windows API調用的原型是:[DllImport(「user32.dll」,EntryPoint =「SendMessageA」)] private static extern int SendMessage_Ex (IntPtr hwnd,int wMsg,int wParam,StringBuilder lParam); private const int EM_GETLINE = 0xc4; –
感謝您的回覆,我已經使用了確切的dllimport並聲明瞭EM_GETLINE(我認爲這很明顯,所以我沒有提及有問題的代碼,對不起)但我不知道爲什麼我不能因此調用它。 :(任何想法? – Luke