Avatar billede puxz Nybegynder
24. juli 2009 - 13:42 Der er 8 kommentarer og
1 løsning

Køre IE silent ??

Hej Eksperter

Jeg har lavet en .net console app der skal tage maskinens ip adresse (hvis den starter med 10) og smide den op til en php side som så skal generere en cookie ud derfra. Alt dette skal foregå 100% silent.

Det virkede da jeg lavede det 1. gang hvor min php side fint tog dataen og browseren lukkede hurtigere end man kunne nå at se det.. Men efter jeg flyttede min php side til en anden host lukker programmet ikke php siden ned igen, selve console applicationen lukker fint, men IE bliver stående..

udsnit af koden er som følger:

            url = "http://domæne.dk/kage.php?IP=" + HostIP

            SHDocVw.InternetExplorer ie;
            ie = new SHDocVw.InternetExplorer();
            ie.Visible = false;
            ie.Silent = true;
            ie.Navigate2(ref url, ref Empty, ref Empty, ref Empty, ref Empty);

Håber det er noget der har en idé til hvordan jeg kan gøre det silent.

På forhånd tak!!
Avatar billede bvli Praktikant
24. juli 2009 - 13:54 #1
Er der nogen grund til at du bruger IE i stedet for at bruge en WebClient?

Hvis du insisterer på at bruge COM-interop kan du prøve at kalde:

System.Runtime.InteropServices.Marshal.FinalReleaseComObject(ie);

- Og se om ikke det slipper instansen.
Avatar billede puxz Nybegynder
24. juli 2009 - 13:57 #2
Hej

Jeg bruger IE af den grun at den skal smide en cookie som IE skal læse, det kan jeg vel ikke med WebClient eller??
Avatar billede puxz Nybegynder
24. juli 2009 - 13:58 #3
Og nope:
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(ie);
Lukker heller ikke IE ned..
Avatar billede bvli Praktikant
24. juli 2009 - 14:01 #4
Ah.. Nøh - så skal du nok bruge WebRequest i stedet og lege noget med din CookieContainer. Jeg har ikke selv prøvet - men mon ikke man kan lægge dem i samme directory som IE lægger dem i og på den måde fikse det?

Det der med IE interop lyder som ret meget overkill. Men som sagt før; "FinalReleaseComObject(object)" burde fungere.
Avatar billede puxz Nybegynder
24. juli 2009 - 14:09 #5
Hvis jeg forstår dig ret så mener du at vi skal pille fysisk i cookies mappen?!, Den tanke legede jeg også med indtil jeg fandt ud at at IE ikke læser nogen cookie med mindre den er blevet genereret gennem en webside!! Det sørger index.dat for i cookies mappen..

FinalReleaseComObject(object)? Skal jeg lave tjek på om IE processen er færdig for at bruge den.??
Avatar billede bvli Praktikant
24. juli 2009 - 14:33 #6
Ja det var faktisk det jeg mente. Æv også. Så er der kun tilbage at reverse-engineer'e index.dat og sætte den ind der :)

Det er helt unødvendigt at spørge om du har kaldt ie.Quit() ikk'?
Avatar billede bvli Praktikant
24. juli 2009 - 15:01 #7
Anyway - Jeg checkede lige op på det - og du kan sagtens selv lægge en cookie i Cookie-folderen.

Det tror jeg nok jeg ville gøre i stedet, hvis det var mig og så undgå alt hvad der hedder IE.

God weekend :)

--

using System;
using System.Runtime.InteropServices;

namespace B.Testing
{
    class Program
    {
        class NativeMethods
        {
            [DllImport("wininet.dll")]
            public static extern bool InternetSetCookie(string url, string cookieName, string cookieData);
        }

        public static void SetCookie(Uri uri, string cookieName, string cookieData, DateTime? expires)
        {
            if (expires.HasValue)
            {
                cookieData += "; Expires = " + expires.Value.ToString("R");
            }
            NativeMethods.InternetSetCookie(uri.ToString(), cookieName, cookieData);
        }


        static void Main(string[] args)
        {
            Uri uri =  new Uri("http://localhost");
            string cookieName = "MyCookieName";
            string value = "MyCookieValue";
            DateTime expires = DateTime.Now.AddDays(1);
            SetCookie(uri, cookieName, value, expires);
        }
    }
}
Avatar billede puxz Nybegynder
27. juli 2009 - 11:32 #8
Undskyld mit sende svar..

Uhh hvis bare jeg kunne bruge den kode.. Fik lige et lyst øjeblik.. Men..

Den cookie der bliver genereret er ikke en jeg helt selv laver, det gør google analytics.. Så de ID'er og andet skrammel de laver kan jeg ikke få med..

Hmm, du får point.. Og jeg tænker videre ;)
Avatar billede bvli Praktikant
27. juli 2009 - 12:21 #9
Hej igen.

Her er et svar :)

Men anyway - du burde sagtens kunne få fat i cookien fra google. Hvis linket er på den første side du henter, skulle du kunne lave et webrequest mod google-analytics bagefter og få cookien derfra.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester