|
VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
|
上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
aforangel
註冊時間: 2010-05-24 文章: 117
第 1 樓
|
發表於: 星期三 四月 15, 2015 4:46 pm 文章主題: OPEN EXCEL FILE |
|
|
上司有一個EXCEL 2013 FILE, 之前設定了密碼, 但忘了, 公司說叫我去買一個破解EXCEL密碼的程式回來試破解, 我忽然想, 可否用VFP試試寫一個程式去做
問題一:
先假設密碼是由A-z, 0-9組合而成, 字數為1-8位數, 個迴圈應該怎去寫
問題二:
lreturn = eole.Workbooks.Open(〃c:\temp\lock.xls〃)
嘗試的密碼要放在那裡, lreturn又會傳回什麼代表開啟成功 |
|
回頂端 |
|
|
bx1166
註冊時間: 2011-12-06 文章: 273
第 2 樓
|
|
回頂端 |
|
|
aforangel
註冊時間: 2010-05-24 文章: 117
第 3 樓
|
發表於: 星期四 四月 16, 2015 9:43 am 文章主題: |
|
|
迴圈那裡有點亂, 可以詳細一點說明嗎? |
|
回頂端 |
|
|
bx1166
註冊時間: 2011-12-06 文章: 273
第 4 樓
|
發表於: 星期四 四月 16, 2015 11:46 am 文章主題: |
|
|
密碼設定者慢慢試比一個一個猜要有效率,我建議不要用程式去猜, 很花時間,我用ipad 字打起來很辛苦,
以三碼爲例,
Mkey="ABCDEFGHI....abc deft....012..." && total 62 Chris
For a1=1 to 62
Fro a2=1 to 62
Fro a3=1 to 62
Mpass=substr(mkey,a1,1)+substr(mkey,a2,1)+substr(mkey,a3,1)
***password guest here. Do guest with mpass
Next a3
Next a2
Next a1
bx1166 在 星期四 四月 16, 2015 2:02 pm 作了第 1 次修改 |
|
回頂端 |
|
|
aforangel
註冊時間: 2010-05-24 文章: 117
第 5 樓
|
發表於: 星期四 四月 16, 2015 12:17 pm 文章主題: |
|
|
我本來想說, 如果這個程式試驗成功, 將來就算任何一個excel檔案忘了密碼也可以拿來用, 現在雖然說上司還在, 可以去憑記憶嘗試, 但如果是一個已離職同事的檔案有設密碼, 就要在毫無頭緒下去用程式破解了, 但想一想....
密碼1個位: 62個可能性
密碼2個位: 62x62 = 3844可能性
密碼3個位: 62x62x62 = 238328可能性
密碼4個位: 62x62x62x62 = 14776336可能性
密碼5個位: 62x62x62x62x62 = 916132832可能性
密碼6個位: 62x62x62x62x62x62 = ....天文數字了, 莫說7個位或8個位, 而且還只是假設密碼只用上0-9,A-Z,a-z...如果還有標點附號... |
|
回頂端 |
|
|
bx1166
註冊時間: 2011-12-06 文章: 273
第 6 樓
|
發表於: 星期四 四月 16, 2015 2:03 pm 文章主題: |
|
|
萬一是九或十碼呢? |
|
回頂端 |
|
|
aforangel
註冊時間: 2010-05-24 文章: 117
第 7 樓
|
發表於: 星期四 四月 16, 2015 4:34 pm 文章主題: |
|
|
xx=GETOBJECT("","Excel.Application")
sh=xx.application
lpassword = "abc123"
nK = sh.Workbooks.Open(alltrim(.text17.value),.f.,.f., ,lpassword)
sh.activeworkbook.saved=.t. &&放棄存檔
sh.workbooks.close &&關閉檔案
sh.quit &&結束excel
nK = sh.Workbooks.Open(alltrim(.text17.value),.f.,.f., ,lpassword)
如果lpassword正確, EXCEL檔案順利開啟, 就正常地RUN下去,
但如果lpassword錯了, EXCEL檔案開不到, 就出現錯誤, 停在這行, 有辦法就算開啟失敗也繼續下一行放棄存檔嗎? 另nK這個變數, 會在成功開啟或失敗時分別傳回什麼值? |
|
回頂端 |
|
|
bx1166
註冊時間: 2011-12-06 文章: 273
第 8 樓
|
發表於: 星期四 四月 16, 2015 6:25 pm 文章主題: |
|
|
加個
? nk
wait
看看nk 等於多少 |
|
回頂端 |
|
|
perry
註冊時間: 2014-07-20 文章: 203
第 9 樓
|
發表於: 星期四 四月 16, 2015 9:35 pm 文章主題: |
|
|
當您確定程式沒問題,再加就好!!
我都用這個來避免版本不同,部份excel指令不相容.
on error do errpass
.
.
.
sh.quit &&結束excel
on error
proc errpass
**return by pass error line and run next line
retu |
|
回頂端 |
|
|
aforangel
註冊時間: 2010-05-24 文章: 117
第 10 樓
|
發表於: 星期五 四月 17, 2015 10:06 am 文章主題: |
|
|
[quote="perry"]當您確定程式沒問題,再加就好!!
我都用這個來避免版本不同,部份excel指令不相容.
on error do errpass
.
.
.
sh.quit &&結束excel
on error
proc errpass
**return by pass error line and run next line
retu[/quote] |
|
回頂端 |
|
|
bx1166
註冊時間: 2011-12-06 文章: 273
第 11 樓
|
發表於: 星期三 四月 22, 2015 10:02 am 文章主題: |
|
|
*function chk_rload
*lpara screen_caption
declare integer FindWindow in Win32API string class_name, string window_title
if FindWindow(null,screen_caption)>0
messagebox(" 此程式已在執行中 ",0+16+0,"警告 重複執行")
quit
endif
* r = FindWindowLike(hWnds(),0,"*","*"、 Null)
* 傳回: 所有可用的視窗。
* r = FindWindowLike(hWnds(),0,"* Excel *","*"、 Null)
* 傳回: 所有的視窗 「 excel 」 中的視窗文字。
* r = FindWindowLike(hWnds(),0,「 Microsoft Excel *","XLMAIN"Null)
* 傳回: 視窗文字的所有視窗的都開始與 「 Microsoft Excel],而且其中包含的類別名稱"XLMAIN"
* r = FindWindowLike(hWnds(),Form1.Hwnd,"*","*","& HA1")
* 傳回: Id 為十六進位 A1 的 [Form1] 視窗的子視窗。
* r = FindWindowLike(hWnds(),Form1.Hwnd,"*","*",2)
* 傳回: Id 為 2 的 [Form1] 視窗的子視窗。
*return .t.
*endfunc
您參考一下, 找出視窗控制碼, 就可以關閉視窗了 |
|
回頂端 |
|
|
215001
註冊時間: 2003-06-11 文章: 389
第 12 樓
|
發表於: 星期三 四月 22, 2015 11:24 am 文章主題: |
|
|
VFP8 可用下面方法判斷是否開啟成功
引言回覆: |
先用
TRY
xApp.WorkBooks.open(檔案) && 可能沒設密碼
*開啟成功
CATCH
*開啟失敗
ENDTRY
失敗時,再用各種密碼組合測試
TRY
xApp.WorkBooks.open(檔案,,,,密碼)
*開啟成功
CATCH
*開啟失敗
ENDTRY
|
|
|
回頂端 |
|
|
|
|
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
|
|