C# winform 程序 怎么样得到当前窗体在屏幕上的坐标了

C# winform 程序 怎么样得到当前窗体在屏幕上的坐标了,第1张

private void Form1_Move(object sender, EventArgs e)

{

thislabel1Text = thisLocationXToString() + "," + thisLocationYToString();

}

注意:Form1是窗体类名,label1是Form1窗体里面的一个Label控件,注意这个事件是Move事件,也就是窗口移动事件

你的意思是在窗体中移动鼠标的时候

在鼠标的位置用一个ToolTip显示鼠标的坐标吗?

是的话就是这样:

首先、拖个ToolTip进来,比如它叫toolTip1

然后、在你窗体的MouseMove事件中,加下面一行

thistoolTip1SetToolTip(this, eX + "\t" + eY);

也就是当你的鼠标在窗体的范围内进行移动的时候,会在你的鼠标位置d出一个ToolTip,其中显示你鼠标的坐标。

就这样~

:)

用ReadConsoleOutputCharacterA函数,在windowsh中。

给你一个封好的函数吧,其作用是提取出窗口中第x行y列的位置的字符是什么。(如果没有东西会返回空格符号)。

#include<windowsh>

//下标从1开始,x行y列。

char GetStr(int x, int y)

{

COORD pos;

//ReadConsoleOutputCharacterA里的x和y指的是x列y行,且从0开始标号 

posX = y-1;posY = x-1;

LPSTR str;

DWORD read;

ReadConsoleOutputCharacterA(GetStdHandle(STD_OUTPUT_HANDLE), str, 1, pos, &read);

return str[0];

}

使用举例:

int main()

{

printf("kjndfgdfg\nkhgfhfhfgd\njifdgdfgg\n");

printf("1,2:%c\n",GetStr(1,2));

return 0;

}

输出为

kjndfgdfg

khgfhfhfgd

jifdgdfgg

1,2:j

       #region 得到光标在屏幕上的位置

        [DllImport("user32")]

         public static extern bool GetCaretPos(out Point lpPoint);

         [DllImport("user32dll")]

         private static extern IntPtr GetForegroundWindow();

         [DllImport("user32dll")]

         private static extern IntPtr GetFocus();

         [DllImport("user32dll")]

         private static extern IntPtr AttachThreadInput(IntPtr idAttach, IntPtr idAttachTo, int fAttach);

         [DllImport("user32dll")]

         private static extern IntPtr GetWindowThreadProcessId(IntPtr hWnd, IntPtr ProcessId);

         [DllImport("kernel32dll")]

         private static extern IntPtr GetCurrentThreadId();

         [DllImport("user32dll")]

         private static extern void ClientToScreen(IntPtr hWnd, ref Point p);

         private Point CaretPos()

         {

             IntPtr ptr = GetForegroundWindow();

             Point p = new Point();

             //得到Caret在屏幕上的位置   

             if (ptrToInt32() != 0)

             {

                 IntPtr targetThreadID = GetWindowThreadProcessId(ptr, IntPtrZero);

                 IntPtr localThreadID = GetCurrentThreadId();

                 if (localThreadID != targetThreadID)

                 {

                     AttachThreadInput(localThreadID, targetThreadID, 1);

                     ptr = GetFocus();

                     if (ptrToInt32() != 0)

                     {

                         GetCaretPos(out   p);

                         ClientToScreen(ptr, ref   p);

                     }

                     AttachThreadInput(localThreadID, targetThreadID, 0);

                 }

             }

             return p;

         }

         #endregion

如果是控制台程序,并且硬要按照你这种思路来做, 可以把这个范围截屏成一张,再识别中的文字

换个思路, 屏幕上输出的数据是来自代码内的某个变量, 保存这个变量的值不就相当于获取了屏幕的输出数据了吗

分成两个问题,到底哪个你不会?

Winform里多个窗体之间如何传递变量?

Winform里如何获取窗体相对于桌面(屏幕)的坐标?

以上就是关于C# winform 程序 怎么样得到当前窗体在屏幕上的坐标了全部的内容,包括:C# winform 程序 怎么样得到当前窗体在屏幕上的坐标了、C# 怎么获得鼠标在屏幕上的坐标,并在鼠标位置输出、C语言如何将坐标中的(x,y)提取出来等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9278118.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-26
下一篇2023-04-26

发表评论

登录后才能评论

评论列表(0条)

    保存