台灣最大程式設計社群網站
線上人數
2184
 
會員總數:246575
討論主題:190032
歡迎您免費加入會員
討論區列表 >> VB.NET >> VB6 轉VB.NET 程式碼片段的問題
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
VB6 轉VB.NET 程式碼片段的問題
價值 : 10 QP  點閱數:3366 回應數:15
樓主

Tom Mark
門外漢
0 4
98 18
發送站內信

leng = string (GetWindowTextLength(hwnd2) + 1, Chr$(0))
GetWindowText(hwnd2, leng, Len(leng))
RichTextBox1.Text = leng

在VB6的版本內是這樣寫的 不過放到VB.NET內

string (GetWindowTextLength(hwnd2) + 1, Chr$(0))

' string 就跑出錯誤了 說string是類別型別 之後我上msdn 查運算式

看到了這個東西>> Resources:這個值會儲存在 .resx 檔案中。

所以可以直接改成這樣嗎? Resources (GetWindowTextLength(hwnd2) + 1, Chr$(0))

這是第一個問題?

第二個問題

Chr$(0)這個已經不符合VB型別字別 那要怎麼改呢?

第三個問題

SendMessage b, WM_SETTEXT, 0, ByVal RichTextBox2.Text

b錯誤信息跳出 方法引數要放在括號中 要怎麼修正?

還有 ByVal 這裡跳出必須要有運算式 要怎麼修正?



新手上路 很多問題 多多包含 ~!!

本篇文章發表於2011-08-07 19:52
1樓
最有價值解答

JoJo
檢舉此回應
PInvoke restriction: cannot return variants.
SendMessage
三、b的前面和最後面,要用括號包著;ByVal拿掉...
本篇文章回覆於2011-08-08 07:09
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

Tom Mark
檢舉此回應

謝謝jojo 解決了我部份的問題 但是我第一個問題 扔然遇上了麻煩

依照我對PInvoke restriction: cannot return variants.這篇文章的理解
我把這段程式碼改成這樣 Dim result As Integer = GetWindowText(hwnd2, textBuilder, textLength)

這一段跑出 運算式沒產生值 能給我解答嗎? 感激不盡
本篇文章回覆於2011-08-09 19:37
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
你是不是把你的兩個API的宣告貼上來? 看看哪裡有問題!
本篇文章回覆於2011-08-10 20:43
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
作者回應

Tom Mark
檢舉此回應


這是我目前修改的程式碼 這樣寫有錯嗎??
本篇文章回覆於2011-08-11 00:31
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓

本篇文章回覆於2011-08-11 09:39
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
作者回應

