如何解决如何在C ++中实现OOBE完成通知?
我想为我的应用程序执行RegisterWaitUntilOOBECompleted API的win32实现。 目的是检测OOBE是否完成并执行特定操作。
但是,我不太了解如何用c ++代码实现它。 在过去的6个小时中,我一直在寻找示例实现,但是没有运气。 谁能解释怎么做?
注册一个回调,一旦OOBE(欢迎使用Windows)被调用 完成。
语法C ++
BOOL RegisterWaitUntilOOBECompleted( OOBE_COMPLETED_CALLBACK
OOBECompletedCallback,PVOID CallbackContext,PVOID *WaitHandle );
参数
OOBECompletedCallback
指向应用程序定义的回调函数的指针,该函数将 OOBE完成时调用。有关更多信息,请参见 OOBE_COMPLETED_CALLBACK。
CallbackContext
指向回调上下文的指针。该值将传递给 OOBECompletedCallback指定的函数。该值可以为null。
WaitHandle
指向将接收等待句柄的变量的指针 回调注册。
解决方法
对于将来任何可能正在寻找此API的示例实现的人,这就是我的做法。该示例代码并非旨在进行编译。
头文件
#include "Oobenotification.h"
class MainClass
{
// put constructor here
// destructor
~MainClass();
// OOBE notification
OOBE_COMPLETED_CALLBACK OOBECompletedCallback;
PVOID m_OOBEHandle = NULL;
// receive notification one OOBE complete
void OOBERegisterNotification();
static void CALLBACK NotifyOOBEComplete(PVOID CallbackContext);
public:
Init();
};
CPP文件
#include "header.h"
void MainClass::~MainClass()
{
if (m_OOBEHandle != NULL)
UnregisterWaitUntilOOBECompleted(m_OOBEHandle);
}
void MainClass::Init()
{
// register to receive oobe complete notification
OOBERegisterNotification();
}
void MainClass::OOBERegisterNotification()
{
OOBECompletedCallback = &NotifyOOBEComplete;
BOOL bRes = ::RegisterWaitUntilOOBECompleted(OOBECompletedCallback,NULL,&m_OOBEHandle);
if (!bRes)
{
// handle failed registration here
}
}
void CALLBACK MainClass::NotifyOOBEComplete(PVOID Context)
{// async
UNREFERENCED_PARAMETER(Context);
// what you want to do after OOBE
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。