[size=14]Fiz um exemplo bem simples … mesmo … [/size]
import com.sun.jna.win32.StdCallLibrary;
public interface Winmm extends StdCallLibrary {
void mciSendStringA(String command, int returnValue, int returnLength, int winHandle);
}
import java.util.InputMismatchException;
import java.util.Scanner;
import com.sun.jna.Native;
public class WinmmTeste {
static int op;
public static void main(String[] args){
Winmm openClose = (Winmm) Native.loadLibrary("winmm.dll", Winmm.class);
Scanner sc = new Scanner(System.in);
do{
System.out.println("Para Abrir Gaveta (1) - Para Fechar Gaveta (2)");
System.out.print("Opção: ");
try{
op = sc.nextInt();
}catch(InputMismatchException e){
System.out.println("\nCaracteres não são Validos - Fim do Programa");
System.exit(1);
}
switch(op){
case 1:
openClose.mciSendStringA("Set cdaudio door open wait", 0, 0, 0);
System.out.println("\nGaveta Aberta...");
break;
case 2:
openClose.mciSendStringA("Set cdaudio door closed wait", 0, 0, 0);
System.out.println("\nGaveta Fechada...");
break;
default:
break;
}
System.out.println();
}while(op < 1 || op > 2);
}
}
[size=14]Aqui funcionou blz… no WinXP vou fazer o teste no Win7… [/size]
O comando de fechar não vai funcionar em um notebook porque você precisa empurrar a gavetinha de qualquer jeito. “Parece que não sei…”
O comando de abrir, em um notebook, apenas solta a trava da gavetinha. Se você já olhou como funciona um drive de DVD de notebook, vai ver que a gavetinha abre por uma mola, não com um motorzinho (como é o caso de um desktop com aqueles leitores grandes de DVD. Mesmo desktops que têm aqueles leitores de DVD pequenos não conseguem fechar a gavetinha sozinhos. )
Se você usar um daqueles programas de copiar CDs, que fazem a verificação depois da gravação, vai ver que eles pedem para você empurrar a gavetinha porque não é possível recolher a gavetinha automaticamente.
Esta dando a seguinte exceção quando rodo o código:
Exception in thread "main" java.lang.ClassCastException: $Proxy0 cannot be cast to com.sun.jna.Library
at com.sun.jna.Native.loadLibrary(Native.java:396)
at com.sun.jna.Native.loadLibrary(Native.java:378)
at WinmmTeste.main(WinmmTeste.java:28)
tô perguntando pq o marketing encima dessa frase é mt forte.
ai vejo uma simples abertura de uma bandeja de cdrom trepudiando encima do “anywhere” desse jeito.
[quote=GilsonNunes]e o “Write once, run anywhere”?
como fica?
ou será q só uma farsa?
tô perguntando pq o marketing encima dessa frase é mt forte.
ai vejo uma simples abertura de uma bandeja de cdrom trepudiando encima do “anywhere” desse jeito.
[/quote]
Fora o fato que as palavras são “em cima” e “tripudiando”, o “Write once, run anywhere” é realmente apenas uma declaração de intenções. Na verdade o mais correto é “write once, test anywhere”
[quote=entanglement][quote=GilsonNunes]e o “Write once, run anywhere”?
como fica?
ou será q só uma farsa?
tô perguntando pq o marketing encima dessa frase é mt forte.
ai vejo uma simples abertura de uma bandeja de cdrom trepudiando encima do “anywhere” desse jeito.
[/quote]
Fora o fato que as palavras são “em cima” e “tripudiando”, o “Write once, run anywhere” é realmente apenas uma declaração de intenções. Na verdade o mais correto é “write once, test anywhere”
[/quote]
foi mal.
na realidade é q tinha pensado na frase:
A prática encima a tese da inverdade que é o “run anywhere”.
ia me esquecendo.
é q me deixei levar pela palavra embaixo, e me atentei simplemente ao fato de M só ante de P e B
A língua portuguesa é muito complicada e cheia de regrinhas esquisitas.
Pelo menos é mais fácil que a língua japonesa, onde se você vê um nome de pessoa escrito em caracteres chineses (“kanji”), tem de perguntar para a pessoa que é dona desse nome qual é a pronúncia - um simples caracter muito básico, “明”, que está nas cartilhas do curso primário, pode indicar um nome de mulher “Akari” ou “Mei” ou um nome de homem “Akira”.
tô perguntando pq o marketing encima dessa frase é mt forte.
ai vejo uma simples abertura de uma bandeja de cdrom trepudiando encima do “anywhere” desse jeito. [/quote]
Quando se pensa em multi-plataforma (que é diferente de portabilidade), não é recomendado este tipo de solução…
Dependendo da sua necessidade, se há muita integração com o SO, talvez Java não seja a tecnologia ideal para este desenvolvimento.
Lembre-se: se você só tem um martelo, todo parafuso vira prego!
[quote=jmmenezes][quote]
e o “Write once, run anywhere”?
como fica?
ou será q só uma farsa?
tô perguntando pq o marketing encima dessa frase é mt forte.
ai vejo uma simples abertura de uma bandeja de cdrom trepudiando encima do “anywhere” desse jeito. [/quote]
Quando se pensa em multi-plataforma (que é diferente de portabilidade), não é recomendado este tipo de solução…
Dependendo da sua necessidade, se há muita integração com o SO, talvez Java não seja a tecnologia ideal para este desenvolvimento.
Lembre-se: se você só tem um martelo, todo parafuso vira prego![/quote]
[size=14] Hum…se o Java é o Martelo então JNA e JNI são os parafusos…rsrs… que coisa… [/size]
[size=14] Tirando JNA e JNI …outra maneira de fazer seria criando um VBScript e executando o mesmo[/size]
[size=14] pelo Runtime.getRuntime().exec() , mas enfim…[/size]
[size=14]Foi apenas um pequeno exemplo como se trabalhar com JNA…[/size]
Albert Einstein: A mente que se abre a uma nova idéia jamais voltará ao seu tamanho original.
Eu tenho um programa gigantesco em Swing que precisa apenas de algumas coisas que são dependentes de plataforma.
No meu caso, simplesmente isolo essas coisas em um conjunto de classes - se eu conseguir implementar, é claro - , e aviso o usuário que certas coisas não vão funcionar em determinadas plataformas.
[quote=entanglement]Eu tenho um programa gigantesco em Swing que precisa apenas de algumas coisas que são dependentes de plataforma.
No meu caso, simplesmente isolo essas coisas em um conjunto de classes - se eu conseguir implementar, é claro - , e aviso o usuário que certas coisas não vão funcionar em determinadas plataformas.[/quote]
Exato… eu já fiz a mesma coisa quando precisei gravar algumas configurações no registry… fiz uma factory e dependendo da plataforma gravava em lugares diferentes… no caso do windows era Registry… era um requisito (urgh) do sistema!
Por isso disse… talvez o java não seja a tecnologia ideal… talvez…
O exemplo foi bem valido… foi apenas um comentário ao write once…
O comando de fechar não vai funcionar em um notebook porque você precisa empurrar a gavetinha de qualquer jeito. “Parece que não sei…”
O comando de abrir, em um notebook, apenas solta a trava da gavetinha. Se você já olhou como funciona um drive de DVD de notebook, vai ver que a gavetinha abre por uma mola, não com um motorzinho (como é o caso de um desktop com aqueles leitores grandes de DVD. Mesmo desktops que têm aqueles leitores de DVD pequenos não conseguem fechar a gavetinha sozinhos. )
Se você usar um daqueles programas de copiar CDs, que fazem a verificação depois da gravação, vai ver que eles pedem para você empurrar a gavetinha porque não é possível recolher a gavetinha automaticamente.
[/quote]