流れるまにまに。

のんびり人の日々のめも。

【C++】COMを使ってExcel操作をするアプリというかクラスというか

突如「C++Excelを操作するアプリを作れ!」ということになったので、

作ってみた。

なんとなくもったいないから残しておく!!

 

 

.

C#とかVBでやろうとすると非常に簡単なのだけど、C++だと、COM周りが色々めんどくさいです。

MSに「MFC または #import を使用せずに C++ から Excel を自動化する方法」という素晴らしい内容があったので、ほぼパクリ。

https://support.microsoft.com/ja-jp/help/216686/how-to-automate-excel-from-c-without-using-mfc-or-import

 

使い方はこんな感じ。

 

 

 

使用者からの要望で、文字列と数値で扱う関数がそれぞれ分かれてるけど、VARIANT型にまとめちゃえば一個で済むし、いちいち使用箇所を選ばないので楽!

 

de:code2017参加してきたよ!

最早随分と遅れたレポートになってしまいましたが……

de:code2017に参加してきました!
会社的な都合でDay2だけでしたが。
本当はハッカソン参加したかった……(´;ω;`)


C++とかCなんか全然なかったよ。
自社が流行りには全く乗ってないんだな、ってことは理解した。知ってた。

ただ、今後MSが見据えるITの展望は多Platform(Xamalin、UWP)だったり、ネットワーク前提のデータ収集、データ分析(IoT、クラウド、AI)ら辺なんだろうな。と感じました。
それはMSに限った話ではないのだけど。
あまりR&Dしないうちのような会社では、恩恵も全力で受けられるわけではないし、流行りに乗れないので、個人でいっぱい触れていきたいな、と思いました。



🌸以下聴いたセッションの感想&まとめ🌸

#TL01 ------------------
VisualStudio 2017とC#7の新機能
 -------------------------

色々地味な機能だけど、使いやすくなってるんだな。と。
C#はそもそもあまり使わないので、恩恵を受ける程ではないのだけど、「そりゃ便利になったな!」って感じ。
特にライブデバッグと多値戻り値は便利なんじゃないかな?
いつも戻り値用構造体作っちゃうけどw
ただ、本当に地味な機能が多いな、って印象。
VS2015からupdateすると互換性の問題とか、客先との環境合わせの問題もあるからメインはまだまだ2015かも。
生ちょまどさんはやっぱり可愛いかった(*´ω`*)


#MR09 ------------------
デスクトップアプリをストアから配布する
 -------------------------
この前知って気になっていたDesktopAConvertor.exeのデモをClipStudioでやってくれました。
結構手軽にできるんだな、という印象。
今後のMSの方針(多Platformでの共通展開と、大本の安全性をMSが管理する。みたいな考え方)がよく感じられたセッションでした。
WACKとい認証キットが出たのも初めて知った。ドライバのロゴ認証でHCK/HLKとよく格闘している身としては、恐怖。



#MR09 ------------------
C#の現状と今後を徹底解説
 -------------------------
一言で言えば「C#って進化してるんだな。。。」
Ver.5から開発チームが2つに分かれてるから色々ごたごたしてるっていう裏話も聞けて楽しかったです。
.NetとかC#とかもっと使いたいなぁと思った。



#SC11 ------------------
セキュリティマニアックス
 -------------------------
一番楽しかった!
標的型メールとか、色々あるけど、実際にひっかかるとどんな手順で侵入されていくのか、っていうのをその場でデモしてくれて非常に分かり易かった。
「Clientがハックされるの前提で、後出しじゃんけんでどれくらい守れるか」という考え方が今後のセキュリティ製品の課題になっていくのかな、と思えました。
アセンブリ見れば色々わかっちゃうんだからすごい。



#AC04 ------------------
ブロックチェーン。BaaS。
 -------------------------
デプロイ王子様のありがたいお話。
ビットコインを買ってない身としては、あまり馴染みのない話だったのだけど、
確か今後伸びていくんだろうな。という話。
使い方も無限大だと思う。




[追記]
色々資料公開されてた!
やっほーい!
blogs.msdn.microsoft.com

ZenBook3買ったよ!!

(*´ω`*)…(なんか、外から入れるビルドマシン欲しいなぁ)

 

と思ったので、それなりのスペックのノートPCを買うことに。

Azureとか使えばいいじゃん、という話かもしれませんが、

ちょうどメインノートのSurfacePro2にも限界を感じてきたのでついでに。

そのうちGPDとか買うから、外からはそれでいこう。そうだ、そうしよう。

 

と、いうことで、買ってきましたZenBook3!!

f:id:piyomani:20170521210101j:plain

Corei5-7200U!

メモリ8GB!!

SSD256GB!!!

薄くてかわいい本体に、専用スリーブとミニドックまでついで110k!

すごーい\(*´ω`*)/!!

 

