ESCREVER NOTEPAD COM LOOP

OGUSTAVOREIS 02/08/2013 10:07:06
#426927
Valeu muito obrigado, porém da o seguinte erro [Ô]O argumento [ô]Style[ô] é um valor inválido.[Ô]
E se eu troco o caminho e coloco em outro existe, aparece [Ô]Caminho Inválido[Ô].
ASHKATCHUP 02/08/2013 10:18:39
#426928
Em qual botão tu está clicando? Em qual linha o projeto da erro? Tem que postar mais informações, cara. Ninguem consegue ler mentes...
OGUSTAVOREIS 02/08/2013 10:38:17
#426932
Clico no botão Executar.
Está dando erro nessa linha:
Citação:

Dim escreve As New IO.StreamWriter(Shell([Ô]C:\Users\EVANDRO\Desktop    este.txt[Ô], False)) [ô] True = adicionar texto

ASHKATCHUP 02/08/2013 13:18:13
#426940
Por acaso, esta pasta existe?

Como tu pode ver, ele abre um arquivo TXT existente no desktop do usuário [Ô]EVANDRO[Ô]. Esse usuário existe no teu pc?
OGUSTAVOREIS 02/08/2013 14:15:20
#426943
Sim existe, é o usuario que utilizo...
Fiz o executar2 segue o codigo:
Private Sub Executar2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Executar2.Click
Dim escreve As New StreamWriter([Ô]C:\Users\EVANDRO\Desktop    este.txt[Ô], True)
Dim processo As New Process

processo.StartInfo.FileName = [Ô]notepad.exe[Ô]
processo.StartInfo.Arguments = [Ô]C:\Users\EVANDRO\Desktop    este.txt[Ô]
processo.Start()
[ô]Do

escreve.WriteLine(TxtDigitar.Text)
[ô]Thread.Sleep([Ô]2000[Ô])

[ô]Loop
escreve.Close()
processo.WaitForExit()
MsgBox([Ô]O Processo foi finalizado![Ô])


End Sub

Sem o loop ele funciona, escreve o que esta no txtDigitar, porem preciso que ele faça isso de tempo em tempo e ainda não estou conseguindo.
ASHKATCHUP 02/08/2013 15:01:14
#426945
Cara, teu código ta muito confuso... Vamos começar do zero.

Cria um projeto com 3 textbox e um botão.

txtTexto = texto que será digitado no bloco de notas
txtTempo = intervalo de tempo entre as digitações
txtRepetir = numero de vezes que o programa digitará o texto no bloco de notas
btnProcessar = botao que executa o codigo

O codigo do form é esse:



Public Class Form1
[ô]API do Windows que joga o foco pra alguma janela específica
Private Declare Function SetForegroundWindow Lib [Ô]user32[Ô] (ByVal hwnd As Long) As IntPtr

Private Sub btnProcessar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnProcessar.Click
Dim pProcesso As New Process
[ô]
pProcesso.StartInfo.FileName = [Ô]notepad.exe[Ô] [ô]Abre o Bloco de Notas
pProcesso.Start()
[ô]
For i = 1 To Integer.Parse(txtRepetir.Text())
[ô]Joga o foco para o bloco de notas
SetForegroundWindow(pProcesso.Handle)
[ô]Aguarda o foco ser transferido. Evita bugs
System.Threading.Thread.Sleep(200)
[ô]Escreve no Bloco de notas
SendKeys.Send(txtTexto.Text)
[ô]Aguarda o intervalo digitado
System.Threading.Thread.Sleep(Integer.Parse(txtTempo.Text) * 1000)
Next
[ô]
[ô]Finaliza o Bloco de notas
pProcesso.Kill()
[ô]
[ô]Messagem do fim
If (Err.Number = 0) Then
MessageBox.Show([Ô]OKAY[Ô], [Ô]Mensagem[Ô], MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly, False)
Else
MessageBox.Show([Ô]Erro[Ô], [Ô]Mensagem[Ô], MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly, False)
End If
[ô]
End Sub
[ô]
End Class

OGUSTAVOREIS 02/08/2013 15:23:47
#426950
Muito grato pela ajuda, mas teria como retirar o txtRepetir, pq preciso que seja infinito e só para quando clica em um outro botão tipo [Ô]Parar[Ô]!?

Esta dando erro nessa linha:
SetForegroundWindow(pProcesso.Handle)

Erro: Uma chamada para a função PInvoke [ô]WindowsApplication1!WindowsApplication1.Form1::SetForegroundWindow[ô] desbalanceou a pilha. Isso ocorreu provavelmente porque a assinatura gerenciada de PInvoke não corresponde à assinatura de destino não gerenciada. Verifique se a convenção e o parâmetro de chamada da assinatura de PInvoke são iguais aos da assinatura não gerenciada de destino.

Você conseguiu rodar no seu PC?
ASHKATCHUP 02/08/2013 15:29:38
#426951
Cara, tu tem que ler o código e mudar ele para tua necessidade.

Eu até comentei as linhas para auxiliar.

Se tu quer tirar o numero de repetições, é só alterar o laço de repetição.


Quanto ao erro da API SetForegroundWindow...

No meu computador, funcionou direitinho. Eu uso Windows 7. E tu?

Além disso, é importante rodar o visual studio como ADMINISTRADOR. Dependendo das configurações de segurança, o Windows pode bloquear o uso de API.

OGUSTAVOREIS 02/08/2013 15:39:12
#426953
Uso o Windows 7 e VB10, executo como administrador.
Fico grato pela paciência e dedicação, vou trabalhar nesse codigo e tentar fazer conforme as minhas necessidades, se não conseguir retorno ao fórum.

[c]Muito obrigado.
ASHKATCHUP 02/08/2013 16:12:22
#426957
Tu copiou o código inteiro? A API foi declarada como eu coloquei?
Que erro estranho

Uma dica: toda vez que tu colar um código no forum, use a tag [Ô]C[Ô] entre colchetes.


assim


E dá uma olhada no projeto anexo. Funcionou perfeitamente para mim...
Página 2 de 3 [24 registro(s)]
Faça seu login para responder