簡體   English   中英

如何在C#Web瀏覽器的右鍵菜單中找到屬性

[英]how to find properties in right click Contextmenu of C# web browser

嗨,我有一個ac#應用程序和一個嵌入式瀏覽器,它的任務是找到一個鏈接,然后右鍵單擊它並單擊屬性!

鼠標以編程方式移動,因此我需要在右鍵單擊菜單中找到屬性!

你能幫我怎么做嗎?

我嘗試在右鍵單擊后按'r',但在某些計算機上不起作用!

所以我需要通過移動鼠標來做到這一點!

這是我的代碼,用於找到鏈接並右鍵單擊:

int x = getXoffset(link);
int y = getYoffset(link);
webBrowser1.Document.Window.ScrollTo(x, y);
Linker.Win32.POINT p2 = new Linker.Win32.POINT();
webBrowser1.Focus();
p2.x = webBrowser1.Left + 10;
p2.y = webBrowser1.Top + 5;
Linker.Win32.ClientToScreen(this.Handle, ref p2);
Linker.Win32.SetCursorPos(p2.x, p2.y);
MouseOperations.GetCursorPosition();

MouseOperations.MouseEvent(MouseOperations.MouseEventFlags.LeftDown);
MouseOperations.MouseEvent(MouseOperations.MouseEventFlags.RightDown);
MouseOperations.MouseEvent(MouseOperations.MouseEventFlags.RightUp);

歡迎任何其他關於右鍵單擊屬性的想法

使用此代碼:

 [DllImport("user32.dll", SetLastError = true)]
        static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, UIntPtr dwExtraInfo);
        public static void PressKey(Keys key, bool up)
        {
            const int KEYEVENTF_EXTENDEDKEY = 0x1;
            const int KEYEVENTF_KEYUP = 0x2;
            if (up)
            {
                keybd_event((byte)key, 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, (UIntPtr)0);
            }
            else
            {
                keybd_event((byte)key, 0x45, KEYEVENTF_EXTENDEDKEY, (UIntPtr)0);
            }
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            webBrowser1.Navigate("http://google.com");//Your link
            webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted); 
        }

        void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            //Find your link and right click(automatically by your code)
            webBrowser1.Document.MouseDown += new HtmlElementEventHandler(Document_MouseDown);
        }

        void Document_MouseDown(object sender, HtmlElementEventArgs e)
        {
            if (e.MouseButtonsPressed == MouseButtons.Right)
            {
                Thread.Sleep(1000);
                PressKey(Keys.P, true);
                PressKey(Keys.P, false);
            }
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM