Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

MATIOLI

Aplicação no Painel de Controle (Dev-C++)

Recommended Posts

Olá gente,

 

Gostaria de saber se alguém já conseguiu criar um applet no painel de controle com o Dev-C++ (ou outro que use gcc ou mingw).

Se puderem me dar um exemplo bem simples, seria ótimo.

 

Tentei isso, mas não rolou (dá erro no explorer, usando Windows Vista):

 

#include <windows.h>
#include <cpl.h>

#define DLL_EXPORT extern "C" _declspec(dllexport)
HMODULE g_hModule = NULL;   // Handle to the DLL.

DLL_EXPORT BOOL APIENTRY DllMain( HANDLE hModule, 
                       DWORD  ul_reason_for_call, 
                       LPVOID lpReserved )
{
  switch (ul_reason_for_call)
  {
    case DLL_PROCESS_ATTACH:
    {
      g_hModule = (HMODULE) hModule;
    }
    case DLL_THREAD_ATTACH:
    case DLL_THREAD_DETACH:
    case DLL_PROCESS_DETACH:
       break;
    }
    return TRUE;
}

DLL_EXPORT LONG CPlApplet(      
    HWND hwndCPl,
    UINT uMsg,
    LPARAM lParam1,
    LPARAM lParam2
){
	switch(uMsg){
		case CPL_INIT:
			return 1;
		
		case CPL_GETCOUNT:
			return 1;
		case CPL_NEWINQUIRE:
			// Acho que o erro tá nessa parte (como fazer?)
			return 0;
		case CPL_DBLCLK:
			{
				// The user has double-clicked the icon for the
				// dialog box in lParam1 (zero-based).
				PROCESS_INFORMATION pi = {0};
				if (CreateProcess(("C:\\Windows\\Notepad.exe"), NULL, NULL,
				     NULL, FALSE, 0, NULL, NULL, NULL, π)){
					CloseHandle(pi.hThread);
					CloseHandle(pi.hProcess);
					return 0;
				}
				return 1;     // CPlApplet failed.
			}
		
		case CPL_STOP:
		case CPL_EXIT:
		default:
			return 0;
	}
}

Muito obrigado pela atenção,

Matheus de Oliveira

Compartilhar este post


Link para o post
Compartilhar em outros sites

ql erro?

 

o unico motivo pelo ql nao compilaria desse jeito é por faltar a main();

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpe, esqueci de informar o problema...

 

Então, compilou sem erro nenhum, seguindo dicas eu compilei como DLL e depois movi o arquivo para o System32, alterando a extensão para ".cpl". Até aí tudo bem, o problema é que quando eu abro o painel de controle (lembrando que só testei no Vista) ele dá um erro no explorer e fecha. Se eu colocar um MessageBox no "case CPL_INIT:", ele dá esse MsgBox antes do pau no explorer, por isso eu imagino que o erro esteja no "case CPL_NEWINQUIRE", tentei fazê-lo de várias formas, todas baseadas em tutoriais para o MS VS C++, nenhuma rolou...

 

Obrigado pela atenção,

Matheus de Oliveira

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.