2024年12月3日火曜日

冬超しをするアゲハの幼虫は、代を重ねて命を紡ぐと言うことであって、それがベランダで見られるのを果報だなと思う夫婦 ー アゲハ終齢幼虫(昆虫観察)

            
上さんがアゲハの幼虫を数え直したら、一匹増えて八匹になってしまいました。
その内、最後に見つかった一匹は、葉っぱの陰に隠れていたのが現れ出ました。

なので、この寒い中、みんな青虫から脱皮して蛹までたどり着けるか心配です。
とにかく、みんな、さなぎになる前の五齢目まで脱皮し終えていて安心したの。

今年も暖冬のような感じですので、日中の気温が15度もあれば大丈夫でしょう。
ただ、朝晩はさすがに冷え込んできて、十度以下に下がる日も増えて来ました。

気温が低いと葉を食べるスピードが遅いのか、成長もやや緩慢な気もしますな。
鉢は、ベランダ奥側でリビングの窓際に置きましたので、風は避けられるかな。

太陽の高度も低くなりましたので、日中、日差しが差し込んで暖かくなります。
冬型の寒気が入って風が吹いてても、ベランダは南向きだから遮ってくれます。

残るは、南風や東風が、当面の間、強く吹いてくれないことを祈るだけですな。
こうして、毎日元気な青虫さんたちの姿を見ていると、なかなかに可愛いのだ。

        
ただ、心配がありまして、最近ベランダに出没するのノネズミの活動なのです。
ベランダに置いてある鉢の植物を探しては、食べられると分かると食らいつく。

こうして、サツマイモの苗やツリガネニンジンの根茎等が食べ尽くされました。
悔しいといったらありませんが、臭いの忌避剤やら、高周波ネズミ除けを設置。

これで少しは近づかないとは思いますが、ネズミは昆虫を食べると聞いて驚愕。
ゴキブリなどが好物なようで、だったら、アゲハの幼虫の芋虫も狙うかもなあ。

それで、幼虫の暮らすヘンルー鉢のそばに、高周波発生器を置いて夜間は起動。
こうすれば、ネズミの毛嫌いする高周波で、徘徊することもないと期待します。

というわけで、12月の中旬まで、みんな、蛹になるために脱走してもらいたい。
一方、ヘンルーの低木の寿命が数年らしく、そろそろですので、代替わりに種蒔きした若い苗が成長中でもあり、このアゲハの芋虫連中が、みんな老いたヘンルーから退去したら、株の植え替えをしなければと考えてしまう自分なのでした。



いいねと思ったら、三つポチっとね!
にほんブログ村 スキースノボーブログへにほんブログ村 スキースノボーブログ スキーへにほんブログ村 旅行ブログ 旅日記・旅の思い出へ
にほんブログ村    にほんブログ村      にほんブログ村 



2024年12月1日日曜日

PowerShellでは、Windows formsを使ってGUI画面が作れますが、使い終わったら、メモリーから消去させないと残ったままになるよ ー mainForm.Dispose(PowerShell)

         
VBAに拡張性がないかもと思って、最近は、PowerShellにはまっております。
この間の投稿では、VBAのユーザーフォームみたく呼び出せないかとトライだ。

先ず、ネットで色々ググってみて、呼び出せると分かって来てサンプルを作成。
このコードを紹介しましたが、ならばフォームを複数開いたりする場合のお話。

コードの記述では、フォームを開いて”OK”ボタンを押すと、フォームは消える。
それは画面上のことで、メモリーには残されると言うのが、分かって来ました。

つまり、最初のフォームでOKして、次もくり返している内に、挙動が怪しい。
先ず圧縮したいファイルを入力して、圧縮ファイル名を入力すると言う流れね。

これは、簡単にzipファイルを作ると言うコードを勉強がてらに作った分けだ。
おかしいなと思って調べると、メモリーに残ったフォームは消去が必要でした。

このコマンドはちゃんと存在して、VBAの”Unload”コマンドみたいな感じだ。
それで、作ったサンプルコードでは、終わり際でメモリーから解放しています。

それと、変数にも、その役割を終わらせるコードがあるので、追加しておいた。
というわけで、PowerShellは一挙手一投足に記述を書くので、結構面倒です。

一応、圧縮はできている感じですが、ファイルサイズが4MB近いと圧縮できなったりするので、実用には程遠い感じもしたりして、PowerShell制覇は、かなり長い道のりなのだと実感する自分なのでした。

<参考コード>
※次は、Compress-Archive.batで保存し、ps1ファイルと同じホルダに格納。
PowerShell -ExecutionPolicy RemoteSigned  -WindowStyle Hidden  .\Compress-Archive.ps1

このバッチファイルを最初に実行させてください。

※次は、Compress-Archive.ps1で保存
# ユーザーフォーム呼び出し入力(ZIPファイルのフルパス入力)
Add-Type -AssemblyName System.Windows.Forms  # アセンブリ読み込み
  Add-Type -AssemblyName System.Drawing
