Windows PowerShell 2.0 Part2at WIN
Windows PowerShell 2.0 Part2 - 暇つぶし2ch250:名無し~3.EXE
10/06/25 00:47:40 mSLJKvLX
PowerShell ISE さん
さすがだ

251:名無し~3.EXE
10/06/25 20:43:54 0/U66yua
URLリンク(journal.mycom.co.jp)

-join と -ReadCount はもっと評価されるべき
type address.txt -r 5 | % { $_ -join "," }

252:名無し~3.EXE
10/06/27 09:09:08 JCAKYY/N
Get-Location と
[System.IO.Directory]::GetCurrentDirectory() は、
値違うんですね。
と言うか、PowerShellで Set-Location しても、
System.IO.Directory で管理しているカレントディレクトリは変更しない、
と言うべきかな。

IO.StreamWriter 調べていて気がついた、です。

253:名無し~3.EXE
10/06/27 12:48:20 K3nSxfR1
>>252
リネームするために FileInfo#MoveTo 使ったら痛い目にあったことあり

254:名無し~3.EXE
10/06/29 22:56:22 dyF8Lcp7
VistaのWindows UpdateにPowershell 2.0が来てる

255:名無し~3.EXE
10/07/06 00:31:42 kPA7wvIt
暇なんで、作ってみますた
[void][Reflection.Assembly]::LoadWithPartialName("System.windows.forms")
[void][Reflection.Assembly]::LoadWithPartialName("System.Runtime.InteropServices")
function New-PType() {
$assembly_name = New-Object Reflection.AssemblyName 'PInvokeAssembly'
$dd_assembly = [AppDomain]::CurrentDomain.DefineDynamicAssembly($assembly_name, 'Run')
$dd_module = $dd_assembly.DefineDynamicModule('PInvokeModule')
return $dd_module.DefineType('PInvokeType', "Public,BeforeFieldInit")
}
function New-PMethod([string]$dllName, [Type]$returnType, [string]$methodName, [Type[]]$parameterTypes){
$ptype = New-PType
$d_method = $ptype.DefineMethod($methodName, 'Public,HideBySig,Static,PinvokeImpl', $returnType, $parameterTypes)
$constructor = [Runtime.InteropServices.DllImportAttribute].GetConstructor([string])
$attrbute = New-Object Reflection.Emit.CustomAttributeBuilder $constructor, $dllName
$d_method.SetCustomAttribute($attrbute)
$type = $ptype.CreateType()
$type = Add-Member -InputObject $type -MemberType NoteProperty -Name MethodName -Value $methodname -passthru
$invoke = {return $this.InvokeMember($this.MethodName, 'Public,Static,InvokeMethod', $null, $null, $args[0])}
Add-Member -InputObject $type -MemberType ScriptMethod -Name Invoke -Value $invoke
return $type
}
$ptc = @'
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential)]
public struct POINT
{
public int x;
public int y;
}
'@

256:名無し~3.EXE
10/07/06 00:32:35 kPA7wvIt
続き
Add-Type -TypeDefinition $ptc
$WindowFromPoint = New-PMethod "user32.dll" ([Int32]) "WindowFromPoint" @([POINT])
$PostMessage = New-PMethod "user32.dll" ([Int32]) "PostMessage" @([Int32],[Int32],[Int32],[Int32])
$GetAncestor = New-PMethod "user32.dll" ([Int32]) "GetAncestor" @([Int32],[Int32])
$pt = New-Object POINT; $ptb = New-Object POINT

