
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;
}
输出为
kjndfgdfgkhgfhfhfgd
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)提取出来等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)