Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Pozivanje telefonskog broja

[es] :: Elektronika :: Pozivanje telefonskog broja

Strane: < .. 1 2 3

[ Pregleda: 9465 | Odgovora: 52 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

damiru_2
Damir Ulovec
Radim za klikere...
127.0.0.1

Član broj: 55541
Poruke: 819
*.beotel.net.

Sajt: Pitajte me, možda ću Va..


+2 Profil

icon Re: Pozivanje telefonskog broja16.12.2005. u 17:33 - pre 223 meseci
Citat:
Proko: ... I na kraju, zar ne misliš da nije isto nekoliko redova macro koda i nekoliko MB programa...

Slažem se, naravno. Sad si me baš zaintrigirao, moraću da se pozabavim tom problematikom. Inače ja sam se pre nekih desetak godina baš zagrejao za VB programski jezik (pošto sam polako napuštao pomalo zastareli Clipper - baze podataka), pročitao sam neke knjige i ponešto naučio, ali sam prilično zarđao u tome. Razlog je bio što nisam video perspektivu u svemu tome, pa sam odustao od svega. Sve što sam tada ozbiljnije napravio u VB-u je jedna malena logička igra, a u VBA konvertor za M$ Word iz latinice u ćirilicu i obrnuto...
Sad je na redu ponovno instaliranje VB 6 i kopanje po objašnjenjima funkcija i naredbi.
A mogao bi i neki veći poznavalac VB-a da da svoj doprinos, nećemo ga ujesti!
- Je s' ti normalan? Ko bre da se skida go?
- Ja ću da se skinem do pojasa...
 
Odgovor na temu

damiru_2
Damir Ulovec
Radim za klikere...
127.0.0.1

Član broj: 55541
Poruke: 819
*.beotel.net.

Sajt: Pitajte me, možda ću Va..


+2 Profil

icon Re: Pozivanje telefonskog broja16.12.2005. u 22:25 - pre 223 meseci
Izvinjavam se, ja sam tek sada primetio da nije napisan kod onako kako sam mislio...
Umesto:
Code:
intReturn = Shell("[b]F[/b]:\{path}\Dialer.exe", 1)


trebalo je da bude:
intReturn = Shell("F:\{path}\Dialer.exe", 1)
dakle putanja do Dialer-a u XP-u.

Samo sam mislio da ću tako podebljati logičku oznaku drajva - F:, što izgleda ne funkcioniše tako.
Ovih dana baš nemam vremena, pa ću morati da ostavim tu zanimaciju za kasnije... Ali ima da je rešimo, makar i silom!

[Ovu poruku je menjao damiru_2 dana 16.12.2005. u 23:26 GMT+1]
- Je s' ti normalan? Ko bre da se skida go?
- Ja ću da se skinem do pojasa...
 
Odgovor na temu

Proko
Martin Hric
St.Pazova

Član broj: 29355
Poruke: 1562
80.93.231.*

Sajt: proko.rs


+28 Profil

icon Re: Pozivanje telefonskog broja16.12.2005. u 23:04 - pre 223 meseci
Na šta se ovo poslednje odnosi? Ako si mislio da podigne Dialer.exe u XP-u, neće moći, jer on nema klasičan Dialer, već HiperTerminal, a tu treba više toga upisati.
Inače, i nije mi to rešenje, već da XP koristi Dialer iz C particije, gde je Win98. A to zbog toga da bi iz oba sistema mogao da koristim isti macro. Drugo rešenje su dva macroa, svaki za odgovarajući OS.
Ali važnije mi je prvo završiti postojeći macro, tako da posle 10 sekundi isključi Dialer. Treba posle 10 sekundi poslati naredbu SendKeys, e sad koja bi to bila naredba analogna Alt+F4 ? I to dva puta, pošto se pojavljuju dva prozora, jedan "Dialing" i jedan "PhoneDialer".
Ja sam uradio da mi se telefon (spikerfon) uključuje automatski 5 sekundi od početka zvanja, i u slučaju zauzeća da se sam isključi, ali to je elektronika, a ovo je programiranje...
Imam i poslednu varijantu, a to je da izvedem sa tastature komande Alt+F4, koje bi opet neka automatika dva puta aktivirala. Šta ćeš, to znam da uradim, ali bi ovo ipak bilo elegantnije...
 
Odgovor na temu

damiru_2
Damir Ulovec
Radim za klikere...
127.0.0.1

Član broj: 55541
Poruke: 819
*.beotel.net.

Sajt: Pitajte me, možda ću Va..


+2 Profil

icon Re: Pozivanje telefonskog broja17.12.2005. u 19:24 - pre 223 meseci
Citat:
... Treba posle 10 sekundi poslati naredbu SendKeys, e sad koja bi to bila naredba analogna Alt+F4 ?...


'Naredba za zatvaranje aktivnog prozora
SendKeys "%{F4}"

'Naredba za dovođenje prozora u fokus
SendKeys "{F6}{TAB X}"

'Gde je: X = redni broj prozora koji treba dovesti u fokus (da bude aktivan). Brojevi počinju od 0 i pređani su isto onako kako se vide u prozoru korišćenjem Alt+Tab. Nadam se da sam bio bar malo jasan.

Ako ovo može da ti pomogne, pročitaj (attach). Preuzeto iz MSDN Library za Visual Studio 6. Podsećanje na "stare dane"...

Što se tiče funkcije Wait, evo jedne za makroe:

'Čeka 10 sekundi do sledećeg reda koda
WAIT(NOW()+"00:00:10")

Pozdrav.
- Je s' ti normalan? Ko bre da se skida go?
- Ja ću da se skinem do pojasa...
Prikačeni fajlovi
 
Odgovor na temu

Ero S Ovoga Sveta

Član broj: 21509
Poruke: 173
*.teol.net.



Profil

icon Re: Pozivanje telefonskog broja18.12.2005. u 01:03 - pre 223 meseci
E ovako. Ako ti ne predstavlja problem za nekih 20 € dobices program koji je bas ono sto
tebi treba. Prije pola godinne ja sam napravi takav program bas kakav ti trazis,
posto mi je grom pukao u telefon pa nije mogao da bira ali se moglo razgovarati kada se uspostavi
veza. Dakle modem poziva odredjeni broj, dignes slusalicu i nakon odredjenog vremena,
ja sam stavio 15 sekundi, modem prekine vezu i ti nastavljas razgovor telefonom.
Jedina razlika je u tome sto moj program koristi Access bazu podataka,
a ne Excel, ali to nebi bio problem jer se excel moze konvertovati u access ili
jednostavno mi posaljes taj tvoj imenik u excelu i ja ga ugradim u program ili ima jos
resenja.
Ako si zainteresovan reci mail na koji oces da ti posaljem demo programa, a dorade
cemo vrsiti u hodu.
 
Odgovor na temu

Proko
Martin Hric
St.Pazova

Član broj: 29355
Poruke: 1562
80.93.231.*

Sajt: proko.rs


+28 Profil

icon Re: Pozivanje telefonskog broja19.12.2005. u 10:00 - pre 223 meseci
Možda bi ga i kupio da si se javio na početku. Sada sam već tako blizu rešenja...Inače, već sam nekoliko puta objašnjavao zašto mora biti baš Excel, i nikakva konverzija, kopiranje ili nešto slično ne dolazi u obzir, jer to nije klasičan imenik, već spisak mušterija, koji se svaki čas dopunjava i menja. Ako ću da pravim poseban spisak telefonskih brojeva, onda mogu da zovem i direktno preko telefonskog aparata.
Pokušao sam da ubacim naredbe, po preporuci Damiru-2
Code:
Option Explicit

Sub DialOut() '
  Dim strDial As String
  Dim intReturn As Long
  strDial = ActiveCell.Value
  intReturn = Shell("C:\Windows\Dialer.exe", 1)
  'Pauza za ručnu komandu Alt+Tab kod XP-a
  Application.Wait Now + TimeValue("00:00:02")
  Application.SendKeys (strDial & "%d")
  Application.Wait Now + TimeValue("00:00:10")
  'Naredba za zatvaranje aktivnog prozora
  Application.SendKeys "%{F4}"
 End Sub

End Sub

I radi na Win98, isključi se posle 10 sekundi, ali Dialer neće da se skloni. Ponavljanjem poslednjeg reda u codu, skloni se i Dialer, ali hoće da se zatvori i Excel, dok sa ručnom komandom Alt+F4 se zatvara samo Dialer.
Naredba za dovođenje prozora u fokus
SendKeys "{F6}{TAB X}" ne radi. Postoji li komanda za dovođenje konkretnog programa (po imenu) u fokus, a takođe i njegovog zatvaranja, jer sam u međuvremenu otkrio da cod "%{TAB X} a ne {F6}{TAB X} predstavlja komandu Alt+Tab, ali ne radi svaki put!

A za upotrebu u WinXP bi trebalo da bude pre upisivanja telefonskog broja naredba za prelazak na aktivni prozor (koja mi ne radi). Kako bi to uticalo ako je taj prozor već aktivan (u slučaju Win98, gde ta naredba nije potrebna). Ili mora sasvim drugi macro?
Evo ovako: kada u WinXP-u uradim sledeće:
-pokrenem macro, ali ubacim pauzu pre upisivanja broja,
-zatim pritisnem Alt+Tab,
on zove telefonski broj, koji je upisan u ćeliju.
zatim (posle 10 sekundi):
-Alt+F4,
-Alt+F4,
isključi se Dialer, i to je to. Kako to prevesti u kod?



[Ovu poruku je menjao Proko dana 20.12.2005. u 00:05 GMT+1]
Prikačeni fajlovi
 
Odgovor na temu

damiru_2
Damir Ulovec
Radim za klikere...
127.0.0.1

Član broj: 55541
Poruke: 819
195.252.85.*

Sajt: Pitajte me, možda ću Va..


+2 Profil

icon Re: Pozivanje telefonskog broja19.12.2005. u 23:15 - pre 223 meseci
Citat:
Proko:... Naredba za dovođenje prozora u fokus SendKeys "{F6}{TAB X}" ne radi...

Možda si u brzini preleteo preko mog objašnjenja (citiram sebe):
Citat:
Damir:... Gde je: X = redni broj prozora koji treba dovesti u fokus (da bude aktivan). Brojevi počinju od 0 i pređani su isto onako kako se vide u prozoru korišćenjem Alt+Tab...

Dakle, može biti:
SendKeys "{F6}{TAB 0}"
SendKeys "{F6}{TAB 1}"
SendKeys "{F6}{TAB 2}"
SendKeys "{F6}{TAB 3}"
...
Citat:
Proko:... Kako bi to uticalo ako je taj prozor već aktivan (u slučaju Win98, gde ta naredba nije potrebna)...

Ne utiče nikako, prozor koji je već u fokusu i dalje ostaje u fokusu ako je izabran. Probaj: Alt+Tab (pojavljuje se prozorčić sa ikonama aktivnih prozora), pa klikni na ikonu programa koji je već u fokusu. Prozorčić nestaje, a aktivni prozor i dalje ostaje aktivan (u fokusu).
Priznajem, ne znači da uvek inma isti broj otvorenih prozora, pa je {TAB X} malo problematično. Postoji i naredba koja čita naslovni red prozora, pa na osnovu toga može da se zada koji prozor zatvoriti. Ali koja je...? Ne mogu da se setim, ali mislim da je... (vidi opet Attach).

Citat:
Proko:... kada u WinXP-u pre pokretanja macroa uradim sledeće:
-Ctrl+C,
zatim pokrenem macro,
-Alt+Tab,
-Ctrl+V,
-Enter
on zove telefonski broj, koji je upisan u ćeliju.
zatim (posle 10 sekundi):
-Alt+F4,
-Alt+F4,
isključi se Dialer, i to je to. Kako to prevesti u kod?


Možda ovako:
Code:

Sub DialOut_Click()
  Dim strDial As String
  Dim intReturn As Long

'// Kopiranje (Copy)
  Application.SendKeys {"^c"}  '/// Ctrl+Insert ili Ctrl+C, svejedno je
  strDial = ActiveCell.Value

'// Putanja je vec "overena" :)
  intReturn = Shell("C:\Windows\dialer.exe", 1)

'// Umetanje (Paste)
  Application.SendKeys {"^v"}  '/// Shift+Insert ili Ctrl+V, svejedno je

'// Biranje broja
  Application.SendKeys (strDial & "%d")

'//Cekanje isteka vremena
  Application.Wait Now + TimeValue("00:00:07")

'//Naredba za zatvaranje aktivnog prozora
  Application.SendKeys "%{F4}"
'//Application.SendKeys {"%fx"}
'//Alt+F4, ili File/Exit bi trebalo da bude isto.

'// Ovo gore bi moralo da radi kako treba, jer prethodno aktivan prozor
'// ponovo dolazi u fokus, a to je Excel. Znaci ponovnom naredbom
'// Alt+F4 zatvara se Excel.
  Application.SendKeys "%{F4}"

End Sub


Deluje konfuzno, ali šta ću... I to je deo programiranja.

Čudno da se niko ne javlja da besplatno pomogne povodom ovog, a sumnjam da baš niko ne zna. Nema ni veze..., Ako se ja stvarno zainatim ima da se vratim VB-u, pa kud puklo da puklo...
- Je s' ti normalan? Ko bre da se skida go?
- Ja ću da se skinem do pojasa...
Prikačeni fajlovi
 
Odgovor na temu

Proko
Martin Hric
St.Pazova

Član broj: 29355
Poruke: 1562
80.93.231.*

Sajt: proko.rs


+28 Profil

icon Re: Pozivanje telefonskog broja20.12.2005. u 11:07 - pre 223 meseci
Vidi ovako:
intReturn = Shell("C:\Windows\dialer.exe", 1)
podiže PhoneDialer, prvi je na ekranu, ali nije aktivan! Alt+Tab ga aktivira, ali ne i komanda u makrou, bez obzira koji index x upisivao. Ne prihvata ni:
AppActivate ("C:\Windows\dialer.exe", 1)
što bi trebalo da bude direktna komanda.
Isti problem je i pri zatvaranju, sa Alt i F4 se zatvori Dialer, a macro zatvara Excel, iako je prozor Dialera ispred.
Kod Win98 prvog problema nema, samo ostaje ovaj drugi.
Postoji li razlika u komandama za Office, pošto mi je jedan 2K, a drugi XP?
 
Odgovor na temu

damiru_2
Damir Ulovec
Radim za klikere...
127.0.0.1

Član broj: 55541
Poruke: 819
*.beotel.net.

Sajt: Pitajte me, možda ću Va..


+2 Profil

icon Re: Pozivanje telefonskog broja20.12.2005. u 20:38 - pre 223 meseci
Nažalost ja nemam Windows XP, već 2000.
Tačnije, dual (ili triple?) boot. Imam Windows 2000 i Windows 98 iz kojeg mogu da odem i u DOS 6.22 i Windows 3.11 po želji.
Ne dam ja Windows 2000 za hiljadu XP-a!
Jedino što mogu da ponudim je testiranje konkretnog primera. Okači nekoliko redova imenika u Excelu (imena i brojevi telefona proizvoljno, ne treba da budu pravi) i makro kod, pa ću se malo poigrati. Nekada je put trnovit i dug, ali uvek postoji svetlo na kraju tunela...

Eh, da... ne bi trebalo da postoje razlike za izvršavanje makroa u Office programima, tj. trebalo bi da su "vertikalno kompatibilni".

[Ovu poruku je menjao damiru_2 dana 20.12.2005. u 21:43 GMT+1]
- Je s' ti normalan? Ko bre da se skida go?
- Ja ću da se skinem do pojasa...
 
Odgovor na temu

Proko
Martin Hric
St.Pazova

Član broj: 29355
Poruke: 1562
80.93.231.*

Sajt: proko.rs


+28 Profil

icon Re: Pozivanje telefonskog broja20.12.2005. u 21:13 - pre 223 meseci
Telefonski brojevi su obični, napiši bilo koji broj u ćeliju i ostavi da bude ćelija aktivna. Hajde da rešimo problem sa Win98; ako nema dva puta zatvaranje, ostaje prozor Dialera, a ako je dva puta, zatvori se i Dialer i Excel!
U međuvremenu sam rešio problem sa XP-om; trebalo je dva puta pozvati Dialer. Tamo se sve lepo zatvori, samo na 98-mici ostaje pomenuti problem. E, sad, bilo bi lepo kada bi isti macro mogao da bude u oba sistema. Za sada "konačna" verzija je:
Code:
Option Explicit

Sub DialOut() '
  Dim strDial As String
  Dim intReturn As Long
  intReturn = Shell("C:\Windows\Dialer.exe", 1)
  strDial = ActiveCell.Value
  intReturn = Shell("C:\Windows\Dialer.exe", 1)
  Application.SendKeys (strDial & "%d")
  Application.Wait Now + TimeValue("00:00:10")
  Application.SendKeys "%{F4}"
 Application.SendKeys "%{F4}"
End Sub



[Ovu poruku je menjao Proko dana 20.12.2005. u 23:58 GMT+1]
 
Odgovor na temu

damiru_2
Damir Ulovec
Radim za klikere...
127.0.0.1

Član broj: 55541
Poruke: 819
*.beotel.net.

Sajt: Pitajte me, možda ću Va..


+2 Profil

icon Re: Pozivanje telefonskog broja24.12.2005. u 22:37 - pre 223 meseci
Uh...
Proko, bojim se da ti ne mogu pomoći u vezi ovog problema.
Naime, problem leži u samom pristupu VBA kodu od strane Excel-a.

Ovo je jedan od primera koji su bili skoro uspešni:
Code:

Option Explicit

Sub DialOut()
  Dim strDial As String
  Dim intReturn As Long
  Dim X As Integer
  
  'Promenljiva dobija vrednost izabrane celije u Excel-u
  strDial = ActiveCell.Value
  
  'Pozivanje Dialer-a i biranje telefonskog broja
  intReturn = Shell("C:\Windows\dialer.exe", 1)
  
  'Pauza do sledeceg reda koda
  Application.Wait Now + TimeValue("00:00:10")
  
  'Dovodjenje Dialer-a u fokus, da bude aktivan prozor
  'kako bismo ga mogli zatvoriti
  If Application.Activate <> "Phone Dialer" Then
    'Dialer nije u fokusu, izvrsava se petlja
    'dok je Dialer "u pozadini"
    While ActiveWindow <> "Phone Dialer"
      For X = 0 To 100
        'Prelazak na sledeci otvoren prozor
        Application.SendKeys "%{TAB " & X & "}"
      Next
    Wend
  Else
    'Dialer je u fokusu, izvrsava se naredba za njegovo zatvaranje
    Application.SendKeys "%{F4}"
  End If
End Sub

'EOF VBA code

Međutim, najveći problem je što se naredba "Application" odnosi isključivo na Excel i nikakav spoljni program ne dolazi u obzir.
Ovo možeš proveriti u VBA editoru tako što ćeš pokrenuti Debug Mode (taster F8 u VBA prozoru) i gledati kako se izvršava svaki red koda. U jednom trenutku će Phone Dialer biti aktivan, tj. pojaviće se na ekranu...
Code:

      For X = 0 To 100
        'Prelazak na sledeci otvoren prozor
        Application.SendKeys "%{TAB " & X & "}"
      Next

... ali funkcija While neće to registrovati, jer se ne radi o Excel-u, pa će nastaviti dalje - ali samo do 100. Ne znam način da izbrojim koliko ima otvorenih prozora, a nisam hteo da lupam velike cifre da se ne bi makro izvršavao u beskonačnost.
Code:

    While ActiveWindow <> "Phone Dialer"

Dakle Excel se zatvori zato što je makro pokrenut iz njega, a Phone Dialer je samo pomoćni program za Excel, pa se zatvara zajedno s njim.

U Visual Basic-u ceo kod uopšte ne funkcioniše, pa bi trebalo pisati desetak ili više redova iz početka.
Vidim da postoji i slično rešenje što se tiče VB-a, ali mislim da to nije zadovoljavajuće (opet u attach).

[Ovu poruku je menjao damiru_2 dana 24.12.2005. u 23:40 GMT+1]
- Je s' ti normalan? Ko bre da se skida go?
- Ja ću da se skinem do pojasa...
Prikačeni fajlovi
 
Odgovor na temu

damiru_2
Damir Ulovec
Radim za klikere...
127.0.0.1

Član broj: 55541
Poruke: 819
195.252.85.*

Sajt: Pitajte me, možda ću Va..


+2 Profil

icon Re: Pozivanje telefonskog broja24.12.2005. u 23:36 - pre 223 meseci
Poslednje "hvatanje za slamku"...
Code:

Option Explicit

Sub DialOut()
Dim CellContents As String
Dim AppName As String
Dim AppFile As String
Dim TaskID As Variant
    CellContents = ActiveCell.Value
    If CellContents = "" Then
        MsgBox "Selektuj ćeliju koja sadrži telefonski broj", vbInformation
        Exit Sub
    End If
    AppName = "Dialer"
    AppFile = "C:\Windows\dialer.exe"
    On Error Resume Next
    AppActivate (AppName)
    If Err.Number <> 0 Then
        Err = 0
        TaskID = Shell(AppFile, vbNormalFocus)
        If Err <> 0 Then
           MsgBox "Can't start " & AppFile, vbExclamation
           Exit Sub
        End If
    End If
    Application.SendKeys "%n" & CellContents, True
    Application.SendKeys "%d"
    Application.Wait Now + TimeValue("00:00:10")
    Application.SendKeys "%{F4}"
End Sub

Ovo radi, ali kod mene uopšte neće da bira brojeve. Doduše, tip ćelije je "Opšti format", pa je možda i to razlog (mada ne verujem). Uglavnom, nadam se da je to to.
- Je s' ti normalan? Ko bre da se skida go?
- Ja ću da se skinem do pojasa...
 
Odgovor na temu

Proko
Martin Hric
St.Pazova

Član broj: 29355
Poruke: 1562
80.93.231.*

Sajt: proko.rs


+28 Profil

icon Re: Pozivanje telefonskog broja26.12.2005. u 10:08 - pre 223 meseci
Žao mi je što nisi pažljivo pogledao moj poslednji post, ili ga nisi ponovo pogledao, jer sam ga menjao, pošto sam problem upisivanja broja rešio (dvostrukim pozivanjem Dialera). Ostao je problem što se pod Win98 na kraju zatvara i Excel, a pod XP-om se lepo zatvori samo Dielar, ali posle toga scroll dugme postaje zum, a obeležene ćelije neće da se deaktiviraju. Zatvaranjem i ponovnim otvaranjem Excela, sve je u redu. Ovako je macro upotrebljiv, samo bi zatvaranje Dialera trebalo drugačije rešiti.

[Ovu poruku je menjao Proko dana 26.12.2005. u 13:23 GMT+1]
 
Odgovor na temu

[es] :: Elektronika :: Pozivanje telefonskog broja

Strane: < .. 1 2 3

[ Pregleda: 9465 | Odgovora: 52 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.