while($true){
$pt.x= [System.Windows.Forms.Cursor]::Position.x
$pt.y= [System.Windows.Forms.Cursor]::Position.y
start-sleep -m 50
if(($pt.x -ne $ptb.x) -or ($pt.y -ne $ptb.y )){
$ptb.x=$pt.x; $ptb.y=$pt.y
$hwd = $WindowFromPoint.Invoke([POINT]$ptb)
$ohwd = $GetAncestor.Invoke(@([int32]$hwd ,[int32]3))
$t = Get-Process | ? { $_.MainWindowHandle -eq $ohwd}
"x="+$ptb.x+":y="+$ptb.y+" ハンドル"+$hwd+" 親ハンドル"+$ohwd+": "+$t.MainWindowTitle
#コントロールをクリック
#$PostMessage.Invoke(@([int32]$hwd ,[int32]0x201,[int32]0,[int32]0)) | out-null
#$PostMessage.Invoke(@([int32]$hwd ,[int32]0x202,[int32]0,[int32]0)) | out-null
}
}

257:名無し~3.EXE
10/07/06 13:20:47 Z4Ex5Sa1
テキストファイルの行数は.lengthで獲得できるけど
エクセルファイルで何列目の何行まで使っているか、はどうやれば獲得できるのかな

>>239みてて思った

258:名無し~3.EXE
10/07/06 22:09:06 KuRfnHZn
[Enum]::GetValues([IO.FileAttributes]) | select {$_},{[int]$_}
は動くのに
[Enum]::GetValues([IO.FileAttributes]) | select {$_},{[int]$_} | ogv
が動かないのをなんとかしる
select の引数をまじめに書く
[Enum]::GetValues([IO.FileAttributes]) | select @{Name="Name";Expression={$_}},@{Name="Value";Expression={[int]$_}} | ogv
は面倒だからやだ

259:名無しさん@そうだ選挙に行こう
10/07/10 04:50:45 c2m5VYAj
$ie.document.parentWindow が null になるんだけどなんでだろう

260:名無しさん@そうだ選挙に行こう
10/07/11 21:36:31 8wpZODee
>>258
Select-Object -Property の引数を PropertyPath の XAML 構文としてパースした場合エラーになるって言うのは
PowerShell の構文をどうにかしない限りどうしようも無いと思うが。
今回は↓で回避できるけど、Out-GridView 呼び出しまで含めてラッパ作っちゃった方が早いんじゃね。
[Enum]::GetValues([IO.FileAttributes]) | select {$_},{,([int]$_)} | ogv

261:名無しさん@そうだ選挙に行こう
10/07/11 21:44:56 Y0LxWDlI
>>260
エラーは出ないけれども ([int]$_) の値が表示されないよ

262:名無しさん@そうだ選挙に行こう
10/07/11 21:50:25 8wpZODee
>>261
カンマを付け忘れてる

263:名無しさん@そうだ選挙に行こう
10/07/11 22:04:21 Y0LxWDlI
おお、表示できた
難易度高いわ

264:名無し~3.EXE
10/07/13 16:17:31 viaEAdkS
>難易度高いわ
難度高いわ

265:名無し~3.EXE
10/07/16 01:02:23 nQrufqp5
>>86
とりあえず、はっときます

