windows console程序和窗口程序

有的时候,希望在后台用printf输出一些调试信息,所以想启动的时候有个 cmd窗口

默认创建为gui程序的时候没有,要在编译参数中改一下

 

具体如下

 

1.进入project->setting->c/c++, 在category中选择preprocessor,在processor definitions中删除_CONSOLE, 添加_WINDOWS

2.进入project->setting->Link, 在Project options中将 /subsystem:console改为/subsystem:windows.

 

更多参考:http://blog.csai.cn/user1/16781/archives/2006/6412.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在C#中监听其他程序窗口移动,你可以使用Windows API中的SetWindowsHookEx函数来安装一个钩子来捕获窗口移动的事件。以下是一个示例代码: ```csharp using System; using System.Diagnostics; using System.Runtime.InteropServices; class Program { // 定义钩子委托 private delegate IntPtr HookProc(int code, IntPtr wParam, IntPtr lParam); // 定义钩子类型常量 private const int WH_CALLWNDPROC = 4; // 定义Windows API函数 [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] private static extern IntPtr SetWindowsHookEx(int idHook, HookProc lpfn, IntPtr hMod, uint dwThreadId); [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] private static extern bool UnhookWindowsHookEx(IntPtr hhk); [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] private static extern IntPtr CallNextHookEx(IntPtr hhk, int nCode, IntPtr wParam, IntPtr lParam); // 定义钩子回调方法 private static IntPtr HookCallback(int code, IntPtr wParam, IntPtr lParam) { // 检查钩子事件类型 if (code >= 0 && wParam == (IntPtr)0x0213) // WM_MOVING { // 获取窗口移动的信息 var movingRect = (RECT)Marshal.PtrToStructure(lParam, typeof(RECT)); // 输出窗口移动的信息 Console.WriteLine($"Window moved: Left={movingRect.left}, Top={movingRect.top}, Right={movingRect.right}, Bottom={movingRect.bottom}"); } // 调用下一个钩子 return CallNextHookEx(IntPtr.Zero, code, wParam, lParam); } // 定义窗口坐标结构体 [StructLayout(LayoutKind.Sequential)] private struct RECT { public int left; public int top; public int right; public int bottom; } static void Main() { // 获取当前进程ID int currentProcessId = Process.GetCurrentProcess().Id; // 安装钩子 IntPtr hookHandle = SetWindowsHookEx(WH_CALLWNDPROC, HookCallback, IntPtr.Zero, (uint)currentProcessId); // 等待退出程序 Console.WriteLine("按任意键退出程序..."); Console.ReadKey(); // 卸载钩子 UnhookWindowsHookEx(hookHandle); } } ``` 上述代码通过使用 SetWindowsHookEx 函数安装一个钩子来捕获窗口移动的事件。在钩子回调方法 HookCallback 中,我们检查钩子事件类型是否为窗口移动事件(WM_MOVING),然后获取窗口移动的信息并输出到控制台。 请注意,此代码需要以管理员权限运行,否则无法成功安装钩子。另外,钩子会监视整个系统中的窗口移动事件,包括其他程序窗口移动。你可以根据自己的需求对代码进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值