Wubbable Skrevet 7. mai 2007 Del Skrevet 7. mai 2007 Hvordan får jeg programmet mitt til å utføre valgte oppgaver UTEN at mainformen vises.... Har dette: If Command$() = Nothing Then Shell(Application.ExecutablePath & " -H", AppWinStyle.Hide, False) End End If Den starter, starter seg selv og slutter før vinduet har blitt vist... SÅ, den som ble startet nå, viser vinduet på... Hvorfor skjer dette når jeg har AppWinStyle.Hide? Lenke til kommentar
Wubbable Skrevet 7. mai 2007 Forfatter Del Skrevet 7. mai 2007 Vi gjør det ja... Og koden kjører på mainform loadingen (før den vises altså) Lenke til kommentar
Moskus Skrevet 8. mai 2007 Del Skrevet 8. mai 2007 (endret) Du kan prøve dette: Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.Visible = False End Sub Private Sub Form1_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Activated Me.Visible = False End Sub ... og dette kan jo selvfølgelig gjøres mer sofistikert. Endret 8. mai 2007 av moskus Lenke til kommentar
wolf5 Skrevet 8. mai 2007 Del Skrevet 8. mai 2007 Vet ikke om det er et svar, men hvorfor ikke bare la være å bruke winforms? I VB er det vel sånn at et default prosjekt starter med Main funksjonen i en form og derfor viser formen. Opprett heller en klasse. Og legg inn Main funksjonen der og slett formen. I C# får du en Program.cs som starter opp Form1. Dermed er det lett å bare slette Form1 og fjerne koden som åpner Form1. Lenke til kommentar
Wubbable Skrevet 8. mai 2007 Forfatter Del Skrevet 8. mai 2007 Men skal ha en webbrowser som gjør noe i bakgrunnen (lager et RSS feed fra en side) Lenke til kommentar
Manfred Skrevet 8. mai 2007 Del Skrevet 8. mai 2007 Du kan jo bruke System.Net.WebClient selv om du ikke har en form. Bare kjør opp en klasse som gjør dette, som wolf5 skrev. Lenke til kommentar
Wubbable Skrevet 8. mai 2007 Forfatter Del Skrevet 8. mai 2007 Hvordan fungerer da den der "Webbrowser.documentcompleted" handelen? Lenke til kommentar
Manfred Skrevet 8. mai 2007 Del Skrevet 8. mai 2007 Den trigges jo bare hvis du kjører "DownloadDataAsync" da... det er vel ikke noe poengt, så lenge det er det eneste programmet ditt skal gjøre? Lenke til kommentar
Wubbable Skrevet 8. mai 2007 Forfatter Del Skrevet 8. mai 2007 Altså... Programmet kjører en serie av subs (kommandoer) NÅR siden har lastet ferdig... Noen metode for det, uten Windowformen? Lenke til kommentar
wolf5 Skrevet 8. mai 2007 Del Skrevet 8. mai 2007 (endret) Her er noe gammel kode jeg lagde for lenge siden hvor du bare kaller metode med URL og får tilbake hele HTMLen i retur etter siden er lastet. Så er det bare til å gjøre det du vil med den. ReadURl.GetAdvancedURL("http://google.com","","",30,null) public class ReadURL{ /// <summary> /// Metode for å hente URL (denne støtter redirect pga cookie). Bruk denne metoden framfor GetURL og PostURL. /// 2 overloaders. 1 som tar inn hashtables på getdata og postdata og en som tar inn strenger /// </summary> /// <param name="url"></param> /// <param name="getdata"></param> /// <param name="postdata"></param> /// <param name="timeoutsekunder"></param> /// <param name="cookie"></param> /// <returns></returns> public static string GetAdvancedURL(string url,Hashtable getdata,Hashtable postdata,int timeoutsekunder,System.Net.CookieContainer cookie){ string gd = ""; string pd = ""; if(getdata != null){ foreach(DictionaryEntry de in getdata){ gd += "+" + de.Key + "=" + de.Value; } if(gd.Length > 0){gd = gd.Substring(1);} } if(postdata != null){ foreach(DictionaryEntry de in postdata){ pd += "+" + de.Key + "=" + de.Value; } if(pd.Length > 0){pd = pd.Substring(1);} } return GetAdvancedURL(url, gd, pd, timeoutsekunder, cookie); } /// <summary> /// Metode for å hente URL (denne støtter redirect pga cookie). Bruk denne metoden framfor GetURL og PostURL. /// 2 overloaders. 1 som tar inn hashtables på getdata og postdata og en som tar inn strenger /// </summary> /// <param name="url"></param> /// <param name="getdata"></param> /// <param name="postdata"></param> /// <param name="timeoutsekunder"></param> /// <param name="cookie"></param> /// <returns></returns> public static string GetAdvancedURL(string url,string getdata,string postdata,int timeoutsekunder,System.Net.CookieContainer cookie){ try{ System.Net.HttpWebRequest wRemote; System.Text.Encoding enc = System.Text.Encoding.GetEncoding(1252); if(getdata.Length > 0){//GET-data legges til URL if(url.IndexOf("?") > 0){ url += "+" + getdata;/*allerede get data i url, legg til bakom;*/ }else{ url += "?" + getdata; /*nye getdata;*/ } } wRemote = (HttpWebRequest)System.Net.WebRequest.Create(url); /*Oppretter HttpWebRequest mot URL;*/ if(cookie == null){cookie = new System.Net.CookieContainer(); //Oppretter cookie om den ikke ble levert;} wRemote.CookieContainer = cookie; wRemote.Timeout = timeoutsekunder * 1000; /*Setter evt timeout;*/ if(postdata.Length == 0){ wRemote.Method = "GET"; }else{ //Dersom POST, send POST data til servern wRemote.Method = "POST"; byte[] bytepostdata = enc.GetBytes(postdata); wRemote.ContentType = "application/x-www-form-urlencoded"; wRemote.ContentLength = bytepostdata.Length; System.IO.Stream io; io = wRemote.GetRequestStream(); io.Write(bytepostdata, 0, bytepostdata.Length); io.Close(); } HttpWebResponse webres = (HttpWebResponse)wRemote.GetResponse(); System.IO.StreamReader sr = new System.IO.StreamReader(webres.GetResponseStream(),enc); string str = sr.ReadToEnd(); webres.Close(); return str; } }catch(Exception ex){ throw new Exception("GetAdvancedURL feilet! [Exception," + ex.GetType().ToString() + ", " + ex.Message + "]"); } return null; } } Ville kanskje skrevet det annerledes i dag, men var laget i .Net 1.0 edit: "Siden er lastet" er vel ikke helt rett her heller. Jeg henter kun HTMLen som siden består av (tilsvarer internet explorer->"vis kilde"). Skal du hente ned noe annet så blir det straks mer avansert tror jeg? Har ikke lekt meg med WebClient enda. Endret 8. mai 2007 av wolf5 Lenke til kommentar
Wubbable Skrevet 8. mai 2007 Forfatter Del Skrevet 8. mai 2007 Nja.. sikker på at det ikke er noe enklere? F.eks. noe i den dur: http://msdn2.microsoft.com/en-US/library/s...ted(VS.80).aspx Finner vanligvis en superlang kode på google, som kan bli erstattet med to linjer av vb.net kode Lenke til kommentar
wolf5 Skrevet 8. mai 2007 Del Skrevet 8. mai 2007 Bruk hva som er enklest. (vb og c# er forsåvidt like "enkle" da de bruker akkurat de samme bibliotekene) Som nevnt så er denne koden noe jeg mekket for .net 1.0 da jeg ikke fant en annen måte å gjøre det på. Siden den gang har .Net 1.1 og 2.0 kommet med mye mer innhold som forenkler ting. Lenke til kommentar
Manfred Skrevet 9. mai 2007 Del Skrevet 9. mai 2007 Men WebBrowser er jo et Forms GUI-element. Hvorfor kan du ikke bruke System.Net.WebClient ? Lenke til kommentar
Wubbable Skrevet 9. mai 2007 Forfatter Del Skrevet 9. mai 2007 (endret) Testa nettopp... Webbrowser kontrollen tar jo Internet Explorer sine cookies, så da fungerer siden fint... MEN, webclient bruker jo ikke de cookiene.. Noen måte å fikse det på? edit: Finnes jo HTTPwebrequest (tror den heter det), men fant ikke ut hvordan man fikk responsen (det den lastet ned) til en string Endret 9. mai 2007 av Vigilant Lenke til kommentar
Manfred Skrevet 9. mai 2007 Del Skrevet 9. mai 2007 dersom den gir en byte[] som response, som enkelte andre funksjoner gjør, så er løsningen så enkel som dette: string serverResult = System.Text.Encoding.ASCII.getString(responseArray); Lenke til kommentar
Wubbable Skrevet 9. mai 2007 Forfatter Del Skrevet 9. mai 2007 Public Function GetResponse(ByRef URL As String) As HttpWebResponse 'Create a web request Dim m_Req As HttpWebRequest = HttpWebRequest.Create(URL) 'Get a web response Return m_Req.GetResponse() End Function Den koden der Fikk ikke helt til den byte tingen.. Lenke til kommentar
kimo78 Skrevet 10. mai 2007 Del Skrevet 10. mai 2007 (endret) Du har noe som heter CookieContainer, hvis jeg ikke husker helt feil. Jeg har tidligere laget en Konsollapplikasjon som logger seg inn på en webside og poster en del form og annet mix. Dette laget jeg ved hjelp av HttpWebRequest . Søk opp HttpWebRequest cookies i google, så finner du masse eksempelkode. Eksempel: HttpWebRequest webreq = (HttpWebRequest)WebRequest.Create(strURL); webreq.CookieContainer = new CookieContainer(); Endret 10. mai 2007 av kimo78 Lenke til kommentar
Wubbable Skrevet 10. mai 2007 Forfatter Del Skrevet 10. mai 2007 Ja, la merke til den cookiecontaineren Problemet var hvordan jeg f.eks. si at jeg vil gjøre dette, bare uten webbrowser (altså med httpreq): dim SRC as string = webbrowser1.documenttext Med andre ord, hvordan får jeg HTML koden som httpreq laster ned, inn i en string? Sikkert skammelig enkelt, men jeg gjør tydeligvis noe feil Lenke til kommentar
Manfred Skrevet 10. mai 2007 Del Skrevet 10. mai 2007 Public Function GetResponse(ByRef URL As String) As HttpWebResponse 'Create a web request Dim m_Req As HttpWebRequest = HttpWebRequest.Create(URL) 'Get a web response Return m_Req.GetResponse() End Function Den koden der Fikk ikke helt til den byte tingen.. 8572788[/snapback] m_Req.GetResponse().ToString() ?? Ellers så kan du vel bruker m_Req.GetResponse().GetResponseStream(), som gjør at du åpner en stream... Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå