importjava.util.InputMismatchException;importjava.util.Scanner;importcom.sun.jna.Native;publicclassWinmmTeste{staticintop;publicstaticvoidmain(String[]args){WinmmopenClose=(Winmm)Native.loadLibrary("winmm.dll",Winmm.class);Scannersc=newScanner(System.in);do{System.out.println("Para Abrir Gaveta (1) - Para Fechar Gaveta (2)");System.out.print("Opção: ");try{op=sc.nextInt();}catch(InputMismatchExceptione){System.out.println("\nCaracteres não são Validos - Fim do Programa");System.exit(1);}switch(op){case1:openClose.mciSendStringA("Set cdaudio door open wait",0,0,0);System.out.println("\nGaveta Aberta...");break;case2: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]
Testei no windows 7 e em um notebook e funcionou tambem… Pena que o comando de fechar não funcionou =D
jeanmalvessi
Pra mim funcionou o fechar!
E
entanglement
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.
criador
Fala gurizada…
Esta dando a seguinte exceção quando rodo o código:
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.
E
entanglement
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.
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”
G
GilsonNunes
entanglement:
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.
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”
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
E
entanglement
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”.
J
jmmenezes
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.
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!
A
andy11x
jmmenezes:
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.
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!
[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.
E
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.
J
jmmenezes
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.
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…
E
entanglement
Casualmente o tal do programa gigante rodou em MacOSX, Linux e Windows sem precisar fazer muito esforço. Imagine se fosse em outra linguagem
Yago_Ernandes
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.
Eu to ligado… falei com tom irônico mesmo…
G
GilsonNunes
fosse em outra linguagem, teria rodado tb.
acrescentaria na lista o WinCE, e mais alguns q ainda não testei.
e td isso sem dependencia.
É o “write once, compile for anywhere”
nel
fosse em outra linguagem, teria rodado tb.
acrescentaria na lista o WinCE, e mais alguns q ainda não testei.
e td isso sem dependencia.
É o “write once, compile for anywhere”
Então tu me diz que um dot net e um C# da vida, por exemplo, rodariam facilmente nos três SO´s ?
G
GilsonNunes
que relação tem a palavra “compile” com essas linguagens supra citadas?
rsrs. to brincando.
mas falando sério, as linguagens no caso seria, c++, pascal, etc.
vc tem um COMPILADOR q gera binários para as plataformas alvos a partir de um único fonte.
na hora de compilar vc só escolhe o SO alvo e o widgetset e pronto
nel
GilsonNunes:
que relação tem a palavra “compile” com essas linguagens supra citadas?
rsrs. to brincando.
mas falando sério, as linguagens no caso seria, c++, pascal, etc.
vc tem um COMPILADOR q gera binários para as plataformas alvos a partir de um único fonte.
na hora de compilar vc só escolhe o SO alvo e o widgetset e pronto
É que disse linguagens, achei muito genérico.
E escolhe o SO em outras linguagens, no Java isso não existe (supondo que saiba o que está fazendo).
É claro que tem suas limitações como qualquer outra linguagem, mas ainda considero uma excelente linguagem multiplataforma.
FelipeWM
Executei o código mas está dando o erro abaixo:
java.lang.UnsatisfiedLinkError: Error looking up function 'mciSendString': Não foi possível encontrar o procedimento especificado.
at com.sun.jna.Function.<init>(Function.java:179)
at com.sun.jna.NativeLibrary.getFunction(NativeLibrary.java:430)
at com.sun.jna.NativeLibrary.getFunction(NativeLibrary.java:410)
at com.sun.jna.Library$Handler.invoke(Library.java:205)
at $Proxy0.mciSendString(Unknown Source)
at cdrom.WinmmTeste.main(WinmmTeste.java:29)
FelipeWM
Executei porém gerou o erro abaixo:
java.lang.UnsatisfiedLinkError: Error looking up function 'mciSendString': Não foi possível encontrar o procedimento especificado.
at com.sun.jna.Function.<init>(Function.java:179)
at com.sun.jna.NativeLibrary.getFunction(NativeLibrary.java:430)
at com.sun.jna.NativeLibrary.getFunction(NativeLibrary.java:410)
at com.sun.jna.Library$Handler.invoke(Library.java:205)
at $Proxy0.mciSendString(Unknown Source)
at cdrom.WinmmTeste.main(WinmmTeste.java:29)