是否可以在Windows桌面而不是例如墙纸上连续运行命令行界面,如命令提示符?这可以实现一种MS-DOS体验,但是具有所有通常的Windows功能。
答案 0 :(得分:1)
虽然我怀疑以前有人对此做了更正式的版本,但是您可以使用以下代码:
#include <windows.h>
#include <string>
#include <iostream>
HWND g_hwndTarget;
BOOL CALLBACK EnumCallback(HWND hwnd, LPARAM lParam)
{
wchar_t szText[MAX_PATH] = {};
GetWindowTextW(hwnd, szText, MAX_PATH);
std::wstring strTitle = szText;
if (strTitle.find(L"cmd.exe") != std::string::npos)
{
g_hwndTarget = hwnd;
return FALSE;
}
return TRUE;
}
int main()
{
EnumDesktopWindows(NULL, EnumCallback, 0);
RECT rect = {};
SystemParametersInfo(SPI_GETWORKAREA, 0, &rect, 0);
if (g_hwndTarget)
{
LONG style = GetWindowLong(g_hwndTarget, GWL_STYLE);
style &= ~WS_BORDER;
style &= ~WS_OVERLAPPEDWINDOW;
SetWindowLong(g_hwndTarget, GWL_STYLE, style);
SetWindowPos(g_hwndTarget, HWND_BOTTOM, 0, 0, rect.right, rect.bottom, 0);
}
return 0;
}
编译以上内容,然后从现有的控制台窗口运行它。代码是这样的:
找到一个控制台窗口(第一个在其标题栏中包含cmd.exe的窗口)。使用此窗口句柄可以执行以下操作。
删除标题栏和顶级按钮/菜单
将其粘贴在窗口堆栈的底部
全屏调整其大小。
结果是您有一个伪“命令行桌面”
远非如此。不断进行后台处理以确保其存在并正确定位/设置样式可能是有意义的。但这是一个开始。您必须将其提升到一个新的水平才能满足您的需求。