Ritz Posted September 2, 2006 Share Posted September 2, 2006 I have a program which checks a set of items in a bitmapped-listview (i.e. it is not accessible except by looking at pixels). When you double click an item in the view, it opens a window which contains the name of the listview item in its title bar (ex: if the top item is "Item 1", then you double click it and a window entitled "Item 1" opens). Now the intuitive way to do this is to simply write a bot to scan each item, opening each new window and writing a new sequence of code to create one giant Select statement: ;get the checksum of the pixel region $itemChecksum = PixelChecksum($itemTopX, $itemTopY, $itemBottomX, $itemBottomY) ;open the window MouseClick($itemBottomX, $itemBottomY, 2) ;wait for it to open Sleep(1000) ;get the title of the window (and consequently, the title of the item in the listview) $itemName = WinGetTitle() ;add on to the file FileWrite($myFile, 'Case $_itemChecksum = ' & $itemChecksum & @CRLF & 'Return ' & $itemName & @CRLF) Then I just loop through until I've scanned all the windows in the listview, and I'm done. I can then copy/paste the big set of Case statements into a function, ChecksumToItemName($itemChecksum). Now this is all fine and good if the items are static (as I originally thought they were). However, it seems like every day a large # of the items are removed and new ones (with new names etc) are inserted. I could just run my scanner every day that I start it up, but that is really not an elegant solution. On the other hand, neither is creating these huge (1000+) Case Select statements. I feel like it would also start to get really slow after around 10,000 or so. What would be really nice is to have a hashmap or a binary search tree of some sort so that I could just make it load a file at startup and be done with it, while guaranteeing constant time search and the ability to add new ones dynamically. I suppose I could do this with a very large array, but I'm doing a checksum on over 700 pixels, so my array would need to be 2^700, and that's not gonna fly. Any ideas? Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now