AutoHotkey Community

It is currently May 24th, 2012, 7:37 pm

All times are UTC [ DST ]




Post new topic Reply to topic  [ 157 posts ]  Go to page 1, 2, 3, 4, 5 ... 11  Next
Author Message
 Post subject: [module] Dlg 5.01
PostPosted: March 5th, 2007, 2:16 pm 
Offline

Joined: May 24th, 2006, 2:49 pm
Posts: 4511
Location: Belgrade
OUTDATED. Dlg is now maintained via Formsframework.


_________________
Image


Last edited by majkinetor on January 5th, 2011, 10:54 am, edited 76 times in total.

Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: March 5th, 2007, 2:21 pm 
Offline

Joined: May 24th, 2006, 2:49 pm
Posts: 4511
Location: Belgrade
One strange thing happening. If you check the code you will see lines:

Code:
VarSetCapacity(i, 4, 0)
InsertInteger(idx, i, 0)
r := DllCall("shell32.dll\PickIconDlg", "uint", hGui, "uint", &wIcon, "uint", size, "int", &i)

if I do this without VarSetCapacity and InsertInteger it will not work, the windows will receive ascii codes. Like, if you set idx := 1 31st icon will be selected as ASCII(1) = 31.

Now, this is strange, I expect dll call to handle this as I specify "uint" as an parameter.

_________________
Image


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: March 5th, 2007, 2:37 pm 
Offline

Joined: February 12th, 2007, 7:54 am
Posts: 2462
This is normal. You only give the address of i, and i is stored as a string. Use a pointer instead: "intP", i like in
http://www.autohotkey.com/forum/topic16755.html


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: March 5th, 2007, 3:02 pm 
Offline

Joined: May 24th, 2006, 2:49 pm
Posts: 4511
Location: Belgrade
ah... my mistake.. i somehow confused uint with intp

Hmm.. something is wrong with the function. Suddenly it stoped returning new path upon selection.... The index is returned correctly but the path stays the same as on input for some reason, even if you change it.

_________________
Image


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: March 5th, 2007, 3:43 pm 
Offline

Joined: February 12th, 2007, 7:54 am
Posts: 2462
Looks like the script doesn't count the null terminator character at all. Then, lstrlen function might not function as expected. That could be a cause.


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: March 5th, 2007, 3:46 pm 
Offline

Joined: May 24th, 2006, 2:49 pm
Posts: 4511
Location: Belgrade
Argh I must get some sleep..

I changed the func, and left something that was there in my initial runs.. count of chars that i removed latter...


Btw, it counts null char, that is the reason for 1025 ~ Max_PATH*2 + 1

ok, just redownload

_________________
Image


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: March 5th, 2007, 4:09 pm 
Offline

Joined: February 12th, 2007, 7:54 am
Posts: 2462
I didn't mean the buffer length, 1025 + 1 is far more than enough mostly even with Unicode function, I suppose. I meant the parameter like StrLen() etc. To be safer, they should be like StrLen() + 1 etc IMO.


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: March 5th, 2007, 4:30 pm 
Offline

Joined: May 24th, 2006, 2:49 pm
Posts: 4511
Location: Belgrade
well, msdn explicitely states where it requires null char counted and where not.

_________________
Image


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: March 5th, 2007, 8:37 pm 
Offline

Joined: May 24th, 2006, 2:49 pm
Posts: 4511
Location: Belgrade
I reordered things a little

_________________
Image


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: March 5th, 2007, 11:14 pm 
Very cool! 8)

Icon doesn't insert correctly into your example for me.


Wondering... Does anybody know what the exact system requirements are for these emerging COM/OLE scripts? Does it need NT or IE or anything?


Report this post
Top
  
Reply with quote  
 Post subject:
PostPosted: March 5th, 2007, 11:54 pm 
Offline

Joined: May 24th, 2006, 2:49 pm
Posts: 4511
Location: Belgrade
I tried this and it showed me folder icon

Code:
s := "c:\windows\system32\shell32.dll"
idx := 4
ChooseIcon(s, idx)


About COM, nothing special, just IE.

_________________
Image


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: March 5th, 2007, 11:57 pm 
Ok, I see, your example does not add the actual selected icon, only the first.

I guess COM/OLE needs IE3, from reading a bit, and it should be available from Win95 on... Now I'm still wondering if all the COM scripts here actually would work on a Win95 system with IE3.


Report this post
Top
  
Reply with quote  
 Post subject:
PostPosted: March 5th, 2007, 11:58 pm 
Offline

Joined: February 12th, 2007, 7:54 am
Posts: 2462
majkinetor wrote:
Btw, it counts null char, that is the reason for 1025 ~ Max_PATH*2 + 1

Hmm, where did you get MAX_PATH is 512?
AFAIK, MAX_PATH is 260 = 3 + 256 + 1, and the last 1 is indeed for the terminating null (:the first 3 is for drive like C:\).


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: March 6th, 2007, 12:02 am 
Offline

Joined: February 12th, 2007, 7:54 am
Posts: 2462
n-l-i-d wrote:
I guess COM/OLE needs IE3, from reading a bit, and it should be available from Win95 on... Now I'm still wondering if all the COM scripts here actually would work on a Win95 system with IE3.

I'm afraid that you're a bit confused. There is no COM here, comdlg32.dll is Common Dialog (:there is indeed a custom comdlg32.ocx which is used by VB).


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: March 6th, 2007, 9:38 am 
Offline

Joined: May 24th, 2006, 2:49 pm
Posts: 4511
Location: Belgrade
well, max path is 260 TCHARS AFAIK. SO, in unicode terms it is double. Why I used double of double, don't ask... was very sleepy and crashed yesterday, I made bunch of trivial errors. I didn't use 260, but degree of 2 as it is the fastest to alocate buffers with such size.

_________________
Image


Report this post
Top
 Profile  
Reply with quote  
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 157 posts ]  Go to page 1, 2, 3, 4, 5 ... 11  Next

All times are UTC [ DST ]


Who is online

Users browsing this forum: Bing [Bot], fincs, lblb, Relayer, teadrinker and 12 guests


You can post new topics in this forum
You can reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Powered by phpBB® Forum Software © phpBB Group