2 wbz008 wbz008 于 2016.03.01 18:16 提问

windows api 通过句柄获取控件在窗口的坐标问题?

图片说明

图片说明

NativeRECT sRECT = new NativeRECT();
//get 屏幕 RECT
GetWindowRect(hWnd, out sRECT);
问题1:该方法有时获去到的值是负数 ? 求解答?

  ScreenToClient(hWnd, ref xx);
    问题2:该方法获取到的值 一直是0 


    //结构体布局 本机位置

[StructLayout(LayoutKind.Sequential)]
public struct NativeRECT
{
public int left;
public int top;
public int right;
public int bottom;
}

2个回答

caozhy
caozhy   Ds   Rxr 2016.03.01 20:23

看你的nativerect怎么定义的,和C++的结构体签名、顺序是否一致。

wbz008
wbz008 nativerect 结构已写上,麻烦看看
2 年多之前 回复
wbz008
wbz008   2016.03.02 09:25

public struct RECT
{
public int Left;
public int Top;
public int Right;
public int Bottom;
}

//结构体布局 本机位置
[StructLayout(LayoutKind.Sequential)]
public struct NativeRECT
{
    public int left;
    public int top;
    public int right;
    public int bottom;
}
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
win32 API窗口句柄的获得——我的经验
初次写文档,文笔不通畅的地方,以及理解错误之处望各位朋友多多指正!这篇文章是关于如何获取窗口句柄,以及有哪些函数可供使用的简单讨论!可适用于vc、bcb(其他的我没有试,估计可以),本人在bcb环境下试验。首先我会罗列出一些获取句柄的win32 api 函数,然后简单说说他们的用途!最后说说我是怎么理解和应用的。见笑了!可用的win32 api函数:1.HWND FindWin
通过api获取句柄控制其他窗体
很多时候,编写程序模拟鼠标和键盘操作可以方便的实现你需要的功能,而不需要对方程序为你开放接口。比如,操作飞信定时发送短信等。我之前开发过飞信耗子,用的是对飞信协议进行抓包,然后分析协议,进而模拟协议的执行,开发出了客户端,与移动服务器进行通信,但是这有一些缺点。如果移动的服务器对接口进行变更,我所编写的客户端也要进行相应的升级。如果服务器的协议进行了更改,甚至个人编写的这种第三方客户端需要重写。而
C/C++ Windows API——获取鼠标位置的窗口句柄
// SpyDemo.cpp : 定义控制台应用程序的入口点。 //#include "stdafx.h" #include <Windows.h>#define MAX_TEXT_LEN 255BOOL CALLBACK EnumChildProcess(HWND hwnd, LPARAM lParam) { if (hwnd == NULL) { return FALSE
获取当前具有输入焦点控件的窗口句柄
获取当前具有输入焦点控件的窗口句柄 由于GetFocus只能本身进程调用,所以必须调用AttachThreadInput函数附加线程 HWND wnd;//窗口句柄 wnd=GetForegroundWindow();//获得当前激活的窗口句柄 DWORD SelfThreadId=GetCurrentThreadId();//获取本身的线程ID DWORD ForeTh
window api遍历窗口及窗口下面的控件
<br />using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Runtime.InteropServices; namespace Windows
C#:根据鼠标位置获取窗口句柄,名字等
using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using System.Windows.Forms; using System.Runtime.InteropServices; using System.Text; using System.Threa
[WinAPI] 获取窗口句柄的几种方法
http://www.cnblogs.com/zjutlitao/p/3889900.html 1、使用FindWindow函数获取窗口句柄 示例:使用FindWindow函数获取窗口句柄,然后获得窗口大小,并且移动窗口到指定位置。 我们想获得酷我音乐盒的窗口句柄并移动它,该怎么办呢? 首先打开VC或者VS里面tool中的SPY++点击查找窗口如下:
WIN API-VFP获取第三方窗体的控件信息(句柄,窗口ID,进程ID,类名,标题)
*十豆三 2010-02-09 *函数返回与指定字符创相匹配的窗口类名或窗口名的最顶层窗口的窗口句柄。这个函数不会查找子窗口。Declare Long FindWindow In WIN32API String lpClassName,String lpWindowName *函数获得一个窗口的句柄,该窗口的类名和窗口名与给定的字符串相匹配。这个函数查找子窗口,从排在给定的子窗口后面的下一
API 查找窗体句柄、发送消息
//一个引用 using System.Runtime.InteropServices; //一些定义,放在例如public partial class Form1 : Form下 const int WM_GETTEXT = 0x000D; const int WM_SETTEXT = 0x000C; const int WM_CL
句柄的使用(二)—— 动态获取句柄及窗口属性改变
上一篇中说道句柄的直接获取的方法,在windows.h中还提供了FindWindowA(类名,窗口名)这个函数也可以提到某个窗口的句柄。1、得到窗口的“类名”和“窗口名”:①打开vs中的工具中的spy++ ②点击工具栏中“搜索”的“查找窗口(alt+F3)”,调出窗口搜索界面,然后把“查找窗口工具”右边的图标按住放置到要改变其属性的窗口上,即可获取该窗口的“类名”和“窗口名”。 2、修改窗口属性的