$form = New-Object System.Windows.Forms.Form  # フォーム作成
  $form.Text = "圧縮したいファイル"
    $form.Size = New-Object System.Drawing.Size(280,200) 
      $form.StartPosition = "Manual"
        $form.Location = "100,100"
$OKButton = New-Object System.Windows.Forms.Button  #OKボタン設定
  $OKButton.Location = New-Object System.Drawing.Point(40,120)
    $OKButton.Size = New-Object System.Drawing.Size(75,30)
      $OKButton.Text = "OK"
        $OKButton.DialogResult = "OK"
# 列挙子名:None, OK, Cancel, Abort, Retry, Ignore, Yes, No
$CancelButton = New-Object System.Windows.Forms.Button  #キャンセルボタン
  $CancelButton.Location = New-Object System.Drawing.Point(130,120)
    $CancelButton.Size = New-Object System.Drawing.Size(75,30)
      $CancelButton.Text = "Cancel"
        $CancelButton.DialogResult = "Cancel"
# 列挙子名:None, OK, Cancel, Abort, Retry, Ignore, Yes, No
$label = New-Object System.Windows.Forms.Label  # ラベルの設定
  $label.Location = New-Object System.Drawing.Point(10,30) 
    $label.Size = New-Object System.Drawing.Size(250,20) 
      $label.Text = "フルパスでファイル名(拡張子付)で入力してください"
$textBox = New-Object System.Windows.Forms.TextBox  #入力ボックス設定
  $textBox.Location = New-Object System.Drawing.Point(10,70) 
    $textBox.Size = New-Object System.Drawing.Size(245,50) 
$form.AcceptButton = $OKButton  # キー・ボタン関係
  $form.CancelButton = $CancelButton
$form.Controls.Add($OKButton)  # ボタン等をフォーム追加
  $form.Controls.Add($CancelButton)
    $form.Controls.Add($label) 
      $form.Controls.Add($textBox)
# フォームを表示させ、その結果を受け取る
$result = $form.ShowDialog()
# 結果による処理分岐
if ($result -eq "OK") {
  $x = $textBox.Text
$x
} # 変数に値が渡される
#別フォーム(zipファイル名付け)呼び出し
Add-Type -AssemblyName System.Windows.Forms  # アセンブリ読み込み
  Add-Type -AssemblyName System.Drawing
$form = New-Object System.Windows.Forms.Form  # フォーム作成
  $form.Text = "圧縮後のファイル名"
    $form.Size = New-Object System.Drawing.Size(300,200) 
      $form.StartPosition = "Manual"
        $form.Location = "100,100"
$OKButton = New-Object System.Windows.Forms.Button  #OKボタン設定
  $OKButton.Location = New-Object System.Drawing.Point(40,120)
    $OKButton.Size = New-Object System.Drawing.Size(75,30)
      $OKButton.Text = "OK"
        $OKButton.DialogResult = "OK"
# 列挙子名:None, OK, Cancel, Abort, Retry, Ignore, Yes, No
$CancelButton = New-Object System.Windows.Forms.Button  #キャンセルボタン
  $CancelButton.Location = New-Object System.Drawing.Point(130,120)
    $CancelButton.Size = New-Object System.Drawing.Size(75,30)
      $CancelButton.Text = "Cancel"
        $CancelButton.DialogResult = "Cancel"
# 列挙子名:None, OK, Cancel, Abort, Retry, Ignore, Yes, No
$label = New-Object System.Windows.Forms.Label  # ラベルの設定
  $label.Location = New-Object System.Drawing.Point(10,30) 
    $label.Size = New-Object System.Drawing.Size(280,20) 
      $label.Text = "フルパスでファイル名(zip拡張子付)で入力してください"
$textBox = New-Object System.Windows.Forms.TextBox  #入力ボックス設定
  $textBox.Location = New-Object System.Drawing.Point(10,70) 
    $textBox.Size = New-Object System.Drawing.Size(245,50) 
$form.AcceptButton = $OKButton  # キー・ボタン関係
  $form.CancelButton = $CancelButton
$form.Controls.Add($OKButton)  # ボタン等をフォーム追加
  $form.Controls.Add($CancelButton)
    $form.Controls.Add($label) 
      $form.Controls.Add($textBox)
# フォームを表示させ、その結果を受け取る
$result = $form.ShowDialog()
# 結果による処理分岐
if ($result -eq "OK") {
  $x1 = $textBox.Text
$x1
} # 変数に値が渡される
$mainForm.Dispose() # スクリプトの実行が終了したらフォームを解放
Compress-Archive -Path $x -DestinationPath $x1  #ファイル圧縮保存
Remove-Variable x
Remove-Variable x1  # 変数の解除



いいねと思ったら、三つポチっとね!
にほんブログ村 スキースノボーブログへにほんブログ村 スキースノボーブログ スキーへにほんブログ村 旅行ブログ 旅日記・旅の思い出へ
にほんブログ村    にほんブログ村      にほんブログ村