Ennenkuin alas edes yrittään väsäämään, kysyn ensin että onko se edes mahdollista.
Eli, minulla on formi jossa x-määrä textbox:ja sekä nappi "send".
Send-napin ideana olisi että se avaisi outlookin uuden viestin lähetyksen ja ottaisi tarvittavat tiedot VB:n textbox:sta. Esim. TO, Subject-kentät.
Onko tämä mahdollista?
Suurta osaa (mutu) Mikkisoftan ohjelmia pystyy käskyttämään varsin kattavasti commandlinen kautta. Tuossa Outlookin switchejä, joista etsiä haluamansa. Googlella lisää...
No joo, tuollahan niitä komentoja on =) Sitten törmäsin onkelmaan.
Miten tähän koodin pätkään saisin VASTAANOTTAJAN kohdalle txt_mail textbox:sta haettua osoitteen?
buttoni jolla aukaistaan outlook:
retval = Shell("C:\Program Files\Microsoft Office\OFFICE11\OUTLOOK.exe /c ipm.note /m VASTAANOTTAJA")
näinhän se ei onnistu:
retval = Shell("C:\Program Files\Microsoft Office\OFFICE11\OUTLOOK.exe /c ipm.note /m txt_mail.Text")
'joko retval = Shell("C:\Program Files\Microsoft Office\OFFICE11\OUTLOOK.exe /c ipm.note /m " & txt_mail.Text) 'tai Dim abu As String abu = "C:\Program Files\Microsoft Office\OFFICE11\OUTLOOK.exe /c ipm.note /m " & txt_mail.Text retval = Shell(abu)
Toimiihan se BadSource.
Nyt pitää alkaa vain miettiä subjectin ja bodyn laittaminen samaan lausekkeeseen.
komentokehotteessa se ajetaan:
Outlook.exe /c ipm.note /m test@poremsky.com?subject=hei
Yritin tyylillä:
OUTLOOK.exe /c ipm.note /m " & txt_mail.Text ?subject= & txt_subject.Text)
Mutta se ei tykkäää kysymysmerkistä.
Lainausmerkit siihen suoran tekstin ympärille eli ?:stä =:iin.
"?subject=" <- tuohon väliin?
Ei toimi. Expected: list separator or )
Ja se &-merkki tietenkin. Onko opas varmasti tullut luettua?
Luettu on ja taisteltu on. Usko pois :)
Täältä kysyminen oli se viimeinen vaihtoehto.
"OUTLOOK.exe /c ipm.note /m " & txt_mail.Text & "?subject=" & txt_subject.Text
Kiitos kärsivällisyydestä Metabolix. Lueskelen juuri opasta uudemman kerran.
Mut nyt tosiaan valoitti hieman(lue paljon) enemmän kun sai esimerkin ;)
Juu. Eli on aivan sama, onko teksisi "Tekstiä" vai Tekstiä.Text, ne yhdistetään aina &-merkillä.
Nyt tässä vuorokauden taistellu, että mitenkä saisin clipboardista pastettua kaikki kentät bodyyn?
Eli kaikki kentät on otettu clipboardiin ennen tätä käskyä.
"OUTLOOK.exe /c ipm.note /m " & txt_mail.Text & "?subject=" & txt_subject.Text & "&body=" & ????
mikäli laitan muotoon:
& "&body=" & Clipboard.GetText txt_1.Text & txt_2.Text
ei toimi.
EDIT: toimiihan se noin, mutta jotain häikkää siinä on kun pastean kaikki. Tutkin siis lisää.
EDIT2: Outlookki ei ota välilyöntejä mukaan? wtf.
Kun jossain tekstikentässä on vaikka TEPPO TESTI , se pasteaa vain TEPPO?
Unohda nuo teskstikenttä-viittaukset tuon Clipboard.GetText:n jälkeen. Eli...
"OUTLOOK.exe /c ipm.note /m " & txt_mail.Text & "?subject=" & txt_subject.Text & "&body=" & Clipboard.GetText
Heti kun tulee jossain TextBox:ssä välilyönti, herjaa että "The Command line argument is not valid. Verify the switch you are using"
Tuo samainen sovellus tekee myös tekstitiedoston.Pitäisikö sen sisältö jotenkin pastettaa? Oisko se parempi vaihehto?
Samaiset tiedot kummassakin.
Kun käynnistät tuon Outlookin commandlinen kautta, niin viestiäsi käsitellään URL-muodossa, joten sallittuja merkkejä ovat kirjaimet a-z/A-Z, numerot 0-9 sekä erikoismerkit $-_.+!*'(),. Osan muista erikoismerkeistä saa käyttöön koodamalla ne URL-hyväksyttävään muotoon, josta enemmän täällä. Tuolla on myös automaatti, jolla saat testattua, onko teksti koodattavissa URL-hyväksyttävään muotoon. Huomaa, että ääkköset on Big-No-No.
VB:ssä välilyönnit saat korvattua Replace-funktiolla, josta löydät useita esimerkkejä haulla.
Joo saan nyt korvattua välilyönnin.
Saanko mitenkään helposti kaikkiin muuttujiin korvattua vai pitääkö ne kaikki laittaa yksitellen?
Formille sen jälkeen se tulostaa textboxiin teppo%20testi.
Saako tuota korjattua?
EDIT: Tein silleen että kun välilyönti on korvattu ja sen jälkeen suoritetaan komentokehtoite NIIN sen jälkeen taas korvaan %20 merkin välilyönnillä. TextBox:ssa ei siten näy enää teppo%20testi. En tiedä onko ihan oikea ratkaisu mutta toimii.
...hidas...
Joudut käymään muuttujat yksitellen läpi, ellet ole liittänyt niitä yhteen (esim. ClipBoardin sisällön voit korvata kerralla).
Edit: Jos käytät Replace:a tuossa Outlookin kutsussa, niin et tarvitse Replace:a toistamiseen.
'alaviivalla pitkän koodin saa jaettua useammalle riville "OUTLOOK.exe /c ipm.note /m " & txt_mail.Text & "?subject=" & Repalce(txt_subject.Text," ","%20") & _ "&body=" & Replace(Clipboard.GetText," ","%20")
tuota tietoa olen funtsinut että millä saan sen jaettua.
Kiitos :D
Aihe on jo aika vanha, joten et voi enää vastata siihen.