Gå til innhold

Sjule (ALDRI engang vise) vinduet i appen min


Anbefalte innlegg

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
Videoannonse
Annonse

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 av moskus
Lenke til kommentar

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

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 av wolf5
Lenke til kommentar

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

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 :blush:

Endret av Vigilant
Lenke til kommentar

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 :p

Fikk ikke helt til den byte tingen..

Lenke til kommentar

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 av kimo78
Lenke til kommentar

Ja, la merke til den cookiecontaineren :p

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? :p

 

Sikkert skammelig enkelt, men jeg gjør tydeligvis noe feil :tease:

Lenke til kommentar
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 :p

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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...