よし!とりあえずVisualStudio2017フルで入れちゃうぞー!

f:id:piyomani:20170521213748j:plain

50.14GB

さすがのフルだ...。

 

今日はVS2017のインストールで終わりそう。

そして、セキュリティソフト入れようと思ったら全部PC名適当でどれを破棄していいのか分からない。

 

ルーターいじったりはまた明日かな?

【解体】子ども用乗用ショベルカーを修理してみた

ぷらっと家族でハードオフに行ってきました。
のりものシリーズにハマり出しているチビは真っ先におもちゃコーナーへ。
ハードオフのおもちゃコーナーって色々あって面白いですよね。

そんな中で見つけて即買いしちゃいました。
これ!!!

f:id:piyomani:20170514212014j:plain


コマツのショベルカー!!!!
お値段950円!!!!

ヘルメット付き(プラスチック製)!!!笑

乗用マイクロショベルコマツPC01

乗用マイクロショベルコマツPC01

 

 
元値は諭吉さん超えるくらいらしいので、とってもお買い得!!

 

何故そんなに安いのか。
値札の上にこんなことが書いてありました
・アーム上がりません
・音出ません
つまりはジャンクです。

望むところです!!

 

ってことで修理。

 

●まず状態を見ます

・アームを動かす

 →動きが安定しないけど下方向には動く。上へ戻らない。レバーがすこすこしてる。

・サウンドレバーを動かす

 →鳴らない。

・本体を持ち上げる

 →なんだかカラカラ鳴るwwwww

 

とりあえず一方向ですがアームは動いたので解体していけば切り分けは簡単そう。

カラカラ鳴るのは、何が取れちゃってるんだろうwww

 

●アーム部解体

とりあえずアーム部を外す!

f:id:piyomani:20170514215320j:plain

軽く見た感じ、断線等は見当たらなかったです。可動部も上下にしっかり動いていたので、ギアが外れてるとかではなさそう。てことでギア部のカバーを外す。

f:id:piyomani:20170514213450j:plain

中を開けたら思ったよりいっぱいギアが噛み合ってました。

で、一番大きいギアの軸を支える穴が割れてました。

動きが安定しないのはこいつが原因かな?

↓ ↓ 修理! ↓ ↓

 f:id:piyomani:20170514214727j:plain

 破片が体内に残ってなかったので、そこら辺に落ちてた何かのプラスチックの蓋を代用。

長い軸をしっかり包み込んで、左右にぶれなくなりました!!やったー!

 

 

 ●本体部解体

次は、何故かカラカラ鳴る本体部の解体!

開けてみると、出てくる出てくる色んな破片wwww

f:id:piyomani:20170514220739j:plain

 画像は他のねじも混ざってますが、

プラスチック片×3。バネ×1。ねじ×1。

これらの出所がどこなのかを探します。

 

キャタピラ部+電池部+椅子部に問題は無し。

ということで動力部です。

f:id:piyomani:20170514223749j:plain

 音が出ないスピーカーは、おそらく断線だと思うのですが、音を出すことを覚えるとやかましくなるので修理しなくてもいいかな、という結論にw

 

 

●基板を外し、レバー裏へ。

 

 プラ片とばねの出所発見!!

ばね裏が接地点になってたのですが、ばねを支えるプラが割れて、上手くアームを上げる方に接地出来なかったようです。

元の持ち主の子がいっぱいレバガチャしたのかな?

f:id:piyomani:20170514225454j:plain

接着して動作確認して完了!!!

 

ねじの出所は直したらどこのだったのか分からなくなってしまいましたが、無事直りました!!

修理完了!!!!!!!

 

次の日の朝、チビは喜んで乗って遊んでました(*´ω`*)

【RaspberryPi】再び!RaspberryPiにwindows10 IoT Coreを入れる!

 

piyomanilife.hatenablog.com

 

こんな記事をちょっと前に書きましたが、

Lチカと3軸加速度センサをちょっといじって放置してました。

ごめんねラズパイさん。。。

 

折角のGWということで、久々に遊ぼうと思ったら、

BSODで起動しない!!!!!

ダメじゃん!!!!!!!

 

となったので、再度SDにWin10IoTをインストールすることに。

(BSODの治るの確認なのでInsiderPreviewじゃなくて、15063入れてます)

 

手順はこれだけ!

1.IoT Dashboardを起動する

2.[新しいデバイスのセットアップ]を選択する

3.microSDを挿す

4.設定をして[ダウンロードとインストール]をクリック

5.書き終わったmicroSDをラズパイにインして電源オン!!!

 

f:id:piyomani:20170508235827p:plain

 

以前は使い勝手が微妙だったIoT Dashboardがとっても使いやすくなってました( *´ω`)

 

 

 

 

