2012-08-29 86 views
0

regsvr32实用程序会抑制标准输出。例如:regsvr32和标准输出

STDAPI DllRegisterServer(void) 
{ 
    std::cout << "RegisterServer\n"; 
    return S_OK; 
} 

当与执行:

REGSVR32 my.dll

没有出现在标准输出(被显示在成功消息框)。无论如何要让标准输出出现吗?

+0

它也抑制标准错误?只是一个想法... –

+3

我不认为有任何明确的标准输出抑制,更简单地说,'regsvr32'是一个GUI应用程序,默认情况下它的stdin和stdout没有连接任何东西。 –

+0

@MatteoItalia,从来没有发生过我。谢谢。 – hmjd

回答

7

regsvr32.exe它是一个Windows应用程序。它不拥有控制台。 printf或std :: cout不会显示任何文本。

如果你坚持展示一些东西,你可以自己创建控制台。

在文本输出前调用以下行。

AllocConsole(); 
freopen("CONOUT$", "w+t", stdout); 
+0

谢谢,我会试试看。 – hmjd

+1

+1,再次感谢。仅供参考,我使用'AttachConsole(ATTACH_PARENT_PROCESS);'作为您答案中的代码创建了一个立即消失的新控制台。 – hmjd

+0

@hmjd这是因为你的DLL注册过程完成。也许你可以在退出DllRegisterServed()之前调用MessageBox。 – Rango

0

使用带/ C

regsrv32 yourFile.dll /c C://log.txt 
+1

给定的命令不起作用“模块”c://blah.log“加载失败。”有趣的是,它不会像其他未知参数一样在/ c上出错。 – Deanna

相关问题