Jump to content

[C] Dúvida: ExitWindowsEx (Resolvido)


Recommended Posts

Posted

Estou a criar um code para desligar o windows, e estive a pesquisar nesta página e devia ficar assim:

#include <windows.h>

void main (void){
BOOL WINAPI ExitWindowsEx(
  UINT EWX_POWEROFF,
  DWORD EWX_FORCE
);
}

Onde está o erro?

Eu sempre iniciei o programa com "void main (void)", a minha dúvida é: como posso criar outra função por exemplo "tempo" e durante a main, usar a "tempo"? Exemplo:

#include <conio.h>
#include <stdio.h>

void main (void){
printf("ola adeus");
getch();
/*Aqui queria correr a funcao "tempo"*/
}

Funcao tempo{
blablabla
blablabla
}

Se desse, o que acontecia assim que a main era terminada, o software desligava-se ou voltava outra vez á "tempo"?

Abraços

Posted

Quanto à 1ª dúvida, estás a chamar a função incorrectamente... Sem querer soar paternal, devias aprender a sintaxe do C antes de começar a programar coisas mais sérias.

Há ali muita conversa sobre as permissões que o programa tem que ter para poder desligar o Windows, mas com um pouco de sorte basta chamar a função ExitWindowsEx com os parâmetros que são descritos na página que indicaste. A função aceita 2 parâmetros:

- o 1º diz o que queres fazer ao sistema: se queres desligar, reiniciar, fazer logout, etc. Os valores que pode tomar estão descritos na página que indicaste;

- o 2º diz ao sistema qual é a razão para desligar o Windows, e estão descritos aqui os valores que pode tomar.

Se o que queres é desligar o computador, isto (em princípio) serve:

#include <windows.h>

void main (void){
ExitWindowsEx(EWX_POWEROFF | EWX_FORCEIFHUNG, SHTDN_REASON_FLAG_PLANNED | SHTDN_REASON_MAJOR_OTHER | SHTDN_REASON_MINOR_MAINTENANCE);
}

Quanto à 2ª dúvida:

- Quando a função main termina, acabou. Mais nenhum código é executado, e o controlo é devolvido ao sistema operativo. Na prática não é exactamente assim, mas a ideia é que mais nenhum código que tenhas escrito é executado.

- Para a função tempo ser executada, primeiro tinha que estar declarada antes da função main,o que pode ser feito de duas maneiras: ou escreves o cabeçalho da função antes da main e implementas a função depois, assim:

void tempo();

void main() {
tempo();
}

void tempo() {
//função aqui
}

ou implementas logo antes da main, assim:

void tempo() {
//função aqui
}

void main() {
tempo();
}

Para a função ser executada, tens que a chamar na main (ou noutra função qualquer) como está nos exemplos.

Desaparecido.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.