我正在使用user32庫來自動化某些瀏覽器在Windows上的點擊,特別是IE中的「另存爲」對話框。我的解決方案在我的盒子上工作正常,但是在其他計算機上並不真實CB_SELECTSTRING在某些機器上被忽略
問題是當我在組合框中設置下載路徑時,我傳入的文件名被忽略並使用原始值。其他消息在這兩種環境下都可以接受,這包括單擊按鈕,獲取窗口句柄,迭代窗口,您將其命名。
我知道這是一個相當廣泛的問題,但任何想法可能會影響這種行爲?我相信我的代碼是正確的,所以我正在尋找其他地方的原因,如權限,不同的user32版本,......?
以下將顯示組合框中的文本,選擇字符串將會成功,但是一旦單擊保存按鈕,將使用原始值。
User32.SendMessage(combobox, User32Constants.CB_ADDSTRING, 0, DownloadAsFileName);
var selected = User32.SendMessage(pointerToParent, User32Constants.CB_SELECTSTRING, -1, DownloadAsFileName);
我嘗試了不同的技術來獲取目標路徑到組合框,但是相同的結果。只在我的盒子上工作,我可以看到然後sendmessages正在返回預期的結果,但使用默認值。
User32.SendMessage(editPartOfCB, User32Constants.WM_SETTEXT, DownloadAsFileName.Length, DownloadAsFileName);
User32.SendMessage(combobox, User32Constants.CB_SETCURSEL, 0, IntPtr.Zero);
任何幫助表示讚賞!
感謝的家長,現在所有排序。我仍然想知道爲什麼它在本地工作而沒有通知父母。如果有人需要更多關於傳回CBN_SELCHANGE的信息 - 請閱讀本文:http://stackoverflow.com/a/1626264/485790 – Vojtiik