Tom Mark
檢舉此回應
錯誤 1 方法/多行 Lambda 外的標籤無效。 C:\Users\tom\Desktop\即時通AI 2010\Form1.vb 11 1 WindowsApplication1
錯誤 2 語法錯誤。 C:\Users\tom\Desktop\即時通AI 2010\Form1.vb 11 1 WindowsApplication1
錯誤 3 方法/多行 Lambda 外的標籤無效。 C:\Users\tom\Desktop\即時通AI 2010\Form1.vb 12 1 WindowsApplication1
錯誤 4 語法錯誤。 C:\Users\tom\Desktop\即時通AI 2010\Form1.vb 12 1 WindowsApplication1
錯誤 5 方法/多行 Lambda 外的標籤無效。 C:\Users\tom\Desktop\即時通AI 2010\Form1.vb 13 1 WindowsApplication1
錯誤 6 語法錯誤。 C:\Users\tom\Desktop\即時通AI 2010\Form1.vb 13 1 WindowsApplication1
錯誤 7 方法/多行 Lambda 外的標籤無效。 C:\Users\tom\Desktop\即時通AI 2010\Form1.vb 14 1 WindowsApplication1
錯誤 8 語法錯誤。 C:\Users\tom\Desktop\即時通AI 2010\Form1.vb 14 1 WindowsApplication1
錯誤 9 方法/多行 Lambda 外的標籤無效。 C:\Users\tom\Desktop\即時通AI 2010\Form1.vb 15 1 WindowsApplication1
錯誤 10 語法錯誤。 C:\Users\tom\Desktop\即時通AI 2010\Form1.vb 15 1 WindowsApplication1
錯誤 11 方法/多行 Lambda 外的標籤無效。 C:\Users\tom\Desktop\即時通AI 2010\Form1.vb 16 1 WindowsApplication1
錯誤 12 語法錯誤。 C:\Users\tom\Desktop\即時通AI 2010\Form1.vb 16 1 WindowsApplication1
錯誤 13 方法/多行 Lambda 外的標籤無效。 C:\Users\tom\Desktop\即時通AI 2010\Form1.vb 17 1 WindowsApplication1
錯誤 14 語法錯誤。 C:\Users\tom\Desktop\即時通AI 2010\Form1.vb 17 1 WindowsApplication1
錯誤 15 方法/多行 Lambda 外的標籤無效。 C:\Users\tom\Desktop\即時通AI 2010\Form1.vb 18 1 WindowsApplication1
錯誤 16 語法錯誤。 C:\Users\tom\Desktop\即時通AI 2010\Form1.vb 18 1 WindowsApplication1
錯誤 17 方法/多行 Lambda 外的標籤無效。 C:\Users\tom\Desktop\即時通AI 2010\Form1.vb 19 1 WindowsApplication1
錯誤 18 語法錯誤。 C:\Users\tom\Desktop\即時通AI 2010\Form1.vb 19 1 WindowsApplication1
錯誤 19 方法/多行 Lambda 外的標籤無效。 C:\Users\tom\Desktop\即時通AI 2010\Form1.vb 20 1 WindowsApplication1
錯誤 20 語法錯誤。 C:\Users\tom\Desktop\即時通AI 2010\Form1.vb 20 1 WindowsApplication1
錯誤 21 方法/多行 Lambda 外的標籤無效。 C:\Users\tom\Desktop\即時通AI 2010\Form1.vb 21 1 WindowsApplication1
錯誤 22 語法錯誤。 C:\Users\tom\Desktop\即時通AI 2010\Form1.vb 21 1 WindowsApplication1
錯誤 23 方法/多行 Lambda 外的標籤無效。 C:\Users\tom\Desktop\即時通AI 2010\Form1.vb 22 1 WindowsApplication1
錯誤 24 語法錯誤。 C:\Users\tom\Desktop\即時通AI 2010\Form1.vb 22 1 WindowsApplication1
錯誤 25 方法/多行 Lambda 外的標籤無效。 C:\Users\tom\Desktop\即時通AI 2010\Form1.vb 23 1 WindowsApplication1
錯誤 26 語法錯誤。 C:\Users\tom\Desktop\即時通AI 2010\Form1.vb 23 1 WindowsApplication1
錯誤 27 方法/多行 Lambda 外的標籤無效。 C:\Users\tom\Desktop\即時通AI 2010\Form1.vb 24 1 WindowsApplication1
錯誤 28 語法錯誤。 C:\Users\tom\Desktop\即時通AI 2010\Form1.vb 24 1 WindowsApplication1
錯誤 29 方法/多行 Lambda 外的標籤無效。 C:\Users\tom\Desktop\即時通AI 2010\Form1.vb 25 1 WindowsApplication1
錯誤 30 語法錯誤。 C:\Users\tom\Desktop\即時通AI 2010\Form1.vb 25 1 WindowsApplication1
錯誤 31 方法/多行 Lambda 外的標籤無效。 C:\Users\tom\Desktop\即時通AI 2010\Form1.vb 26 1 WindowsApplication1
錯誤 32 語法錯誤。 C:\Users\tom\Desktop\即時通AI 2010\Form1.vb 26 1 WindowsApplication1
錯誤 33 方法/多行 Lambda 外的標籤無效。 C:\Users\tom\Desktop\即時通AI 2010\Form1.vb 27 1 WindowsApplication1
錯誤 34 語法錯誤。 C:\Users\tom\Desktop\即時通AI 2010\Form1.vb 27 1 WindowsApplication1
錯誤 35 方法/多行 Lambda 外的標籤無效。 C:\Users\tom\Desktop\即時通AI 2010\Form1.vb 28 1 WindowsApplication1
錯誤 36 語法錯誤。 C:\Users\tom\Desktop\即時通AI 2010\Form1.vb 28 1 WindowsApplication1
錯誤 37 方法/多行 Lambda 外的標籤無效。 C:\Users\tom\Desktop\即時通AI 2010\Form1.vb 29 1 WindowsApplication1
錯誤 38 語法錯誤。 C:\Users\tom\Desktop\即時通AI 2010\Form1.vb 29 1 WindowsApplication1
錯誤 39 方法/多行 Lambda 外的標籤無效。 C:\Users\tom\Desktop\即時通AI 2010\Form1.vb 30 1 WindowsApplication1
錯誤 40 語法錯誤。 C:\Users\tom\Desktop\即時通AI 2010\Form1.vb 30 1 WindowsApplication1
錯誤 41 方法/多行 Lambda 外的標籤無效。 C:\Users\tom\Desktop\即時通AI 2010\Form1.vb 31 1 WindowsApplication1
錯誤 42 語法錯誤。 C:\Users\tom\Desktop\即時通AI 2010\Form1.vb 31 1 WindowsApplication1
錯誤 43 方法/多行 Lambda 外的標籤無效。 C:\Users\tom\Desktop\即時通AI 2010\Form1.vb 32 1 WindowsApplication1
錯誤 44 語法錯誤。 C:\Users\tom\Desktop\即時通AI 2010\Form1.vb 32 1 WindowsApplication1
錯誤 45 'FindWindowEx' 未宣告。由於其保護層級,可能無法對其進行存取。 C:\Users\tom\Desktop\即時通AI 2010\Form1.vb 72 17 WindowsApplication1
錯誤 46 'GetWindowTextLength' 未宣告。由於其保護層級,可能無法對其進行存取。 C:\Users\tom\Desktop\即時通AI 2010\Form1.vb 73 37 WindowsApplication1
錯誤 47 'FindWindow' 未宣告。由於其保護層級,可能無法對其進行存取。 C:\Users\tom\Desktop\即時通AI 2010\Form1.vb 80 25 WindowsApplication1
錯誤 48 'FindWindow' 未宣告。由於其保護層級,可能無法對其進行存取。 C:\Users\tom\Desktop\即時通AI 2010\Form1.vb 82 21 WindowsApplication1
錯誤 49 'FindWindow' 未宣告。由於其保護層級,可能無法對其進行存取。 C:\Users\tom\Desktop\即時通AI 2010\Form1.vb 84 25 WindowsApplication1
錯誤 50 'FindWindowEx' 未宣告。由於其保護層級,可能無法對其進行存取。 C:\Users\tom\Desktop\即時通AI 2010\Form1.vb 87 21 WindowsApplication1
錯誤 51 'FindWindowEx' 未宣告。由於其保護層級,可能無法對其進行存取。 C:\Users\tom\Desktop\即時通AI 2010\Form1.vb 98 25 WindowsApplication1
警告 52 函式 'GetWindowText' 並未傳回有關所有程式碼路徑的值。您是否遺漏了 'Return' 陳述式? C:\Users\tom\Desktop\即時通AI 2010\Form1.vb 108 5 WindowsApplication1

