Question
creer nouveau process iexplorer
- daniel soares
- Auteur du sujet
- Hors Ligne
- Membre premium
Réduire
Plus d'informations
- Messages : 133
- Remerciements reçus 0
il y a 15 ans 9 mois #2513
par daniel soares
creer nouveau process iexplorer a été créé par daniel soares
Hello
j'utilise la creation d'un objet IE pour controler le fonctionnement de sites intranet
pour cela
j'utilise
[code:1]
$IE = new-object -ComObject internetexplorer.application
[/code:1]
le pb est que si IE etait deja ouvert cette session IE va s'initialiser a partir du process iexplorer existant
je voudrais pouvoir creer un process totalement independant pour pouvoir le killer sans toucher aux sessions ouvertes manuellement
j'imagine qu'il y a des arguments qui le permettent mais je n'ai rien trouvé sur le sujet chez microsoft.
qqun a t'il une idée?
j'utilise la creation d'un objet IE pour controler le fonctionnement de sites intranet
pour cela
j'utilise
[code:1]
$IE = new-object -ComObject internetexplorer.application
[/code:1]
le pb est que si IE etait deja ouvert cette session IE va s'initialiser a partir du process iexplorer existant
je voudrais pouvoir creer un process totalement independant pour pouvoir le killer sans toucher aux sessions ouvertes manuellement
j'imagine qu'il y a des arguments qui le permettent mais je n'ai rien trouvé sur le sujet chez microsoft.
qqun a t'il une idée?
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6302
- Remerciements reçus 68
il y a 15 ans 9 mois #2514
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:creer nouveau process iexplorer
Salut,
IE a un comportement particulier ce qui fait que cela sera difficile sous PS, voir :
www.generation-nt.com/reponses/debutant-...entraide-168441.html
et
groupes.codes-sources.com/article-url-ie-powershell-341718.aspx
De mon coté j'ai tenté une approche par la face nord
[code:1]
$psi = new-object system.diagnostics.processStartInfo
$psi.fileName = \"C:\Program Files\Internet Explorer\iexplore.exe\"
$psi.arguments= \"\"
$psi.loadUserProfile = $false
$psi.useShellExecute = $false
$proc = [system.diagnostics.process]::«»start($psi)
[void][reflection.assembly]::LoadWithPartialName(\"Interop.SHDocVw.InternetExplorer\"«»)
#ne fonctionne pas, dommage ;«»-)
#$IEC=$proc -as [SHDocVw.IWebBrowserApp]
#ne fonctionne pas :/
[type] $T=[SHDocVw.IWebBrowserApp]
$o=[System.Runtime.InteropServices.Marshal]::GetComInterfaceForObject($proc,$T);
[/code:1]
Mais sans succés
L'idée étant de récupérer d'un objet process une interface de type IWebBrowserApp. De plus étant dans le domain COM+.NET le code, si c'est possible, risque d'être \"particulier\".
IE a un comportement particulier ce qui fait que cela sera difficile sous PS, voir :
www.generation-nt.com/reponses/debutant-...entraide-168441.html
et
groupes.codes-sources.com/article-url-ie-powershell-341718.aspx
De mon coté j'ai tenté une approche par la face nord
[code:1]
$psi = new-object system.diagnostics.processStartInfo
$psi.fileName = \"C:\Program Files\Internet Explorer\iexplore.exe\"
$psi.arguments= \"\"
$psi.loadUserProfile = $false
$psi.useShellExecute = $false
$proc = [system.diagnostics.process]::«»start($psi)
[void][reflection.assembly]::LoadWithPartialName(\"Interop.SHDocVw.InternetExplorer\"«»)
#ne fonctionne pas, dommage ;«»-)
#$IEC=$proc -as [SHDocVw.IWebBrowserApp]
#ne fonctionne pas :/
[type] $T=[SHDocVw.IWebBrowserApp]
$o=[System.Runtime.InteropServices.Marshal]::GetComInterfaceForObject($proc,$T);
[/code:1]
Mais sans succés
L'idée étant de récupérer d'un objet process une interface de type IWebBrowserApp. De plus étant dans le domain COM+.NET le code, si c'est possible, risque d'être \"particulier\".
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6302
- Remerciements reçus 68
il y a 15 ans 9 mois #2515
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:creer nouveau process iexplorer
Tout compte fait le code est simple, c'était de trouver l'info qui ne l'était pas
Essaie ceci:
[code:1]
#Crée un process IE
$psi = new-object system.diagnostics.processStartInfo
$psi.fileName = \"C:\Program Files\Internet Explorer\iexplore.exe\"
$psi.arguments= \"\"
$psi.loadUserProfile = $false
$psi.useShellExecute = $false
$proc = [system.diagnostics.process]::«»start($psi)
#Retrouve les browser via une instance de ShellWindowsClass
# pour IExplore : document=mshtml.HTMLDocumentClass
# pour Explorer : document=$null
$shellWindows = new-object SHDocVw.ShellWindowsClass
$ie=$Null
foreach ($item in $shellWindows)
{
#Retrouve la nouvelle instance de IE via un handle commun
if ($item.Hwnd -eq $Proc.MainWindowHandle)
{$ie=$Item
break
}
}
$shellWindows=$null
[/code:1]<br><br>Message édité par: Laurent Dardenne, à: 26/06/08 11:13
Essaie ceci:
[code:1]
#Crée un process IE
$psi = new-object system.diagnostics.processStartInfo
$psi.fileName = \"C:\Program Files\Internet Explorer\iexplore.exe\"
$psi.arguments= \"\"
$psi.loadUserProfile = $false
$psi.useShellExecute = $false
$proc = [system.diagnostics.process]::«»start($psi)
#Retrouve les browser via une instance de ShellWindowsClass
# pour IExplore : document=mshtml.HTMLDocumentClass
# pour Explorer : document=$null
$shellWindows = new-object SHDocVw.ShellWindowsClass
$ie=$Null
foreach ($item in $shellWindows)
{
#Retrouve la nouvelle instance de IE via un handle commun
if ($item.Hwnd -eq $Proc.MainWindowHandle)
{$ie=$Item
break
}
}
$shellWindows=$null
[/code:1]<br><br>Message édité par: Laurent Dardenne, à: 26/06/08 11:13
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- daniel soares
- Auteur du sujet
- Hors Ligne
- Membre premium
Réduire
Plus d'informations
- Messages : 133
- Remerciements reçus 0
il y a 15 ans 9 mois #2516
par daniel soares
Réponse de daniel soares sur le sujet Re:creer nouveau process iexplorer
genial ca fonctionne Merci Laurent
par contre sur mon poste il manquait la dll
Interop.SHDocVw.dll
que j'ai du télécharger
ensuite je la charge par
au cas ou qqun d'autre aurai le meme pb
en outre
j'ai vu un posts faisant reference a
IE = New SHDocVw.InternetExplorer() (code vb) alors j'ai testé ce qui nous aurai permis d'eviter l'etape ShellWindowsClass
[code:1]
$shellWindows = new-object SHDocVw.InternetExplorer
[/code:1]
sans succes
il y a t'il un moyen de lire ce qu'il y a dans cette dll pour voir ce qu'elle peut nous proposer?
par contre ce post peut etre cloturé car ta solution fonctionne <br><br>Message édité par: Dan, à: 26/06/08 13:34
par contre sur mon poste il manquait la dll
Interop.SHDocVw.dll
que j'ai du télécharger
ensuite je la charge par
[void][Reflection.Assembly]::LoadFile(\"c:\daniel\Interop.SHDocVw.dll\")
au cas ou qqun d'autre aurai le meme pb
en outre
j'ai vu un posts faisant reference a
IE = New SHDocVw.InternetExplorer() (code vb) alors j'ai testé ce qui nous aurai permis d'eviter l'etape ShellWindowsClass
[code:1]
$shellWindows = new-object SHDocVw.InternetExplorer
[/code:1]
sans succes
il y a t'il un moyen de lire ce qu'il y a dans cette dll pour voir ce qu'elle peut nous proposer?
par contre ce post peut etre cloturé car ta solution fonctionne <br><br>Message édité par: Dan, à: 26/06/08 13:34
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6302
- Remerciements reçus 68
il y a 15 ans 9 mois #2517
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:creer nouveau process iexplorer
Dan écrit:
Il y a peut être une moyen de générer l'assembly voir ceci (chapitre 5) et ce pour les postes ayant ie6 ou 7.
Dan écrit:
Dan écrit:
Pour débuter autant choisir ILDasm qui devrait se trouver dans le runtime .NET (à confirmer). Reflector permet l'usage de plug-in et est plus avancé.
Mais il faut qq connaissances supplémentaires sur .NET et les concepts de base de la POO sous .NET.
Pour info, l'approche autour de GetComInterfaceForObject cela ne peut pas fonctionner car la classe Process n'expose pas les interfaces COM de IE.
Oui je n'étais pas sûr qu'elle soit installée d'office, sur mon poste j'ai VS 2005...par contre sur mon poste il manquait la dll
Interop.SHDocVw.dll
Il y a peut être une moyen de générer l'assembly voir ceci (chapitre 5) et ce pour les postes ayant ie6 ou 7.
Dan écrit:
Oui javais testé cette piste, comme pas mal d'autres.alors j'ai testé ce qui nous aurai permis d'eviter l'etape ShellWindowsClass
Dan écrit:
Oui ILDasm.exe ou Reflector.il y a t'il un moyen de lire ce qu'il y a dans cette dll pour voir ce qu'elle peut nous proposer?
Pour débuter autant choisir ILDasm qui devrait se trouver dans le runtime .NET (à confirmer). Reflector permet l'usage de plug-in et est plus avancé.
Mais il faut qq connaissances supplémentaires sur .NET et les concepts de base de la POO sous .NET.
Pour info, l'approche autour de GetComInterfaceForObject cela ne peut pas fonctionner car la classe Process n'expose pas les interfaces COM de IE.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.073 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- creer nouveau process iexplorer