[RESOLVIDO]Criando atalho com o Java

Buenas galera!

o lance é o seguinte, necessito que ao ser executado meu .jar crie um atalho “dele mesmo” no inicializavel do windows.

a lógica ja esta pronta, só não sei como criar um atalho pelo java, se existe algum comando especifico.

tentei criar um atalho a mão e jogar dentro do meu projeto, mas toda vez que meu .jar copia o atalho para a pasta inicializar do windows, o atalho aparece mas sem nenhuma informação.

Grato.

[code] public static void copyFile(File source, File destination) throws IOException {
if (destination.exists())
destination.delete();

    FileChannel sourceChannel = null;
    FileChannel destinationChannel = null;

    try {
        sourceChannel = new FileInputStream(source).getChannel();
        destinationChannel = new FileOutputStream(destination).getChannel();
        sourceChannel.transferTo(0, sourceChannel.size(),
                destinationChannel);
    } finally {
        if (sourceChannel != null && sourceChannel.isOpen())
            sourceChannel.close();
        if (destinationChannel != null && destinationChannel.isOpen())
            destinationChannel.close();
   }

}
[/code]

ai para executar o metodo…vc passa como source o seu arquivo e como destination faz o seguinte:

String userName = System.getProperty("user.name");

windows xp:

caminhoPastaInicializar = "C:\Documents and Settings\" + userName + "\Menu Iniciar\Programas\Inicializar";

windows vista

caminhoPastaInicializar = "C:\users\" + userName + "\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup";

Dá uma olhada nestes links:


Se não ajudar só falar.

Amigo como o java é multi-plataforma considero meio inviável fazer isso
a solução seria ou trabalhar com jni ou fazer na mão

bom dia so novo no forum…

seguinte, tenho uma classe em java qe gera um arquivo.etq pra imprimir etiquetas em uma impressora zebra conforme o codigo abaixo:

