一,ALT+TAB切换时小图标的添加
Dlg类中添加变量
protected:
HICON m_hIcon; #define IDR_MAINFRAME 128
ICON IDR_MAINFRAME,IDC_STATIC,,,,
// Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems.
IDR_MAINFRAME ICON DISCARDABLE "res\\crtApp.ico" 构造函数中加载
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
初始化
SetIcon(m_hIcon, TRUE); // Set big icon ALT+TAB
SetIcon(m_hIcon, FALSE); // Set small icon 左上角小图标 使用
// Draw the icon
dc.DrawIcon(, , m_hIcon);
// The system calls this to obtain the cursor to display while the user drags
// the minimized window.
Dlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}
二 Dlg::OnInitDialog()
获取屏幕大小
int w = GetSystemMetrics(SM_CXSCREEN);
int h = GetSystemMetrics(SM_CYSCREEN);
界面透明
SetWindowPos(&wndTopMost,,,,,SWP_SHOWWINDOW); //移动界面位置
MoveWindow(,,,, TRUE); //移动界面位置
//VS2003以上版本
//SetWindowLong(GetSafeHwnd(),GWL_EXSTYLE,GetWindowLong(GetSafeHwnd (),GWL_EXSTYLE)|WS_EX_LAYERED);
//SetLayeredWindowAttributes(0,200,LWA_ALPHA);
//VS2003以下版本
SetWindowLong(GetSafeHwnd(), GWL_EXSTYLE, GetWindowLong(GetSafeHwnd(), GWL_EXSTYLE) |0x00080000);
HINSTANCE hInst = LoadLibrary(_T("User32.dll"));
if (hInst)
{
typedef BOOL (WINAPI *MyFun)(HWND,COLORREF,BYTE,DWORD);
MyFun myfun = NULL;
myfun = (MyFun)GetProcAddress(hInst, "SetLayeredWindowAttributes");
if (myfun)
myfun(GetSafeHwnd(),,,);
FreeLibrary(hInst);
}
, //竖行字体
Dlg::OnPaint()
{ CPaintDC dc(this);// device context for painting
CRect rtClient;
GetClientRect(rtClient); //获取客户区尺寸、位置信息 /////// 利用CFont::CreateFont(...)函数实现竖写汉字////////
CFont myFont; //创建字体对象
//创建逻辑字体
myFont.CreateFont(, //字体高度(旋转后的字体宽度)=56
, //字体宽度(旋转后的字体高度)=20
, //字体显示角度=270°
, //nOrientation=0
, //字体磅数=10
FALSE, //非斜体
FALSE, //无下划线
FALSE, //无删除线
DEFAULT_CHARSET, //使用缺省字符集
OUT_DEFAULT_PRECIS, //缺省输出精度
CLIP_DEFAULT_PRECIS,//缺省裁减精度
DEFAULT_QUALITY, //nQuality=缺省值
DEFAULT_PITCH, //nPitchAndFamily=缺省值
"@system"); //字体名=@system
CFont *pOldFont=dc.SelectObject(&myFont);//选入设备描述表 //在客户区适当位置输出文字
dc.TextOut(rtClient.Width()/+,, "单击返回主界面");
dc.SelectObject(pOldFont); //将myFont从设备环境中分离
myFont.DeleteObject(); //删除myFont对象
/*
/////////// 利用LOGFONT结构实现竖写汉字//////////////
LOGFONT lf; //定义字体结构
lf.lfWeight=8; //字体磅数=10
lf.lfHeight=20; //字体高度(旋转后的字体宽度)=56
lf.lfWidth=10; //字体宽度(旋转后的字体高度)=20
lf.lfUnderline=FALSE; //无下划线
lf.lfStrikeOut=FALSE; //无删除线
lf.lfItalic=FALSE; //非斜体
lf.lfEscapement=2700; //字体显示角度=270°
lf.lfCharSet=DEFAULT_CHARSET; //使用缺省字符集
strcpy(lf.lfFaceName,"@system"); //字体名=@system
CFont myLogFont; //定义字体对象
myLogFont.CreateFontIndirect(&lf); //创建逻辑字体
pOldFont=dc.SelectObject(&myLogFont);//选入设备描述表
//在客户区适当位置输出文字
// dc.TextOut(rtClient.Width()/2+5,rtClient.Height()/32, "点击返回主界面");
dc.SelectObject(pOldFont); //将myFont从设备环境中分离
myLogFont.DeleteObject(); //删除myLogFont对象
*/
...
}
三 进程信息
#include <tlhelp32.h>
long FindTargetProcess(const CString &m_strProcessName)
{
int nRet = ;
HANDLE hFind = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, );
PROCESSENTRY32 *info = new PROCESSENTRY32;
info->dwSize = sizeof(PROCESSENTRY32);
nRet = ; if (::Process32First(hFind, info) != NULL)
{
CString strName;
while (::Process32Next(hFind, info) != FALSE)
{
strName = info->szExeFile;
if (strName == m_strProcessName)
{
if (strName == "cmd.exe")
{
CString strCmd;
strCmd.Format("taskkill /f /pid %u", info- >th32ProcessID);
::system(strCmd); } HANDLE hOpenPro = OpenProcess(PROCESS_ALL_ACCESS, TRUE, info->th32ProcessID);
if (hOpenPro != NULL)
{
Sleep();
nRet = ;
::TerminateProcess(hOpenPro, );
Sleep();
}
}
}
::CloseHandle(hFind);
if (info != NULL)
{
delete info;
}
}
return nRet;
} //ExitProcess(0);
char app[] = {};
long FindTargetProcess2(const CString &m_strProcessName)
{
int nRet = ;
HANDLE hFind = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, );
PROCESSENTRY32 *info = new PROCESSENTRY32;
info->dwSize = sizeof(PROCESSENTRY32);
nRet = ;
DWORD pid = ;
if (::Process32First(hFind, info) != NULL)
{
CString strName;
while (::Process32Next(hFind, info) != FALSE)
{
strName = info->szExeFile;
if (strName == m_strProcessName)
{
pid = info->th32ProcessID;
HANDLE hOpenPro = OpenProcess(PROCESS_ALL_ACCESS, TRUE, info->th32ProcessID);
if (hOpenPro != NULL)
{
}
}
}
::CloseHandle(hFind);
if (info != NULL)
{
delete info;
}
}
return pid;
} BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam)
{
DWORD pid = ; DWORD tid = GetWindowThreadProcessId(hwnd, &pid);
if (pid == (DWORD)lParam)
{
// printf("pid:%d\n", pid, tid);
// DWORD lid = GetCurrentThreadId();
// AttachThreadInput(tid, lid, TRUE ); int w = GetSystemMetrics(SM_CXSCREEN);
int h = GetSystemMetrics(SM_CYSCREEN);
// BOOL b = SetWindowPos (hwnd,HWND_NOTOPMOST,,,,,SWP_NOMOVE|SWP_NOSIZE); // PostMessage(hwnd, WM_SHOWWINDOW, true, SW_OTHERZOOM);
HWND hw = hwnd;
while (hw != NULL)
{
hw = GetParent(hwnd);
if (hw)
{
printf("%x ", hw);
hwnd = hw;
}
printf("\n");
}
if (!GetWindowLong(hwnd, GWL_STYLE)&WS_VISIBLE)
{
return TRUE;
}
char buf[] = {}; GetWindowText(hwnd, buf, ); CString str=buf;
if (str == app )
{
printf("%s\n", buf);
ShowWindow(hwnd,SW_RESTORE);
SetForegroundWindow(hwnd);
return FALSE;
} // SetActiveWindow(hwnd);
// bool b = SetWindowPos (hwnd,HWND_TOPMOST,,,,,SWP_NOSIZE|SWP_NOMOVE|SWP_SHOWWINDOW); //AttachThreadInput(tid, lid, FALSE ); }
return TRUE;
}
char app[] = {};
long FindTargetProcess2(const CString &m_strProcessName)
{
int nRet = ;
HANDLE hFind = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, );
PROCESSENTRY32 *info = new PROCESSENTRY32;
info->dwSize = sizeof(PROCESSENTRY32);
nRet = ;
DWORD pid = ;
if (::Process32First(hFind, info) != NULL)
{
CString strName;
while (::Process32Next(hFind, info) != FALSE)
{
strName = info->szExeFile;
if (strName == m_strProcessName)
{
pid = info->th32ProcessID;
HANDLE hOpenPro = OpenProcess(PROCESS_ALL_ACCESS, TRUE, info->th32ProcessID);
if (hOpenPro != NULL)
{
}
}
}
::CloseHandle(hFind);
if (info != NULL)
{
delete info;
}
}
return pid;
} BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam)
{
DWORD pid = ; DWORD tid = GetWindowThreadProcessId(hwnd, &pid);
if (pid == (DWORD)lParam)
{
// printf("pid:%d\n", pid, tid);
// DWORD lid = GetCurrentThreadId();
// AttachThreadInput(tid, lid, TRUE ); int w = GetSystemMetrics(SM_CXSCREEN);
int h = GetSystemMetrics(SM_CYSCREEN);
// BOOL b = SetWindowPos (hwnd,HWND_NOTOPMOST,,,,,SWP_NOMOVE|SWP_NOSIZE); // PostMessage(hwnd, WM_SHOWWINDOW, true, SW_OTHERZOOM);
HWND hw = hwnd;
while (hw != NULL)
{
hw = GetParent(hwnd);
if (hw)
{
printf("%x ", hw);
hwnd = hw;
}
printf("\n");
}
if (!GetWindowLong(hwnd, GWL_STYLE)&WS_VISIBLE)
{
return TRUE;
}
char buf[] = {}; GetWindowText(hwnd, buf, ); CString str=buf;
if (str == app )
{
printf("%s\n", buf);
ShowWindow(hwnd,SW_RESTORE);
SetForegroundWindow(hwnd);
return FALSE;
} // SetActiveWindow(hwnd);
// bool b = SetWindowPos (hwnd,HWND_TOPMOST,,,,,SWP_NOSIZE|SWP_NOMOVE|SWP_SHOWWINDOW); //AttachThreadInput(tid, lid, FALSE ); }
return TRUE;
}
SetTimer(, , );

ALT+TAB切换时小图标的添加 界面透明 屏幕大小 竖行字体 进程信息的更多相关文章

  1. ubuntu 14.04 compiz的ALT + TAB切换程序

    安装完ubuntu,发现不能使用ALT + TAB切换应用程序,翻遍所有百度结果,没有可行,都是拷这个拷那个...真实无语...FQgoogle,看的第一个就完美解决.记录下来,方便国人少走弯路. 首 ...

  2. 解决微信小程序的wx-charts插件tab切换时的显示会出现位置移动问题-tab切换时,图表显示错乱-实现滑动tab

    解决Echarts在微信小程序tab切换时的显示会出现位置移动问题 tab切换时,图表显示错乱 <canvas class="kcanvas" canvas-id=" ...

  3. element--ui使用tab切换时如何获取当前对象的id或者其他属性

    1. 问题 当使用tab切换时,部分特殊场景需要获取当前元素的类名或者id. 2.解决思路,tab切换是绑定函数,函数会传递过去当前对象,通过当前对象获取对象属性 vue部分代码:本项目是在vue-c ...

  4. vue -vantUI tab切换时 list组件不触发load事件解决办法

    最近由于公司项目需要,用vue写了几个简单的页面.用到了vantUI List 列表 瀑布流滚动加载,用于控制长列表的展示 当列表即将滚动到底部时,会触发事件并加载更多列表项. (页面加载完成后默认会 ...

  5. easyui easyui-accordion的使用和在tab切换时没有样式

    1.easyui-accordion的使用 <div id="aa" class="easyui-accordion" style="width ...

  6. vue中echarts 在element-ui的tab 切换时 width 为100px 时的解决方式

    最近在项目中遇到了这种情况,需要在tab控件上渲染多个echart图标,然后切换查看时,发现图表的宽度不正确 原因:在页面进行加载时,隐藏的图表找不到对应的div大小,所以默认给了一个大小.所以要做的 ...

  7. echarts在tab切换时容器宽度设置为100%,只展示100px

    在 mychart.setOption(option); 后面加上 mychart.resize(); 即可

  8. 解决windows 1903 alt + tab 切换卡顿

    右击此电脑图标 选择管理 服务和应用程序 服务 禁用system interface foundation service

  9. AppBar 自定义顶部导航按钮 图标、颜色 以及 TabBar 定义顶部 Tab 切换

    一.Flutter AppBar 自定义顶部按钮图标.颜色 leading   在标题前面显示的一个控件,在首页通常显示应用的 logo:在其他界面通常显示为返回按钮 title  标题,通常显示为当 ...

随机推荐

  1. 调试必备---console

    一.前言 可能很多前端er会习惯用 alert() 方法来进行调试,但我相信更多的人会使用 console.log(),因为它不用像 alert() 那样会有字符长度限制,也不会中止程序的进程,而且还 ...

  2. IOS UITableview代理方法总结

    tableview的datasource代理 @required的两个数据源方法 1.返回每个 session 中 cell 的个数 - (NSInteger)tableView:(UITableVi ...

  3. AES 与Base64加密

    public class AESHelper     {         /// <summary>         /// 获取密钥         /// </summary&g ...

  4. Android Listview

    方法一: xml文件 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xml ...

  5. Excel 2007 批量删除隐藏的文本框

    该方法取自百度知道,该朋友给出函数,我详细写一下方法. 打开有文本框的excel文件. 按 Alt+F11 打开编辑器. 将下面的函数复制进去: Sub deltxbox()Dim s As Shap ...

  6. WPF 中 InitializeComponent 不存在解决方案

    部门给了一个WPF应用,但是之前没学过,所以再用vs2015创建测试程序的时候,竟然报了错,一创建项目就报错的程序还真不多.大概就是 InitializeComponent不存在吧.所以在网上看了很多 ...

  7. mysql 唯一约束

    ALTER TABLE user ADD UNIQUE (username,userid) 对表user增加username和userid的唯一约束 ALTER TABLE tablename  AD ...

  8. CSS学习心得

    CSS 指层叠样式表 (Cascading Style Sheets) 样式定义如何显示 HTML 元素 样式通常存储在样式表中 把样式添加到 HTML 4.0 中,是为了解决内容与表现分离的问题 外 ...

  9. 【转】关于phpcms的学习

    在实现PHPCMS网站过程中,根据业务需求,我们遇到很多问题,特此总结如下,以便大家参考学习. [1]PHPCMS V9系统目录简析 在研究所有问题之前,请先了解一下系统的文件目录结构,具体如下图所示 ...

  10. js设计模式总结-迭代器模式

    迭代器模式 要解决的问题 迭代器要解决的问题很简单很单纯,就是进行遍历操作. 实现原理 基本所有语言都实现了迭代器,javascript也不例外,如Array.prototype.forEach,fo ...