我在Visual C++ 2008中编写Windows应用程序,我想在其中嵌入Windows附带的计算器(calc.exe).有谁知道这是否可能,如果是的话,你可以给我一些关于如何实现这一目标的提示吗?
是的,可以将calc嵌入到您自己的应用程序中,但它仍然可以在它自己的进程空间中运行.UAC可能还会施加一些限制,但这取决于计算方法的推出方式.您需要做的就是更改主计算窗口的父级,并将其样式更改为WS_CHILD.
void EmbedCalc(HWND hWnd)
{
HWND calcHwnd = FindWindow(L"CalcFrame", NULL);
if(calcHwnd != NULL)
{
// Change the parent so the calc window belongs to our apps main window
SetParent(calcHwnd, hWnd);
// Update the style so the calc window is embedded in our main window
SetWindowLong(calcHwnd, GWL_STYLE, GetWindowLong(calcHwnd, GWL_STYLE) | WS_CHILD);
// We need to update the position as well since changing the parent does not
// adjust it automatically.
SetWindowPos(calcHwnd, NULL, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOZORDER);
}
}
Run Code Online (Sandbox Code Playgroud)
Microsoft 有多种支持嵌入的技术,其中最著名的是 OLE,它是一种基于 COM 的技术。例如,您可以通过这种方式将 Excel 电子表格嵌入到您的应用程序中。但是,我相当确定 calc 没有实现发生这种情况所需的任何接口。
因此,这只会让您遇到一些棘手的解决方案,例如尝试自己启动它并使用窗口层次结构玩游戏,或者尝试将其呈现给用户然后通过剪贴板复制结果等。这在技术上都是可行的,但不可能一个好主意。事实上,这可能比仅仅编写自己的计算器应用程序更困难……具体取决于您希望用户能够执行的操作。如果你解释为什么要这样做,有人可能会提出一些更好的解决方案。
| 归档时间: |
|
| 查看次数: |
2791 次 |
| 最近记录: |