我想這個VB.NET/C#聲明轉換爲Visual Basic 6.0的一個,遇到了問題(包括在C#版本,轉換爲VB.NET不是問題。):在Visual Basic 6.0中如何做「Public Declare Ansi Function」?
[DllImport("urlmon.dll", CharSet = CharSet.Ansi)]
private static extern int UrlMkSetSessionOption(
int dwOption,
string pBuffer,
int dwBufferLength,
int dwReserved);
正如你可以看到,在Visual Basic/C#我們有CharSet=CharSet.Ansi
一部分,我不知道如何在Visual Basic 6.0做的 - 我想在別名... Alias "UrlMkSetSessionOptionA"
的末尾添加一個...但沒沒有工作(說can't find DLL entrypoint in urlmon.dll
)。如果沒有這個,發送給pBuffer的字符串就會出現亂碼(我無法識別的奇怪字符)。
這是我到目前爲止已經得到了...
Public Declare Sub UrlMkSetSessionOption Lib "urlmon.dll" (ByVal _
dwOption As Long, _
pBuffer As Any, _
ByVal dwBufferLength As Long, _
ByVal dwReserved As Long)
VB6沒有這個選項,它總是假定ANSI字符串。所以你得到的已經很好,除了Function over Sub。你如何看待胡言亂語很難猜測。我不希望這個API函數現在仍然有效。 – 2012-01-28 19:38:55
@Hans Passant感謝您的評論。你能詳細說明你的意思嗎:「我不希望這個API函數今天仍然有效」?有替代或更新的函數來使用,而不是UrlMkSetSessionOption或?如果是這樣,很樂意聽到它。我試圖更改在我的會話中託管的WebBrowser控件的用戶代理,但WebBrowser控件內置方法不會爲所有請求執行此操作。 InternetSetOption是否可以做到這一點?再次感謝您的寶貴貢獻。 – 2012-01-28 20:54:31
問真正的問題,而不是這一個。沒人能猜到「不要爲所有請求做這件事」可能意味着什麼。 – 2012-01-28 20:59:17