*余談*

OSのアップデートとかさぼってたからBSODになったんだ!Σ

とか思ってOS焼き直しましたが、

インターネットに接続すると Windows Update を通じて自動的に OS が更新されます。」

とか公式に書いてあった。すごい便利な世の中だなぁ。

ビジネス向けの Windows 10 IoT

 

【C++】HTTP通信で大きいサイズのファイルを分割して送る

HTTP通信で大きいサイズのファイルを分割してPOSTする方法。

普通にPOSTする分には問題なかったのだけど、

送信したいファイルの内容を一度メモリに展開してから送る!ってやってたら、

700MBくらいですっ飛んだので、修正。

巨大サイズのファイルを扱う時っていつも注意が必要ですね。

 

WinHttpSendRequestで送るサイズを先に指定すれば、WinHttpWriteDataで分割して送信できるんだなぁ。

でも、サイズ指定部分がbyte数をDWORD型なので、

4GB(4,294,967,295byte)が限界!!

GB超えるファイルをHttpで送らないでと言いたい...(´・ω・`)

 

APIも色んな手順で使えるんだと知りました。ここの図が凄い分かり易かった!

WinHTTP Sessions Overview (Windows)

 

サンプルコードは以下。

CString系を多用しているのは好みと技術力の問題です。

エラー処理とか、解放漏れとかは無視して下さい。

 

 

基本的にはここを参考にさせていただきました。

http://eternalwindows.jp/network/winhttp/winhttp02.html

 

【Azure】AzureRMS APIを使用した暗号アプリを作成する

こっからの続き。

piyomanilife.hatenablog.com

AzureRMS環境構築後、APIを使用してRMSのアプリを作成するメモです。

適当に暗号化するアプリを作るよ!! 

 

ちなみに、Azure RMSとか新し目の技術を使っておきながら、
作るアプリケーションはC++MFCです。
\(^o^)/<化石かよ!!!  でも好き!!!>\(^o^)/

 

目次兼手順は以下

 

--------

1.AzureADにアプリケーションを登録

①左メニューから[ACTIVE DIRECTORY]を選択

②対象のActiveDirectoryを選択

③上部メニューから[アプリケーション]を選択

④[+追加]を選択

f:id:piyomani:20170314001304p:plain

⑤出てきたダイアログで適当にアプリ情報を登録

詳細はここら辺を参照↓

ADAL 認証用のアプリの構成 | Microsoft Docs

 

 

 私は「TestRMS」という名前のネイティブクライアントアプリとして登録。

f:id:piyomani:20170315233511p:plain

2.暗号化に必要な情報を取得

基本は以下のページの手順に則り、実施↓。

クラウド ベース RMS でサービス アプリケーション使用を有効化する方法 | Microsoft Docs

 

Microsoft Online サインイン アシスタントをインストール

https://www.microsoft.com/ja-jp/download/details.aspx?id=41950

②Azure AD PowerShell モジュールをインストール

https://www.microsoft.com/ja-jp/download/details.aspx?id=41950

③Azure RMS PowerShell モジュールをインストール

https://docs.microsoft.com/ja-jp/information-protection/deploy-use/install-powershell

④AzureADのPowerShellを起動して、以下を実行

Import-Module MSOnline

Connect-MsolService (管理者の資格情報を入力)

New-MsolServicePrincipal (アプリ名を聞かれるので、1で登録した名前を入力)

出てきた情報をメモ。

⑤AzureADのPowerShellで引き続き、以下を実行

Import-Module aadrm

Connect-AadrmService (管理者の資格情報を入力)

Get-AadrmConfiguration

出てきた情報をメモ。

④⑤を通すとこんな感じ

PS C:WINDOWSsystem32> Import-Module MSOnline
PS C:WINDOWSsystem32> Connect-MsolService
PS C:WINDOWSsystem32> New-MsolServicePrincipal

コマンド パイプライン位置 1 のコマンドレット New-MsolServicePrincipal
次のパラメーターに値を指定してください:
DisplayName: TestRMS
The following symmetric key was created as one was not supplied X5Vj+N9bk38bwwWxGpNeHi6r32oiKxduEyrTAqGidQI=
DisplayName : TestRMS

ServicePrincipalNames : {a7571801-27e2-4863-9c5f-6485c7c20505}
ObjectId : a992522e-2109-417c-a7c0-90d2dbb5beb8
AppPrincipalId : a7371501-27c2-4863-9c3f-6485c7d20503 

TrustedForDelegation : False
AccountEnabled : True
Addresses : {}
KeyType : Symmetric
KeyId : aaf125f4-c25f-4823-bcf2-238de9ca378b
StartDate : 2017/03/11 14:46:53
EndDate : 2018/03/11 13:46:53
Usage : Verify

PS C:WINDOWSsystem32> Import-Module aadrm
PS C:WINDOWSsystem32> Connect-AadrmService
A connection to the Microsoft Azure AD Rights Management (AADRM) service was opened.
PS C:WINDOWSsystem32> Get-AadrmConfiguration

BPOSId : 6e0da1ab-d715-48c9-91cc-1ae9952039fe
RightsManagementServiceId : f5c1aaa4-6d0c-42cc-a24d-6e8006b8a323
LicensingIntranetDistributionPointUrl : https://f5c1abc4-600c-42cc-a24d-6e8006b3a323.rms.ap.aadrm.com/_wmcs/licensing
LicensingExtranetDistributionPointUrl : https://f5c1abc4-600c-42cc-a24d-6e8006b3a323.rms.ap.aadrm.com/_wmcs/licensing
CertificationIntranetDistributionPointUrl : https://f5c1abc4-600c-42cc-a24d-6e8006b3a323.rms.ap.aadrm.com/_wmcs/certification
CertificationExtranetDistributionPointUrl : https://f5c1abc4-600c-42cc-a24d-6e8006b3a323.rms.ap.aadrm.com/_wmcs/certification
AdminConnectionUrl : https://admin.ap.aadrm.com/admin/admin.svc/Tenants/f5c1abc4-600c-42cc-a24d-6e8006b3a32c
AdminV2ConnectionUrl : https://admin.ap.aadrm.com/adminV2/c-42cc-a24d-6e8006b3a32c
OnPremiseDomainName :
Keys : {814d5d6d-3fd7-4b61-9b23-635b36782cff}
CurrentLicensorCertificateGuid : 814d5d6d-3fd8-4b61-9b23-635b49c82cff Templates : {8209c59f-21f5-42ab-b8f1-bf825c4cf896, 473a0ba4-36b7-47a6-9d0c-fe3933abd0c4}
FunctionalState : Enabled
SuperUsersEnabled : Disabled
SuperUsers : {}
AdminRoleMembers : {}
KeyRolloverCount : 0
ProvisioningDate : 2017/03/11 14:19:46
IPCv3ServiceFunctionalState : Enabled
DevicePlatformState : {Windows -> True, WindowsStore -> True, WindowsPhone -> True, Mac -> True...}
FciEnabledForConnectorAuthorization : True
DocumentTrackingFeatureState : Enabled

 

3.開発環境にSDKのインストール

RMS SDK(2.1)のダウンロード
https://www.microsoft.com/en-us/download/confirmation.aspx?id=38397

からAzureRMSSDKをインストール


4.プロジェクトの作成と、リンカーやら設定

①VSでプロジェクト作成

私は安定の化石C++MFCだよ!

②プロジェクトにSDKのリンカとか設定

プロジェクトのプロパティを開いて設定追加。ここに書いてある通りに↓
(参考:https://docs.microsoft.com/ja-jp/information-protection/develop/how-to-configure-a-visual-studio-project-to-use-the-ad-rms-sdk-2-0)

☆[構成プロパティ] →[VC++ ディレクトリ] → [インクルード ディレクトリ]に“$(MSIPCSDKDIR)inc”を追加

 ☆[構成プロパティ] →[VC++ ディレクトリ] →[ライブラリ ディレクトリ] に“$(MSIPCSDKDIR)lib”を追加。

(x32の場合は“$(MSIPCSDKDIR)lib”)を追加。

☆[リンカー] →[入力] →[追加の依存ファイル]に“Msipc.lib;Msipc_s.lib”を追加。

☆[リンカー] →[入力] → [DLL の遅延読み込み]に“Msipc.dll” を追加。


5.プログラムかきかき

後は適当に用意されたAPIを使ってプログラムするだけ!

基本的に必要になる情報は手順2の最後に書いた実行結果の緑文字の部分。

作ったアプリの一部だけサンプルとして↓

 

初期化して、テンプレート取ってきて、ファイル暗号にかけてるだけ!

 

6.できたかな!

アプリを起動して、ファイル指定!暗号化!!!

f:id:piyomani:20170318040908p:plain

暗号化されて、pファイルになったよ!!!

中身も暗号化されてる!!

ちなみに、Office系ファイルは暗号化しても拡張子が変わらないので、見た目だけだとよく分からないよ\(^o^)/

 

中見て<BODY type="Microsoft Rights Label" version="3.0">ってタグが入ってたらRMSで暗号化されたファイルみたいです。

 

おしまい!