C++ - 从 MFC 应用程序启动记事本,并将其默认标题从 "Untitled - Notepad" 更改为其他内容
C++ - Launch Notepad from an MFC application and change its default title from "Untitled - Notepad" to something else
我在Windows上使用以下代码段成功打开记事本实例。如何将其默认标题从"无标题 - 记事本"更改为其他标题?
SHELLEXECUTEINFO sei = { 0 };
sei.cbSize = sizeof(SHELLEXECUTEINFO);
sei.fMask = SEE_MASK_NOCLOSEPROCESS;
sei.hwnd = my_hWnd; // this window's handle
sei.lpVerb = L"open";
sei.lpFile = L"notepad.exe";
sei.lpParameters = NULL;
sei.lpDirectory = NULL;
sei.nShow = SW_SHOW;
sei.hInstApp = NULL;
if (ShellExecuteEx(&sei))
{
// do some other stuff...
}
记事本中用于更改默认文件名的命令行选项集有限.exe。但是您可以像这样指定新文件名,如果它不存在,提示将允许您将其作为新文档打开。
sei.lpFile = L"notepad.exe";
sei.lpParameters = L""Readme.txt"";
使用 CreateProcess()
创建记事本进程。
使用WaitForInputIdle()
等待窗口变为可用。(注意:此方法可能无法可靠地工作,请按照此建议实现 WinEvents 方法(。
使用主线程 ID(从 PROCESS_INFORMATION
获取(上的EnumThreadWindows()
获取记事本窗口句柄。
最后,将窗口手柄上的SendMessage()
与WM_SETTEXT
一起使用,将窗口标题更改为所需的任何内容。
BOOL CALLBACK EnumThreadWndProc(HWND hWnd, LPARAM lParam)
{
HWND hWndNp = hWnd;
SendMessageW(hWndNp, WM_SETTEXT, 0, (WPARAM)L"Hello");
return 0; // ...stop enum
}
int main() {
STARTUPINFOW si;
PROCESS_INFORMATION pi;
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
ZeroMemory(&pi, sizeof(pi));
if (!CreateProcessW(
NULL, _tcsdup(TEXT("notepad")),
NULL, NULL, FALSE, 0, NULL, NULL,
&si, &pi)
)
{
printf("CreateProcess failed (%d).n", GetLastError());
return 0;
}
if (0 == WaitForInputIdle(pi.hProcess, 5000))
{
EnumThreadWindows(pi.dwThreadId,
EnumThreadWndProc, NULL);
}
WaitForSingleObject(pi.hProcess, INFINITE);
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
return 0;
}
这对我有用
CString strFile("C:\test.txt");
char sz[MAX_PATH];
wsprintf(sz, "Notepad.exe %s", strFile);
WinExec(sz, SW_SHOW);
您也可以设置默认文件名或路径。
相关文章:
- PrintWindow函数在notepad.exe中出错
- C++ - 从 MFC 应用程序启动记事本,并将其默认标题从 "Untitled - Notepad" 更改为其他内容
- GetModuleHandle() 无法检索由 "notepad.exe" 加载的"advapi32.dll"的句柄
- Waitforsingleobject在尝试打开Notepad++时工作,但立即返回Firefox
- Notepad ,nppexec,createProcess()失败了错误代码2,Windows 8.1
- Notepad++ SourceCookifier插件在大C++标题上非常慢
- Qt XML查看器?(类似于Notepad++)
- 对notepad++的c++调试器的任何建议
- 如何用C++在notepad++中打开文件
- 如何从cmd NOTEPAD /P删除文件名
- 在windows7上从windows Service执行Notepad.exe时出现问题