這樣改之後 會出現語法錯誤 @@
本篇文章回覆於2011-08-11 11:24
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓

本篇文章回覆於2011-08-11 11:52
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
作者回應

Tom Mark
檢舉此回應
剛剛這個可以用 不小心犯了一個錯誤= = 把數字加到程式進去才會跑出那個標籤無效的錯誤訊息


可是我用了這段帶API宣告 發現我本來hwnd2 可以抓到值的 現在改用這段會連值也抓不到 還是用回原本的findwindowa 才抓得到

所以此時我產生了一個疑問 改那個a有用嗎? 到底可以做什麼? IntPtr << 還有這個 @@
本篇文章回覆於2011-08-11 13:29
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
你要不要試用一下#7的版本?
本篇文章回覆於2011-08-11 13:41
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
10樓
作者回應

Tom Mark
檢舉此回應
#7 是什麼? @@
本篇文章回覆於2011-08-11 13:51
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
11樓
作者回應

Tom Mark
檢舉此回應
我是用VS2010的@@
本篇文章回覆於2011-08-11 14:05
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
12樓
#7, 7樓有DllImport的API版本, 你可以試一下!
本篇文章回覆於2011-08-11 14:25
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
13樓
作者回應

Tom Mark
檢舉此回應

錯誤 1 'SendMessage' 未宣告。由於其保護層級,可能無法對其進行存取。 C:\Users\tom\Desktop\即時通AI 2010\Form1.vb 101 17 WindowsApplication1
錯誤 2 'WM_SETTEXT' 未宣告。由於其保護層級,可能無法對其進行存取。 C:\Users\tom\Desktop\即時通AI 2010\Form1.vb 101 32 WindowsApplication1
錯誤 3 'SendMessage' 未宣告。由於其保護層級,可能無法對其進行存取。 C:\Users\tom\Desktop\即時通AI 2010\Form1.vb 107 17 WindowsApplication1
錯誤 4 'BM_CLICK' 未宣告。由於其保護層級,可能無法對其進行存取。 C:\Users\tom\Desktop\即時通AI 2010\Form1.vb 107 36 WindowsApplication1
警告 5 函式 'GetWindowText' 並未傳回有關所有程式碼路徑的值。您是否遺漏了 'Return' 陳述式? C:\Users\tom\Desktop\即時通AI 2010\Form1.vb 115 5 WindowsApplication1


用DllImport的API版本 這個會出現這些警告 ><"
本篇文章回覆於2011-08-11 14:39
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
14樓
作者回應

Tom Mark
檢舉此回應
我把SendMessage 的宣告加進去了 不過依然做不到我一開始要求的功能XD



我這段代碼 是要先去抓即時通的窗口標題 也就是即時通帳號 然後再印出來

現在這段代碼改成JOJO提供的那個無法實現出來= =|| 我應該是卡在不曉得如何轉變這段代碼 而不是API的宣告

因為我把API改回我最原始的 xxxxxA 一樣是有辦法執行

這段功能 運行到hwnd2 都還正常可以抓到指派給視窗的值 運行到textLength 也有一個兩位數的值跑出來 然後到textBuilder 就沒東西了= =

這點是我比較沒辦法理解的 !!
本篇文章回覆於2011-08-11 20:20
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
15樓
作者回應

Tom Mark
檢舉此回應

Dim hwnd3 As IntPtr <<發現問題點在這裡 Dim hwnd1 As Long 改成這樣Dim hwnd3 As IntPtr 就能正常運行了

謝謝回應的各位大大 感激不盡

本篇文章回覆於2011-08-12 02:23
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.