package fiasiniinformix;
import com.sun.org.apache.bcel.internal.util.Class2HTML;
import java.io.;
import java.sql.
;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
*

  • @author Fabio
    */
    public class Main {

/**

  • @param args the command line arguments
    */
    public static void main(String[] args) throws ParseException {
    // TODO code application logic here
    String etiqueta = “”;
    String cod_empresa = “”;
    String cnpj_cliente = “”;
    String nom_cliente = “”;
    String end_cliente = “”; //endereço do cliente
    String cod_cidade;
    String des_item;

Statement stmt;
ResultSet rs;

String url = (“jdbc:informix-sqli://192.168.0.242:1525ATABASE=logix;INFORMIXSERVER=prdfiasini;user=informix;password=informix”);

Connection conn = null;

System.out.println(url);

try {
Class.forName(“com.informix.jdbc.IfxDriver”);
}
catch (Exception e) {
System.out.println(e);
}

try {
conn = DriverManager.getConnection(url);
System.out.println("\nAqui conn: " + conn.toString());
} catch (SQLException e) {
System.out.println(“FAILED: failed to connect!”);
}
try {
System.out.println(“Connected …”);
DatabaseMetaData md = conn.getMetaData();
System.out.println("Driver name: " + md.getDriverName());
System.out.println("Driver version: " + md.getDriverVersion());
System.out.println("Database product name: "

  • md.getDatabaseProductName());
    System.out.println("Database product version: "
  • md.getDatabaseProductVersion());

stmt = conn.createStatement();
//rs = stmt.executeQuery(“select cod_empresa, num_ordem from ordens”);
rs = stmt.executeQuery( "select clientes.nom_cliente, "

  • "clientes.end_cliente, "
  • "cidades.den_cidade, "
  • "ordem_montag_lote.num_lote_om, "
  • "ordem_montag_mest.num_om, "
  • "item.den_item, "
  • "cores.den_cor, "
  • "ped_itens_grade.qtd_pecas_solic, "
  • "cidades.cod_uni_feder "
    /*ordem_montag_item.num_pedido,
    pedidos.cod_cliente,
    ped_itens.num_sequencia,
    ped_itens_grade.qtd_pecas_solic, */
  • "from ordem_montag_mest join ordem_montag_item on (ordem_montag_mest.cod_empresa = ordem_montag_item.cod_empresa and ordem_montag_mest.num_om = ordem_montag_item.num_om) "
  • "join ordem_montag_lote on (ordem_montag_lote.cod_empresa = ordem_montag_mest.cod_empresa and ordem_montag_lote.num_lote_om = ordem_montag_mest.num_lote_om) "
  • "join pedidos on (pedidos.cod_empresa = ordem_montag_item.cod_empresa and pedidos.num_pedido = ordem_montag_item.num_pedido) "
  • "join ped_itens on (pedidos.cod_empresa = ped_itens.cod_empresa and pedidos.num_pedido = ped_itens.num_pedido and ordem_montag_item.num_sequencia = ped_itens.num_sequencia) "
  • "join estrut_grade on (ped_itens.cod_item = estrut_grade.cod_item_pai and ped_itens.cod_empresa = estrut_grade.cod_empresa) "
  • "join ped_itens_grade on (ped_itens_grade.cod_empresa = ped_itens.cod_empresa "
  • "and ped_itens_grade.num_pedido = ped_itens.num_pedido "
  • "and ped_itens_grade.num_sequencia = ped_itens.num_sequencia "
  • "and ped_itens_grade.cod_grade_1 = estrut_grade.cod_grade_1) "
  • "join item on (estrut_grade.cod_empresa = item.cod_empresa and estrut_grade.cod_item_compon = item.cod_item) "
  • "join cores on (ped_itens_grade.cod_grade_1 = cores.cod_cor) "
  • "join clientes on (pedidos.cod_cliente = clientes.cod_cliente) "
  • "join cidades on (clientes.cod_cidade = cidades.cod_cidade) "
  • "where ordem_montag_lote.num_lote_om = 448 "
  • "order by ordem_montag_mest.num_om, item.den_item ");

while (rs.next()){
//cod_empresa = rs.getString(“empresa”);
//cnpj_cliente = rs.getString(“cliente”);
nom_cliente = rs.getString(“nom_cliente”);
end_cliente = rs.getString(“end_cliente”);
//cod_cidade = rs.getString(“cod_cidade”);
String cidade = rs.getString(“den_cidade”);
String num_lote_om = rs.getString(“num_lote_om”);
String num_om = rs.getString(“num_om”);
//String cod_item = rs.getString(“cod_item”);
String den_item = rs.getString(“den_item”);
String cor = rs.getString(“den_cor”);
float qtd_item = Float.parseFloat(rs.getString(“qtd_pecas_solic”));
String estado = rs.getString(“cod_uni_feder”);
int int_qtd_item = Float.floatToIntBits(qtd_item);
System.out.println(qtd_item);
/*
qtd_planej = Float.parseFloat(rs.getString(“qtd_planej”));
int_qtd_planej = Float.floatToIntBits(qtd_planej);
*
*/

//etiqueta += “^F030,55^XGR:LOGO,1,1^FS”;
//FO -> Margem esquerda
/*
SimpleDateFormat formatador = new SimpleDateFormat(“yyyy-mm-dd”);
Date data = formatador.parse(dat_entrega);

SimpleDateFormat novoFormatador = new SimpleDateFormat(“dd/mm/yyyy”);
dat_entrega = novoFormatador.format(data);
*
*/

for( int i = 0; i < qtd_item; i++ )
{
etiqueta += “^XA”;
etiqueta += “\n^FWR”;
etiqueta += “\n ^FO660,40^A0,50,40^FDCliente: ^FS”;
etiqueta += “\n^FO650,170^A0,75,45^FD”+nom_cliente.trim()+"^FS";
etiqueta += “\n^FO560,40^A0,50,40^FDEndereco: ^FS”;
etiqueta += “\n^FO550,200^A0,60,40^FD”+end_cliente.trim()+"^FS";
etiqueta += “\n^FO460,40^A0,50,40^FDCidade: ^FS”;
etiqueta += “\n^FO450,170^A0,60,40^FD”+cidade.trim()+"^FS";
etiqueta += “\n^FO360,40^A0,50,40^FDNum Lote: ^FS”;
etiqueta += “\n^FO350,210^A0,68,40^FD”+num_lote_om.trim()+"^FS";
etiqueta += “\n^FO260,40^A0,50,40^FDNum OM: ^FS”;
etiqueta += “\n^FO255,200^A0,68,40^FD”+num_om.trim()+"^FS";
etiqueta += “\n^FO160,40^A0,50,40^FDItem: ^FS”;
etiqueta += “\n^FO150,160^A0,68,40^FD”+den_item.trim()+"^FS";
//etiqueta += “\n^FO360,40^A0,50,30^FDProduto: ^FS”;
//etiqueta += “\n^FO350,140^A0,68,30^FD”+des_item.trim()+"^FS";
etiqueta += “\n^FO70,40^A0,50,35^FDCor: ^FS”;
etiqueta += “\n^FO70,140^A0,60,35^FD”+cor.trim()+"^FS";
etiqueta += “\n^FO460,510^A0,50,35^FDEstado: ^FS”;
etiqueta += “\n^FO450,630^A0,60,35^FD”+estado.trim()+"^FS";
//etiqueta += “\n^FO40,140^ABN,20,10^FD”+dat_entrega+"^FS";
//etiqueta += “\n^FO40,180,^B2,150,Y,N,N”;
//etiqueta += “\n^FO40,60^A0,25,20^FD”+des_item.trim()+"^FS";
//etiqueta += “\n^FO40,350^ABR,30,20^FD”+des_item.trim()+"^FS"; //ABN,30,20 -> 20 É O TAMANHO DA FONTE
//O “R” deve imprimir tarja preta com escrita branca
etiqueta += “\n^XZ”;
}
GerarArquivo(etiqueta);
//System.out.println(cod_empresa);
//System.out.println(num_ordem);
} //fim while (rs.next())

} catch (SQLException e) {
//System.out.println(“FAILED: failed to connect!”);
System.out.println(e);
}
try {
conn.close();
} catch (SQLException e) {
System.out.println(“FAILED: failed to close the connection!”);
}
System.out.println(“Done!”);
}

public static String GerarArquivo( String textoEtiqueta ){
try{
File arquivo;

arquivo = new File("\\192.168.0.230\scanner\entrega448.etq");
FileOutputStream fos = new FileOutputStream(arquivo);
String texto = textoEtiqueta;
fos.write(texto.getBytes());
fos.close();
}
catch (Exception ee) {
ee.printStackTrace();
}
return “ok”;
}

}

preciso criai uma tela pra um usuario digitar o numero do lote qe esta nessa linha + "where ordem_montag_lote.num_lote_om = 448 ", mas nao estou conseguindo…

to tentando chamar uma classe por um botao, mas nao esta dando mto certo…
codigo do botao:

Main main = new Main();
main.GerarArquivo();

preciso pra alguma coisa como parametro nessa linha : main.GerarArquivo(parametroAqui);

mas nao sei o qe passar…

se puderem me ajudar seirei grato…

obrigado…

Dá uma olhada em Swing
Trabalha com interface gráfica no java.

duduribeiro

Consegui, ja tinha toda a logica que voce me passou, fiz para windows 7 e xp ( os que os clientes usam )

o meu problema era só no copiar o atalho de dentro do jar.

consegui com seu exemplo…

vlw!

beleza…qlquer coisa deixa a duvida