Deixar o
character "afk" as vezes fica um tanto complicado, ainda mais quando PK'lowlevel ta sem nada pra fazer. Como o cliente não dá a opção de mostrar na barra de tarefa a vida do personagem, resolvi implementar.
No começo foi trabalhosso devido ao pacote do compilador não ter incluso os headers necessários e por eu não ter usado o
CoInitialize() corretamente. Depois de muitas horas, tentativas e pesquisas descobri que não estava iniciando a biblioteca COM
(por isso o EAX ficava com o cara de tacho). Mas graças ao todo poderoso oráculo (vulgo
google) tudo se encaixou.
Vamos dá uma olhada num exemplo e ver como implementar esse estilo em uma janela do bloco de notas aberta.
#include <windows.h>
#include <shobjidl.h>
const GUID my_IID_ITaskbarList3 =
{ 0xea1afb91, 0x9e28, 0x4b86, { 0x90, 0xe9, 0x9e, 0x9f, 0x8a, 0x5e, 0xef, 0xaf } };
const GUID my_CLSID_TaskbarList =
{ 0x56fdf344, 0xfd6d, 0x11d0, { 0x95, 0x8a, 0x00, 0x60, 0x97, 0xc9, 0xa0, 0x90 } };
ITaskbarList3* ptbl = NULL;
int main()
{
// inicia a biblioteca
CoInitialize(NULL);
// cria a instancia para a interface ITaskbarList3
CoCreateInstance(my_CLSID_TaskbarList, NULL, CLSCTX_INPROC_SERVER, my_IID_ITaskbarList3, (LPVOID*)&ptbl);
// procura por uma janela do bloco de notas
HWND hWindow = FindWindow("Notepad", NULL);
ptbl->SetProgressState(hWindow, TBPF_ERROR);
ptbl->SetProgressValue(hWindow, 40, 100);
return 0;
}
Recomendo o link onde o autor faz uma
introdução de COM e explica o que é e como usar (texto em inglês).
Att, Gilson Fabiano.