[vb6] In een for lus, wachten op sub?

Pagina: 1
Acties:

  • semicon
  • Registratie: Augustus 2003
  • Laatst online: 20-08-2025
Hallo,

Ik heb het volgende stukje code, die dmv SendKeys de inhoud van een PDF haalt. Alleen, als deze in een for lus gaat, gaat deze te snel. en lopen er dingen door elkaar..

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
Sub HandleAFile(pdffile As String)
    Dim CurPros
    If FileExists("c:/" & Left(pdffile, Len(pdffile) - 4) & ".txt") Then
        Kill "c:/" & Left(pdffile, Len(pdffile) - 4) & ".txt"
    End If
    StatusLog.Text = StatusLog.Text & "Bezig met openen " & pdffile & "..." & vbNewLine
    CurPros = ShellExecute(Me.hwnd, "open", pdffile, vbNullString, "C:\", 1)
    Sleep 10000
    StatusLog.Text = StatusLog.Text & "PDF Open bezig met selecteren..." & vbNewLine
    SendKeys "^a"
    SendKeys "^c", True
    StatusLog.Text = StatusLog.Text & "Tekst uit PDF gekopiëerd." & vbNewLine
    Sleep 1000
    SendKeys "%b", True
    SendKeys "a", True
    Sleep 500
    CurPros = Shell("notepad.exe", vbNormalFocus)
    StatusLog.Text = StatusLog.Text & "notepad wordt aangeroepen..." & vbNewLine
    Sleep 1000
    SendKeys "^v"
    StatusLog.Text = StatusLog.Text & "klembord geplakt." & vbNewLine
    SendKeys "%b", True
    Sleep 50
    SendKeys "p", True
    Sleep 100
    SendKeys Left(pdffile, Len(pdffile) - 4), True
    StatusLog.Text = StatusLog.Text & "Bestandsnaam gewijzigd." & vbNewLine
    SendKeys "{TAB}", True
    SendKeys "{TAB}", True
    SendKeys "{TAB}", True
    SendKeys "{TAB}", True
    Sleep 100
    SendKeys "{DOWN}", True
    SendKeys "{DOWN}", True
    SendKeys "{DOWN}", True
    SendKeys "{DOWN}", True
    SendKeys "{ENTER}", True
    Sleep 200
    SendKeys "{ENTER}", True
    Sleep 200
    StatusLog.Text = StatusLog.Text & "Tekst opgeslagen." & vbNewLine
    SendKeys "%b", True
    SendKeys "a", True
    StatusLog.Text = StatusLog.Text & "Done."
End Sub
Private Sub Command1_Click()
    Dim fso, Root, calfile
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set Root = fso.Getfolder("c:\")
    For Each calfile In Root.Files
        If LCase(Right(calfile.Name, 3)) = "pdf" Then
            HandleAFile calfile.Name
        End If
    Next
End Sub


Ik zoek dus een manier om de for lus te laten wachten voordat hij de volgende waarde ingaat..
Ik heb alleen geen idee hoe dit te bereiken, iemand?
( Eventueel commentaar op de code, aangezien ik voor visual basic vrij nieuw ben. :x )

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Sleep :Y)
Ik zal maar niet ingaan op je code en het idee/werking ervan :+ /rilling krijgt....

Ik zie trouwens (nu pas) opeens allerlei sleeps al in je code staan....?

Anders wacht je met een while-lusje op een bepaald tijdstip of een x-aantal secondes (doevents enzo)...

Aan de andere kant zou ik die code helemaal niet gebruiken :Y)

[ Voor 163% gewijzigd door RobIII op 18-02-2005 10:34 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Verwijderd

Kijk anders eens naar AutoIt, een scripttaal die specifiek bedoeld is om andere programma's mee aan te sturen op de manier die jij wilt. Autoit heeft ook een OCX versie, waardoor deze via VB is aan te roepen

http://www.hiddensoft.com/autoit3/

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 14:50

mulder

ik spuug op het trottoir

Kun je niks met WaitForSingleObject api?

oogjes open, snaveltjes dicht


Verwijderd

Trouwens, Acrobat reader heeft ook een ocx waarmee je een PDF kunt openen in je VB applicatie. Misschien dat je daar iets mee kunt ?

  • Kayshin
  • Registratie: Juni 2004
  • Laatst online: 09-03-2018

Kayshin

Bl@@T @@P!!!

Is het niet zo dat sleep een bepaald aantal miliseconden wacht voordat het verder gaat? Zo kun je toch nooit weten of een bepaalde functie al doorlopen is? Bij een snellere processor zal je een lager aantal ms nodig hebben...

My personal videoteek: -Clique-; -NMe- is een snol!


  • semicon
  • Registratie: Augustus 2003
  • Laatst online: 20-08-2025
Tja, ik ben er dan ook uit gekomen doormiddel van een exe file die ik aanroep via Shell.
Deze exe converteerd de pdf naar txt, en ik kan verder.

Iig bedankt zover, sendkeys was ook geen goed eoplossing nee.

  • sopsop
  • Registratie: Januari 2002
  • Laatst online: 11-05 08:55

sopsop

[v] [;,,;] [v]

semicon schreef op vrijdag 18 februari 2005 @ 22:32:
Tja, ik ben er dan ook uit gekomen doormiddel van een exe file die ik aanroep via Shell.
Deze exe converteerd de pdf naar txt, en ik kan verder.

Iig bedankt zover, sendkeys was ook geen goed eoplossing nee.
Ook dat is nou niet echt een toonbeeld van een mooie oplossing. 't ligt natuurlijk aan het doel (of de doelgroep) van je app of dit volstaat, maar zoals gezegd: er zijn zat componentjes om binnen je applicatie (zonder die lelijke shell-aanroep) een PDF te strippen.

En btw notepad via sendkeys aansturen om een txt bestand aan te maken..... Bestudeer het File System Object (FSO) eens. En het clipboard (type maar eens clipboard in je code, puntje er achter typen en er gaat een 'copy-paste' wereld voor je open) is ook eenvoudig binnen je VB-app te gebruiken (al is dat ook zeer bug gevoelig), zeker met die losjes gedefinieerde sleeps in je code.
Pagina: 1