-
不知道你的**是怎麼回事。
宣告字串不好,但它可以得到結果。 也許是因為當你使用它時,字串作為引數沒有分配緩衝區。
如果只將乙個空字串物件傳遞給它,則該空字串物件沒有字串緩衝區。 在傳遞字串物件之前為其分配空間,如下所示:
string a=" ";(您可以根據需要為 nmaxcount 使用任意數量的空格。 當然,它不一定是乙個空間。 如果 nmaxcount 太大,請使用字串建構函式)。
另一方面,預設情況下,StringBuilder 具有一定大小(16 個字元)的緩衝區。
此外,不能傳遞引數 nmaxcount。 隨心所欲地傳遞你的 lpsstring。
1.鎖定優化。
是不可變型別。
撇開這一點不談,至少使用 stringbuilder 設定緩衝區比使用 string 更方便。
-
兩個不同的類,你會看到它們的類宣告之間有什麼區別。
-
因為你實際上是在給它傳遞乙個陣列,所以這個陣列實際上是乙個指標,而不是乙個完整的副本。
-
int retrunhandle = 148713;
你不應該寫下控制代碼,每次執行程式時控制代碼都會改變。
因此,您首先找到視窗以獲取控制代碼。
dllimport("", entrypoint = "findwindow")]
private extern static intptr findwindow(string lpclassname, string lpwindowname);
然後,再次轉到 GetWindowText
intptr retrunintptrhandle = findwindow("類名","窗體的標題欄的名稱");
-
是不是把手有問題? 程式重新啟動後,將重新生成控制代碼。
-
控制代碼是可更換的,您只能指向148713,因此您需要乙個 ptrint 類來儲存“可更改”的控制代碼。 然後你需要 findwindow,因為程式可能並不總是在每次啟動時都把乙個視窗放在148713中那麼準確,所以需要臨時計算。
-
這需要使用系統的 API
-
getWindowText 只獲取視窗的標題。 如果要在視窗中獲取元件的文字,則應首先獲取該元件的控制代碼。
-
你完成了嗎? 應離開控制項的狀態。
-
可以使用 SendMessage 獲取文字框中的文字 [dllimport()"user32 ")]
public static extern bool sendmessage(intptr hwnd, int msg, int wparam, intptr lparam);if (sendmessage(textboxstring, wm_gettext, 65535, ptr)) = ;TextBoxString 是文字框的控制代碼。
-
C 函式原型:int getwindowtext(hwnd hwnd,lptstr lpstring,int nmaxcount);
您可能沒有注意到需要向 getWindowText 的第二個引數傳遞指標。 也許你可以這樣嘗試:
intls = winapi_getwindowtext(lnghwnd, varptr(strbuffer), 1000) ''vatptr 是用於獲取變數的指標。
-
如果陵墓或儀器本身有帶有提示功能的尺洞,那麼目前的情況說明,相關的頭抖檢查件不包括在專案管理中;
如果您使用過 Source Insight,您將非常了解這些事情。
-
您只需要使用:
獲取當前表單。
-
lpsstring 是標題的內容。
CCH 是標題長度。