param($q)
[object[]]$url
if($q -eq $null){$q = "米 味噌"}
$ie = new-object -com internetexplorer.application
$ie.navigate("URLリンク(google.co.jp)")
while($ie.busy){start-sleep -m 50}
while($ie.Document.readyState -ne "complete"){start-sleep -m 50}
$ied = $ie.document
@($ied.getElementsByName("q"))[0].value = $q
@($ied.getElementsByName("btnG"))[0].click()
while($ied.readyState -ne "complete"){start-sleep -m 50}
$doc = @(($ied.getElementById("res")).getElementsByTagName("OL"))[0].innerHTML
if( ($nav=$ied.getElementById("nav")) -ne $null){
$nav.getElementsByTagName("td") | % { if(($_.cellIndex -gt 1) `
-and ( $_.cellIndex -le (@($nav.getElementsByTagName("td")).length -2)) ){ $url += @($_.firstChild.href) }}

foreach($u in $url){
$ie.navigate($u)
while($ied.readyState -ne "complete"){start-sleep -m 50}
$doc = $doc + @(($ied.getElementById("res")).getElementsByTagName("OL"))[0].innerHTML
}
}
$doc = "<ol>"+$doc+"</ol>"
convertTo-Html -body $doc -Title "検索" > get2.html
$ied.write($doc)
$ie.visible = $true

266:名無し~3.EXE
10/07/16 01:05:45 nQrufqp5
100件なら 検索おぷしょんで設定した方が早いような 藁
こっちは検索数バー所運
param($q)
#qcは検索数各自書き換えてください。
$qc = 50
if($q -eq $null){$q = "米 味噌"}
$ie = new-object -com internetexplorer.application
$ie.navigate("URLリンク(google.co.jp)")
while($ie.busy){start-sleep -m 50}
while($ie.Document.readyState -ne "complete"){start-sleep -m 50}
$ied = $ie.document
@($ied.getElementsByName("q"))[0].value = $q
@($ied.getElementsByName("btnG"))[0].click()
while($ied.readyState -ne "complete"){start-sleep -m 50}
$qa = $ie.LocationURL
$doc = @(($ied.getElementById("res")).getElementsByTagName("OL"))[0].innerHTML
$iec = $ied.getElementById("nav")
$url = @($iec.getElementsByTagName("td"))[2].firstChild.href
if($qc -gt 10){
for($i=10;$i -lt $qc; $i += 10){
$ie.navigate($url.replace("start=10","start=$i"))
while($ied.readyState -ne "complete"){start-sleep -m 50}
$doc = $doc + @(($ied.getElementById("res")).getElementsByTagName("OL"))[0].innerHTML
}
}
$doc = "<ol>"+$doc+"</ol>"
convertTo-Html -body $doc -Title "検索" > get.html
$ied.write($doc)
$ie.visible = $true

267:名無し~3.EXE
10/07/16 01:28:45 DGgvO4Hx
タスクバーで点滅

268:名無し~3.EXE
10/07/16 19:58:08 nQrufqp5
自分で対処してください

269:名無し~3.EXE
10/07/17 02:33:51 Cx2mEIGQ
$ie.document.focus

270:名無し~3.EXE
10/07/18 16:19:47 MD6LitbG
"1" 個の引数を指定して "write" を呼び出し中に例外が発生しました: "種類が一致しません。"

271:名無し~3.EXE
10/07/18 19:22:55 1jb4hW0g
>>259
PowerShellでは、MTAで、$ie.document.parentwindowが見えない。
URLリンク(scripting.cocolog-nifty.com)

272:名無し~3.EXE
10/07/18 23:53:42 9EcxcK/O
>>271
前置きの文章の流れがつかみにくい・・・

「STAでは見えます。なので、MTAならSTAで起動し直します。」

程度に削っちゃった方が「以下のコードがそのサンプルですよ」ってことが分かりやすいんじゃないかと思う


273:名無し~3.EXE
10/07/19 02:07:11 +L9wDm12
最近日本語が不自由でプログラム言語でしかしゃべれない人が増えてるから仕方ない

274:名無し~3.EXE
10/07/20 01:21:36 Vkd1I8kA
日本語が相手にされてない

275:名無し~3.EXE
10/07/23 00:16:24 1K/4j0hr
([System.AppDomain]::CurrentDomain.GetAssemblies())[2].gettypes()|
? {($_.namespace -like "*net*") -and ($_.basetype -like "*enum*") -and ($_.IsPublic -eq $true) } |
%{@("##$_.name##")+([Enum]::GetValues((Invoke-Expression "[$_]")))} | select {$_},{,([int]$_)} | ogv

なんか、ぱわーセルのパイプは面毒せーな~

276:名無し~3.EXE
10/07/23 02:20:20 x1KXUDuh
>>275
そんな丁寧に書かんでもいい気がするが、かえって見づらくない?
[AppDomain]::CurrentDomain.GetAssemblies()[2].gettypes() |
? { $_.namespace -like "*net*" -and $_.IsEnum -and $_.IsPublic } |
% { "##$_##"; $_.GetEnumValues()} | select {$_},{,([int]$_)} | ogv

277:名無し~3.EXE
10/07/23 23:07:53 rVRWb7I9
()で括るのは、昔からの癖です


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch