鱼C论坛

 找回密码
 立即注册
查看: 2827|回复: 9

修该软件标题栏

[复制链接]
发表于 2014-8-14 10:29:10 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我想修改某软件标题栏上的字,用setwindowtext能修改成功,但某软件缩小再放大后,标题又恢复原来.于是我用循环,但结果就是程序假死,请问有没有比较好的办法?只要能达到实时修改的目的就行


HWND hwnd=::FindWindow("软件",NULL);
        char buf[128];


while(1)

{
  ::GetWindowText(hwnd,buf,sizeof(buf));
  if(buf != "123")
   {
      ::SetWindowText(hwnd,"123");
   }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-8-14 11:56:17 | 显示全部楼层
你既然死循环设置标题,那还判断什么啊,直接设置啊,另外循环的尾部加个sleep就应该好了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-8-14 13:22:13 | 显示全部楼层
#include "stdafx.h"
#include "resource.h"
HINSTANCE g_hInst;

void OnPaint(HWND hWnd)
{
   PAINTSTRUCT ps;
   HDC hdc = BeginPaint(hWnd,&ps);
   //HBITMAP hBitmap = (HBITMAP)LoadImage(NULL,"./Picture.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
   HBITMAP hBitmap = LoadBitmap(g_hInst,(LPCTSTR)IDB_BITMAP1);
   BITMAP bm;
   //获取图片信息
   GetObject(hBitmap,sizeof(bm),&bm);
   HDC dc = CreateCompatibleDC(hdc);
   SelectObject(dc,hBitmap);
   MoveWindow(hWnd,0,0,bm.bmWidth,bm.bmHeight,FALSE);
   BitBlt(hdc,0,0,bm.bmWidth,bm.bmHeight,dc,0,0,SRCCOPY);
   //
   RECT rect;
   GetClientRect(hWnd,&rect);
   Rectangle(hdc,100,100,300,500);
   LineTo(hdc,100,100);
   MoveToEx(hdc,300,500,NULL);
   EndPaint(hWnd,&ps);
}

void OnInitDialog(HWND hwnd)
{
        //HICON hIcon = (HICON)LoadImage(NULL,"./1.ico",IMAGE_ICON,0,0,LR_LOADFROMFILE);
        HICON hIcon = LoadIcon(g_hInst,(LPCTSTR)IDI_ICON1);
       
        ::SendMessage(hwnd, WM_SETICON, FALSE, (LPARAM)hIcon);
        SetWindowText(hwnd,"绘图测试");
}

void OnMouseMove(HWND hwnd)
{
        HCURSOR hCursor = LoadCursor(g_hInst,(LPCTSTR)IDC_CURSOR1);
        SetCursor(hCursor);
}
BOOL CALLBACK DialogProc(
  HWND hwndDlg,
  UINT uMsg,
  WPARAM wParam,
  LPARAM lParam
  )
{
        switch(uMsg) {
        case WM_PAINT:
                OnPaint(hwndDlg);
                return TRUE;
        case WM_INITDIALOG:
                OnInitDialog(hwndDlg);
                return TRUE;
        case WM_MOUSEMOVE:
                OnMouseMove(hwndDlg);
                return TRUE;
        case WM_COMMAND:
                switch(LOWORD(wParam))
                {
                case IDCANCEL:
                        EndDialog(hwndDlg,IDCANCEL);
                        return TRUE;
                case IDOK:
                        return TRUE;
                }
。。。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-14 13:27:08 | 显示全部楼层
machimilk 发表于 2014-8-14 11:56
你既然死循环设置标题,那还判断什么啊,直接设置啊,另外循环的尾部加个sleep就应该好了

加了sleep的,但仍然是假死.时间设置到10秒也一样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-8-14 13:33:14 | 显示全部楼层
为了一个标题 用死循环。。。。。。。。。

用break试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-8-14 14:34:35 | 显示全部楼层
fishdelphi 发表于 2014-8-14 13:27
加了sleep的,但仍然是假死.时间设置到10秒也一样

你程序的主线程死循环 当然卡死了,非要这么弄 就createthread,把死循环写在新开的线程里面
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-14 14:55:25 | 显示全部楼层
machimilk 发表于 2014-8-14 14:34
你程序的主线程死循环 当然卡死了,非要这么弄 就createthread,把死循环写在新开的线程里面

谢谢.我的意思是有没有其他办法?比如能实时监控到标题栏的改变.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-8-14 15:03:20 | 显示全部楼层
fishdelphi 发表于 2014-8-14 14:55
谢谢.我的意思是有没有其他办法?比如能实时监控到标题栏的改变.

监视也要死循环监视啊,都是单开线程的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2014-8-14 16:59:18 | 显示全部楼层
machimilk 发表于 2014-8-14 15:03
监视也要死循环监视啊,都是单开线程的

谢谢,你懂我的意思,解决了.非常感谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-8-25 07:34:00 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 18:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表