andybiochem Posted May 25, 2008 Share Posted May 25, 2008 (edited) Hi!I knocked together this generator for Code 128 Barcodes. It works from first principles (character 1/0 patterns) and has a (not very brilliant) optimization algorithm.Feel free to use / improve.(btw, most barcode readers can read directly off an LCD monitor )expandcollapse popup;Code 128 Barcode Generator - Andy M 2008 #include <array.au3> #include <file.au3> Opt("GUIOnEventMode", 1) ;************************************************************************************* ; Declare Vars ;************************************************************************************* Global $array[104] Global $CodeArray Global $data Global $L[1] ;************************************************************************************* ; Assign Code 128 Pattern array ;************************************************************************************* ; Items are "[Value]¬[Bcode]¬[Ccode]¬[1/0 Pattern]" $array[1] = "0¬ ¬00¬11011001100" $array[2] = "1¬!¬01¬11001101100" $array[3] = '2¬"¬02¬11001100110' $array[4] = "3¬#¬03¬10010011000" $array[5] = "4¬$¬04¬10010001100" $array[6] = "5¬%¬05¬10001001100" $array[7] = "6¬&¬06¬10011001000" $array[8] = "7¬'¬07¬10011000100" $array[9] = "8¬(¬08¬10001100100" $array[10] = "9¬)¬09¬11001001000" $array[11] = "10¬*¬10¬11001000100" $array[12] = "11¬+¬11¬11000100100" $array[13] = "12¬,¬12¬10110011100" $array[14] = "13¬-¬13¬10011011100" $array[15] = "14¬.¬14¬10011001110" $array[16] = "15¬/¬15¬10111001100" $array[17] = "16¬0¬16¬10011101100" $array[18] = "17¬1¬17¬10011100110" $array[19] = "18¬2¬18¬11001110010" $array[20] = "19¬3¬19¬11001011100" $array[21] = "20¬4¬20¬11001001110" $array[22] = "21¬5¬21¬11011100100" $array[23] = "22¬6¬22¬11001110100" $array[24] = "23¬7¬23¬11101101110" $array[25] = "24¬8¬24¬11101001100" $array[26] = "25¬9¬25¬11100101100" $array[27] = "26¬:¬26¬11100100110" $array[28] = "27¬;¬27¬11101100100" $array[29] = "28¬<¬28¬11100110100" $array[30] = "29¬=¬29¬11100110010" $array[31] = "30¬>¬30¬11011011000" $array[32] = "31¬?¬31¬11011000110" $array[33] = "32¬@¬32¬11000110110" $array[34] = "33¬A¬33¬10100011000" $array[35] = "34¬B¬34¬10001011000" $array[36] = "35¬C¬35¬10001000110" $array[37] = "36¬D¬36¬10110001000" $array[38] = "37¬E¬37¬10001101000" $array[39] = "38¬F¬38¬10001100010" $array[40] = "39¬G¬39¬11010001000" $array[41] = "40¬H¬40¬11000101000" $array[42] = "41¬I¬41¬11000100010" $array[43] = "42¬J¬42¬10110111000" $array[44] = "43¬K¬43¬10110001110" $array[45] = "44¬L¬44¬10001101110" $array[46] = "45¬M¬45¬10111011000" $array[47] = "46¬N¬46¬10111000110" $array[48] = "47¬O¬47¬10001110110" $array[49] = "48¬P¬48¬11101110110" $array[50] = "49¬Q¬49¬11010001110" $array[51] = "50¬R¬50¬11000101110" $array[52] = "51¬S¬51¬11011101000" $array[53] = "52¬T¬52¬11011100010" $array[54] = "53¬U¬53¬11011101110" $array[55] = "54¬V¬54¬11101011000" $array[56] = "55¬W¬55¬11101000110" $array[57] = "56¬X¬56¬11100010110" $array[58] = "57¬Y¬57¬11101101000" $array[59] = "58¬Z¬58¬11101100010" $array[60] = "59¬[¬59¬11100011010" $array[61] = "60¬\¬60¬11101111010" $array[62] = "61¬]¬61¬11001000010" $array[63] = "62¬^¬62¬11110001010" $array[64] = "63¬_¬63¬10100110000" $array[65] = "64¬`¬64¬10100001100" $array[66] = "65¬a¬65¬10010110000" $array[67] = "66¬b¬66¬10010000110" $array[68] = "67¬c¬67¬10000101100" $array[69] = "68¬d¬68¬10000100110" $array[70] = "69¬e¬69¬10110010000" $array[71] = "70¬f¬70¬10110000100" $array[72] = "71¬g¬71¬10011010000" $array[73] = "72¬h¬72¬10011000010" $array[74] = "73¬i¬73¬10000110100" $array[75] = "74¬j¬74¬10000110010" $array[76] = "75¬k¬75¬11000010010" $array[77] = "76¬l¬76¬11001010000" $array[78] = "77¬m¬77¬11110111010" $array[79] = "78¬n¬78¬11000010100" $array[80] = "79¬o¬79¬10001111010" $array[81] = "80¬p¬80¬10100111100" $array[82] = "81¬q¬81¬10010111100" $array[83] = "82¬r¬82¬10010011110" $array[84] = "83¬s¬83¬10111100100" $array[85] = "84¬t¬84¬10011110100" $array[86] = "85¬u¬85¬10011110010" $array[87] = "86¬v¬86¬11110100100" $array[88] = "87¬w¬87¬11110010100" $array[89] = "88¬x¬88¬11110010010" $array[90] = "89¬y¬89¬11011011110" $array[91] = "90¬z¬90¬11011110110" $array[92] = "91¬{¬91¬11110110110" $array[93] = "92¬|¬92¬10101111000" $array[94] = "93¬}¬93¬10100011110" $array[95] = "94¬~¬94¬10001011110" $array[96] = "95¬del¬95¬10111101000" $array[97] = "96¬Fnc3¬96¬10111100010" $array[98] = "97¬Fnc2¬97¬11110101000" $array[99] = "98¬Shift¬98¬11110100010" $array[100] = "99¬Code C¬99¬10111011110" $array[101] = "100¬Fnc 4¬Code B¬10111101110" $array[102] = "101¬Code A¬Code A¬11101011110" $array[103] = "102¬Fnc 1¬Fnc 1¬11110101110" ;************************************************************************************* ; GUI ;************************************************************************************* GUICreate("Code 128 (B/C) Barcode Generator - AndyBiochem 2008", 613, 286) GUISetOnEvent($GUI_EVENT_CLOSE, "Close") $Input = GUICtrlCreateInput("", 8, 8, 321, 25) GUICtrlSetFont(-1,12) GUICtrlCreateButton("Generate Barcode", 344, 8, 257, 25) GUICtrlSetOnEvent(-1,"MakeBarcode") GUICtrlCreateLabel("", 8, 48, 596, 225) GUICtrlSetBkColor(-1, 0xFFFFFF) GUISetState(@SW_SHOW) ;##################################################################################### ; LOOP ;##################################################################################### While 1 Sleep(100) WEnd ;##################################################################################### ; END LOOP ;##################################################################################### Func MakeBarcode() ;************************************************************************************* ; Delete previous barcode ;************************************************************************************* for $i = 1 to (UBound($L) - 1) GUICtrlDelete($L[$i]) Next ;************************************************************************************* ; Generate Pattern ;************************************************************************************* $Barcode = IdentifyCodeSwitches(GUICtrlRead($Input)) ;************************************************************************************* ; Draw new Barcode ;************************************************************************************* Dim $L[StringLen($Barcode) + 1] $i = 1 While $i <= StringLen($barcode) $col = StringMid($barcode,$i,1) if $col = 1 Then $L[$i] = GUICtrlCreateLabel("",50 + ($i * 2),100,2,100) GUICtrlSetBkColor(-1,0x000000) Else $L[$i] = GUICtrlCreateLabel("",50 + ($i * 2),100,2,100) GUICtrlSetBkColor(-1,0xFFFFFF) EndIf $i += 1 WEnd EndFunc Func IdentifyCodeSwitches($code) ;************************************************************************************* ; Identify where code switches should be ;************************************************************************************* $i = 1 $CodeType = "B" ;always start with code type B $len = StringLen($Code) While $i <= $len Select Case $CodeType = "B" if StringRegExp(StringMid($Code,$i,6),"([0-9][0-9]){3}") = 1 Then $Code = StringMid($Code,1,$i - 1) & "¬C¬" & StringMid($Code,$i) $CodeType = "C" $i += 6 + 3 Else $CodeType = "B" $i += 1 EndIf Case $CodeType = "C" if StringRegExp(StringMid($Code,$i,2),"([0-9][0-9])") <> 1 Then $Code = StringMid($Code,1,$i - 1) & "¬B¬" & StringMid($Code,$i) $CodeType = "B" $i += 2 + 3 Else $CodeType = "C" $i += 2 EndIf EndSelect $len = StringLen($Code) WEnd ;************************************************************************************* ; Add start code B, if not already started C ;************************************************************************************* if StringMid($Code,1,3) <> "¬C¬" then $Code = "¬B¬" & $Code ;************************************************************************************* ; Split to array, re-assemble code switches ;************************************************************************************* $CodeArray = StringSplit($code,"") for $i = 1 to (UBound($CodeArray) - 3) Select case $CodeArray[$i] & $CodeArray[$i+1] & $CodeArray[$i+2] = "¬B¬" $CodeArray[$i] = "[B]" $CodeArray[$i+1] = "" $CodeArray[$i+2] = "" case $CodeArray[$i] & $CodeArray[$i+1] & $CodeArray[$i+2] = "¬C¬" $CodeArray[$i] = "[C]" $CodeArray[$i+1] = "" $CodeArray[$i+2] = "" EndSelect Next ;************************************************************************************* ; Remove empty items ;************************************************************************************* for $i = (UBound($CodeArray) - 1) to 1 step -1 if $CodeArray[$i] = "" then _ArrayDelete($CodeArray,$i) Next ;************************************************************************************* ; Concatenate C number pairs ;************************************************************************************* $i = 1 While $i <= (UBound($CodeArray) - 1) if $CodeArray[$i] = "[C]" Then $i += 1 do if $CodeArray[$i] = "" then $i += 1 Else $CodeArray[$i] &= $CodeArray[$i + 1] $CodeArray[$i + 1] = "" $i += 1 EndIf Until $i = (UBound($CodeArray) - 1) Or $CodeArray[$i] = "[B]" or $CodeArray[$i + 1] = "[B]" EndIf $i += 1 WEnd ;************************************************************************************* ; Remove empty items ;************************************************************************************* for $i = (UBound($CodeArray) - 1) to 1 step -1 if $CodeArray[$i] = "" then _ArrayDelete($CodeArray,$i) Next ;************************************************************************************* ; Replace Items with 128 Code Patterns, and mount checksum ;************************************************************************************* _ArrayDelete($CodeArray,0) ;important If $CodeArray[0] = "[B]" Then $CodeArray[0] = "11010010000" $SUM = 104 $CodeType = "[B]" Else $CodeArray[0] = "11010011100" $SUM = 105 $CodeType = "[C]" EndIf for $i = 1 to (UBound($CodeArray) - 1) if $CodeArray[$i] = "[B]" Then $CodeArray[$i] = "10111101110" $SUM += $i * 100 $CodeType = "[B]" ContinueLoop EndIf if $CodeArray[$i] = "[C]" Then $CodeArray[$i] = "10111011110" $SUM += $i * 99 $CodeType = "[C]" ContinueLoop EndIf for $j = 1 to (UBound($array) - 1) $data = StringSplit($array[$j],"¬") Select case $CodeType = "[B]" if $CodeArray[$i] == $data[2] Then $CodeArray[$i] = $data[4] $SUM += $i * $data[1] EndIf case $CodeType = "[C]" if $CodeArray[$i] == $data[3] Then $CodeArray[$i] = $data[4] $SUM += $i * $data[1] EndIf EndSelect Next Next ;************************************************************************************* ; Calculate & find checksum item ;************************************************************************************* $ChecksumItem = Mod($SUM,103) $data = StringSplit($array[$ChecksumItem + 1],"¬") _ArrayAdd($CodeArray,$data[4]) ;************************************************************************************* ; Add stop item ;************************************************************************************* _ArrayAdd($CodeArray,"1100011101011") ;************************************************************************************* ; Flatten array ;************************************************************************************* $CodeArrayString = _ArrayToString($CodeArray,"") Return $CodeArrayString EndFunc func close() ;************************************************************************************* ; Bye bye ;************************************************************************************* Exit EndFuncLet me know what you think! Edited May 25, 2008 by andybiochem - Table UDF - create simple data tables - Line Graph UDF GDI+ - quickly create simple line graphs with x and y axes (uses GDI+ with double buffer) - Line Graph UDF - quickly create simple line graphs with x and y axes (uses AI native graphic control) - Barcode Generator Code 128 B C - Create the 1/0 code for barcodes. - WebCam as BarCode Reader - use your webcam to read barcodes - Stereograms!!! - make your own stereograms in AutoIT - Ziggurat Gaussian Distribution RNG - generate random numbers based on normal/gaussian distribution - Box-Muller Gaussian Distribution RNG - generate random numbers based on normal/gaussian distribution - Elastic Radio Buttons - faux-gravity effects in AutoIT (from javascript)- Morse Code Generator - Generate morse code by tapping your spacebar! Link to comment Share on other sites More sharing options...
icadea Posted May 25, 2008 Share Posted May 25, 2008 thanks. do not know barcode reader can read barcode from LCD. will try that out. Link to comment Share on other sites More sharing options...
Andreik Posted May 25, 2008 Share Posted May 25, 2008 I like your script. It`s very nice. When the words fail... music speaks. Link to comment Share on other sites More sharing options...
gseller Posted May 25, 2008 Share Posted May 25, 2008 I Like It!! Don't have use for it but nice coding... Are you going to add print capabilities? Link to comment Share on other sites More sharing options...
martin Posted May 25, 2008 Share Posted May 25, 2008 (edited) I Like It!! Don't have use for it but nice coding... Are you going to add print capabilities? I like the script too. In case it's of any help here is a very simple example script to print the barcode after it has been generated. I added a function to andybiochem's script and added an include. To use it you need to get my print UDF and dll from my signature. expandcollapse popup;Code 128 Barcode Generator - Andy M 2008 (andybiochem) #include <array.au3> #include <file.au3> #include 'printMGv2.au3';<---------added my martin Opt("GUIOnEventMode", 1) ;************************************************************************************* ; Declare Vars ;************************************************************************************* Global $array[104] Global $CodeArray Global $data Global $L[1] ;************************************************************************************* ; Assign Code 128 Pattern array ;************************************************************************************* ; Items are "[Value]¬[Bcode]¬[Ccode]¬[1/0 Pattern]" $array[1] = "0¬ ¬00¬11011001100" $array[2] = "1¬!¬01¬11001101100" $array[3] = '2¬"¬02¬11001100110' $array[4] = "3¬#¬03¬10010011000" $array[5] = "4¬$¬04¬10010001100" $array[6] = "5¬%¬05¬10001001100" $array[7] = "6¬&¬06¬10011001000" $array[8] = "7¬'¬07¬10011000100" $array[9] = "8¬(¬08¬10001100100" $array[10] = "9¬)¬09¬11001001000" $array[11] = "10¬*¬10¬11001000100" $array[12] = "11¬+¬11¬11000100100" $array[13] = "12¬,¬12¬10110011100" $array[14] = "13¬-¬13¬10011011100" $array[15] = "14¬.¬14¬10011001110" $array[16] = "15¬/¬15¬10111001100" $array[17] = "16¬0¬16¬10011101100" $array[18] = "17¬1¬17¬10011100110" $array[19] = "18¬2¬18¬11001110010" $array[20] = "19¬3¬19¬11001011100" $array[21] = "20¬4¬20¬11001001110" $array[22] = "21¬5¬21¬11011100100" $array[23] = "22¬6¬22¬11001110100" $array[24] = "23¬7¬23¬11101101110" $array[25] = "24¬8¬24¬11101001100" $array[26] = "25¬9¬25¬11100101100" $array[27] = "26¬:¬26¬11100100110" $array[28] = "27¬;¬27¬11101100100" $array[29] = "28¬<¬28¬11100110100" $array[30] = "29¬=¬29¬11100110010" $array[31] = "30¬>¬30¬11011011000" $array[32] = "31¬?¬31¬11011000110" $array[33] = "32¬@¬32¬11000110110" $array[34] = "33¬A¬33¬10100011000" $array[35] = "34¬B¬34¬10001011000" $array[36] = "35¬C¬35¬10001000110" $array[37] = "36¬D¬36¬10110001000" $array[38] = "37¬E¬37¬10001101000" $array[39] = "38¬F¬38¬10001100010" $array[40] = "39¬G¬39¬11010001000" $array[41] = "40¬H¬40¬11000101000" $array[42] = "41¬I¬41¬11000100010" $array[43] = "42¬J¬42¬10110111000" $array[44] = "43¬K¬43¬10110001110" $array[45] = "44¬L¬44¬10001101110" $array[46] = "45¬M¬45¬10111011000" $array[47] = "46¬N¬46¬10111000110" $array[48] = "47¬O¬47¬10001110110" $array[49] = "48¬P¬48¬11101110110" $array[50] = "49¬Q¬49¬11010001110" $array[51] = "50¬R¬50¬11000101110" $array[52] = "51¬S¬51¬11011101000" $array[53] = "52¬T¬52¬11011100010" $array[54] = "53¬U¬53¬11011101110" $array[55] = "54¬V¬54¬11101011000" $array[56] = "55¬W¬55¬11101000110" $array[57] = "56¬X¬56¬11100010110" $array[58] = "57¬Y¬57¬11101101000" $array[59] = "58¬Z¬58¬11101100010" $array[60] = "59¬[¬59¬11100011010" $array[61] = "60¬\¬60¬11101111010" $array[62] = "61¬]¬61¬11001000010" $array[63] = "62¬^¬62¬11110001010" $array[64] = "63¬_¬63¬10100110000" $array[65] = "64¬`¬64¬10100001100" $array[66] = "65¬a¬65¬10010110000" $array[67] = "66¬b¬66¬10010000110" $array[68] = "67¬c¬67¬10000101100" $array[69] = "68¬d¬68¬10000100110" $array[70] = "69¬e¬69¬10110010000" $array[71] = "70¬f¬70¬10110000100" $array[72] = "71¬g¬71¬10011010000" $array[73] = "72¬h¬72¬10011000010" $array[74] = "73¬i¬73¬10000110100" $array[75] = "74¬j¬74¬10000110010" $array[76] = "75¬k¬75¬11000010010" $array[77] = "76¬l¬76¬11001010000" $array[78] = "77¬m¬77¬11110111010" $array[79] = "78¬n¬78¬11000010100" $array[80] = "79¬o¬79¬10001111010" $array[81] = "80¬p¬80¬10100111100" $array[82] = "81¬q¬81¬10010111100" $array[83] = "82¬r¬82¬10010011110" $array[84] = "83¬s¬83¬10111100100" $array[85] = "84¬t¬84¬10011110100" $array[86] = "85¬u¬85¬10011110010" $array[87] = "86¬v¬86¬11110100100" $array[88] = "87¬w¬87¬11110010100" $array[89] = "88¬x¬88¬11110010010" $array[90] = "89¬y¬89¬11011011110" $array[91] = "90¬z¬90¬11011110110" $array[92] = "91¬{¬91¬11110110110" $array[93] = "92¬|¬92¬10101111000" $array[94] = "93¬}¬93¬10100011110" $array[95] = "94¬~¬94¬10001011110" $array[96] = "95¬del¬95¬10111101000" $array[97] = "96¬Fnc3¬96¬10111100010" $array[98] = "97¬Fnc2¬97¬11110101000" $array[99] = "98¬Shift¬98¬11110100010" $array[100] = "99¬Code C¬99¬10111011110" $array[101] = "100¬Fnc 4¬Code B¬10111101110" $array[102] = "101¬Code A¬Code A¬11101011110" $array[103] = "102¬Fnc 1¬Fnc 1¬11110101110" ;************************************************************************************* ; GUI ;************************************************************************************* GUICreate("Code 128 (B/C) Barcode Generator - AndyBiochem 2008", 613, 286) GUISetOnEvent($GUI_EVENT_CLOSE, "Close") $Input = GUICtrlCreateInput("", 8, 8, 321, 25) GUICtrlSetFont(-1,12) GUICtrlCreateButton("Generate Barcode", 344, 8, 257, 25) GUICtrlSetOnEvent(-1,"MakeBarcode") GUICtrlCreateLabel("", 8, 48, 596, 225) GUICtrlSetBkColor(-1, 0xFFFFFF) GUISetState(@SW_SHOW) ;##################################################################################### ; LOOP ;##################################################################################### While 1 Sleep(100) WEnd ;##################################################################################### ; END LOOP ;##################################################################################### Func MakeBarcode() ;************************************************************************************* ; Delete previous barcode ;************************************************************************************* for $i = 1 to (UBound($L) - 1) GUICtrlDelete($L[$i]) Next ;************************************************************************************* ; Generate Pattern ;************************************************************************************* $Barcode = IdentifyCodeSwitches(GUICtrlRead($Input)) ;************************************************************************************* ; Draw new Barcode ;************************************************************************************* Dim $L[StringLen($Barcode) + 1] $i = 1 While $i <= StringLen($barcode) $col = StringMid($barcode,$i,1) if $col = 1 Then $L[$i] = GUICtrlCreateLabel("",50 + ($i * 2),100,2,100) GUICtrlSetBkColor(-1,0x000000) Else $L[$i] = GUICtrlCreateLabel("",50 + ($i * 2),100,2,100) GUICtrlSetBkColor(-1,0xFFFFFF) EndIf $i += 1 WEnd printBarCode(GUICtrlRead($Input), $Barcode) EndFunc Func IdentifyCodeSwitches($code) ;************************************************************************************* ; Identify where code switches should be ;************************************************************************************* $i = 1 $CodeType = "B" ;always start with code type B $len = StringLen($Code) While $i <= $len Select Case $CodeType = "B" if StringRegExp(StringMid($Code,$i,6),"([0-9][0-9]){3}") = 1 Then $Code = StringMid($Code,1,$i - 1) & "¬C¬" & StringMid($Code,$i) $CodeType = "C" $i += 6 + 3 Else $CodeType = "B" $i += 1 EndIf Case $CodeType = "C" if StringRegExp(StringMid($Code,$i,2),"([0-9][0-9])") <> 1 Then $Code = StringMid($Code,1,$i - 1) & "¬B¬" & StringMid($Code,$i) $CodeType = "B" $i += 2 + 3 Else $CodeType = "C" $i += 2 EndIf EndSelect $len = StringLen($Code) WEnd ;************************************************************************************* ; Add start code B, if not already started C ;************************************************************************************* if StringMid($Code,1,3) <> "¬C¬" then $Code = "¬B¬" & $Code ;************************************************************************************* ; Split to array, re-assemble code switches ;************************************************************************************* $CodeArray = StringSplit($code,"") for $i = 1 to (UBound($CodeArray) - 3) Select case $CodeArray[$i] & $CodeArray[$i+1] & $CodeArray[$i+2] = "¬B¬" $CodeArray[$i] = "[B]" $CodeArray[$i+1] = "" $CodeArray[$i+2] = "" case $CodeArray[$i] & $CodeArray[$i+1] & $CodeArray[$i+2] = "¬C¬" $CodeArray[$i] = "[C]" $CodeArray[$i+1] = "" $CodeArray[$i+2] = "" EndSelect Next ;************************************************************************************* ; Remove empty items ;************************************************************************************* for $i = (UBound($CodeArray) - 1) to 1 step -1 if $CodeArray[$i] = "" then _ArrayDelete($CodeArray,$i) Next ;************************************************************************************* ; Concatenate C number pairs ;************************************************************************************* $i = 1 While $i <= (UBound($CodeArray) - 1) if $CodeArray[$i] = "[C]" Then $i += 1 do if $CodeArray[$i] = "" then $i += 1 Else $CodeArray[$i] &= $CodeArray[$i + 1] $CodeArray[$i + 1] = "" $i += 1 EndIf Until $i = (UBound($CodeArray) - 1) Or $CodeArray[$i] = "[B]" or $CodeArray[$i + 1] = "[B]" EndIf $i += 1 WEnd ;************************************************************************************* ; Remove empty items ;************************************************************************************* for $i = (UBound($CodeArray) - 1) to 1 step -1 if $CodeArray[$i] = "" then _ArrayDelete($CodeArray,$i) Next ;************************************************************************************* ; Replace Items with 128 Code Patterns, and mount checksum ;************************************************************************************* _ArrayDelete($CodeArray,0) ;important If $CodeArray[0] = "[B]" Then $CodeArray[0] = "11010010000" $SUM = 104 $CodeType = "[B]" Else $CodeArray[0] = "11010011100" $SUM = 105 $CodeType = "[C]" EndIf for $i = 1 to (UBound($CodeArray) - 1) if $CodeArray[$i] = "[B]" Then $CodeArray[$i] = "10111101110" $SUM += $i * 100 $CodeType = "[B]" ContinueLoop EndIf if $CodeArray[$i] = "[C]" Then $CodeArray[$i] = "10111011110" $SUM += $i * 99 $CodeType = "[C]" ContinueLoop EndIf for $j = 1 to (UBound($array) - 1) $data = StringSplit($array[$j],"¬") Select case $CodeType = "[B]" if $CodeArray[$i] == $data[2] Then $CodeArray[$i] = $data[4] $SUM += $i * $data[1] EndIf case $CodeType = "[C]" if $CodeArray[$i] == $data[3] Then $CodeArray[$i] = $data[4] $SUM += $i * $data[1] EndIf EndSelect Next Next ;************************************************************************************* ; Calculate & find checksum item ;************************************************************************************* $ChecksumItem = Mod($SUM,103) $data = StringSplit($array[$ChecksumItem + 1],"¬") _ArrayAdd($CodeArray,$data[4]) ;************************************************************************************* ; Add stop item ;************************************************************************************* _ArrayAdd($CodeArray,"1100011101011") ;************************************************************************************* ; Flatten array ;************************************************************************************* $CodeArrayString = _ArrayToString($CodeArray,"") Return $CodeArrayString EndFunc func close() ;************************************************************************************* ; Bye bye ;************************************************************************************* Exit EndFunc Func PrintBarCode($bctext,$bcode);<-------------added by martin Local $hp, $mmssgg Local $barSpacing = 5;0.5 mm - i don't know what is normal Local $barHt = 200;20mm Local $xstart = 100, $ystart = 300;offsets to start of print $hp = _PrintDllStart($mmssgg);this must always be called first If $hp = 0 Then MsgBox(262144,"ERROR","Error from dllstart = " & $mmssgg & @CRLF) Return EndIf _PrintGetPrinter($hp);choose the printer if you don't want the default printer $newselect = _PrintSetPrinter($hp);see also _PrintSelectPrinter ;MsgBox(0, 'reseult from set printer = ', _PrintGetPrinter($hp));choose the printer if you don't want the default printer _PrintPageOrientation($hp, 1);portrait _PrintStartPrint($hp) _PrintSetLineWid($hp,$barSpacing) _PrintSetLineCol($hp, 0);set line col to black $i = 1 While $i <= StringLen($bcode) If StringMid($bcode, $i, 1) = '1' Then _PrintLine($hp, $xstart + $i * $barSpacing, $ystart, $xstart + $i * $barSpacing, $ystart + $barHt) EndIf $i += 1 WEnd ;quickest way I could think of to neaten up the ragged line ends _PrintSetLineCol($hp, 0xffffff);set line col to white _PrintLine($hp, $xstart , $ystart, $xstart + $i * $barSpacing, $ystart) _PrintLine($hp, $xstart , $ystart + $barHt, $xstart + $i * $barSpacing, $ystart + $barHt) _PrintSetFont($hp, 'Arial', 18, 0, 'bold') _PrintText($hp,$bctext,$xstart,$ystart + $barHt + _PrintGetTextHeight($hp,"{") + 5) _PrintEndPrint($hp) _PrintNewPage($hp);not really needed since only one page used _printDllClose($hp) EndFunc Edited June 17, 2008 by martin footswitch 1 Serial port communications UDF Includes functions for binary transmission and reception.printing UDF Useful for graphs, forms, labels, reports etc.Add User Call Tips to SciTE for functions in UDFs not included with AutoIt and for your own scripts.Functions with parameters in OnEvent mode and for Hot Keys One function replaces GuiSetOnEvent, GuiCtrlSetOnEvent and HotKeySet.UDF IsConnected2 for notification of status of connected state of many urls or IPs, without slowing the script. Link to comment Share on other sites More sharing options...
DjDeep00 Posted June 10, 2008 Share Posted June 10, 2008 @Martin...I tried to create a barcode for the number "123456" and it was created on the screen but when I tried to print it...all I saw was a black box with the number "123456" underneath it...What am I doing wrong here? Link to comment Share on other sites More sharing options...
martin Posted June 10, 2008 Share Posted June 10, 2008 (edited) @Martin...I tried to create a barcode for the number "123456" and it was created on the screen but when I tried to print it...all I saw was a black box with the number "123456" underneath it...What am I doing wrong here?When you say you see a black box do you mean on the screen or on the printout? I suppose you would get a black box if the width of the vertical lines was too great. Could that be the problem?Can you post any code or were you using the example I posted?EDIT. Error found in my post by GRS and now corrected. Edited June 17, 2008 by martin Serial port communications UDF Includes functions for binary transmission and reception.printing UDF Useful for graphs, forms, labels, reports etc.Add User Call Tips to SciTE for functions in UDFs not included with AutoIt and for your own scripts.Functions with parameters in OnEvent mode and for Hot Keys One function replaces GuiSetOnEvent, GuiCtrlSetOnEvent and HotKeySet.UDF IsConnected2 for notification of status of connected state of many urls or IPs, without slowing the script. Link to comment Share on other sites More sharing options...
ptrex Posted June 11, 2008 Share Posted June 11, 2008 @allMaybe have a look at my approach, which includes printing the barcode.Barcode Printing in AU3regards,ptrex Contributions :Firewall Log Analyzer for XP - Creating COM objects without a need of DLL's - UPnP support in AU3Crystal Reports Viewer - PDFCreator in AutoIT - Duplicate File FinderSQLite3 Database functionality - USB Monitoring - Reading Excel using SQLRun Au3 as a Windows Service - File Monitor - Embedded Flash PlayerDynamic Functions - Control Panel Applets - Digital Signing Code - Excel Grid In AutoIT - Constants for Special Folders in WindowsRead data from Any Windows Edit Control - SOAP and Web Services in AutoIT - Barcode Printing Using PS - AU3 on LightTD WebserverMS LogParser SQL Engine in AutoIT - ImageMagick Image Processing - Converter @ Dec - Hex - Bin -Email Address Encoder - MSI Editor - SNMP - MIB ProtocolFinancial Functions UDF - Set ACL Permissions - Syntax HighLighter for AU3ADOR.RecordSet approach - Real OCR - HTTP Disk - PDF Reader Personal Worldclock - MS Indexing Engine - Printing ControlsGuiListView - Navigation (break the 4000 Limit barrier) - Registration Free COM DLL Distribution - Update - WinRM SMART Analysis - COM Object Browser - Excel PivotTable Object - VLC Media Player - Windows LogOnOff Gui -Extract Data from Outlook to Word & Excel - Analyze Event ID 4226 - DotNet Compiler Wrapper - Powershell_COM - New Link to comment Share on other sites More sharing options...
GRS Posted June 17, 2008 Share Posted June 17, 2008 @Martin...I tried to create a barcode for the number "123456" and it was created on the screen but when I tried to print it...all I saw was a black box with the number "123456" underneath it...What am I doing wrong here?I reproduced the same results. I made a small change to the PrintBarCode function as follows and it works great now.CODEFunc PrintBarCode($bctext,$bcode);<-------------added by martin Local $hp, $mmssgg Local $barSpacing = 5;0.5 mm - i don't know what is normal Local $barHt = 200;20mm Local $xstart = 100, $ystart = 300;offsets to start of print $hp = _PrintDllStart($mmssgg);this must always be called first If $hp = 0 Then MsgBox(262144,"ERROR","Error from dllstart = " & $mmssgg & @CRLF) Return EndIf _PrintGetPrinter($hp);choose the printer if you don't want the default printer $newselect = _PrintSetPrinter($hp);see also _PrintSelectPrinter;MsgBox(0, 'reseult from set printer = ', _PrintGetPrinter($hp));choose the printer if you don't want the default printer _PrintPageOrientation($hp, 1);portrait _PrintStartPrint($hp) _PrintSetLineWid($hp,$barSpacing) _PrintSetLineCol($hp, 0);set line col to black $i = 1 While $i <= StringLen($bcode) If StringMid($bcode, $i, 1) = "1" Then _PrintLine($hp, $xstart + $i * $barSpacing, $ystart, $xstart + $i * $barSpacing, $ystart + $barHt) EndIf $i += 1 WEnd;quickest way I could think of to neaten up the ragged line ends _PrintSetLineCol($hp, 0xffffff);set line col to white _PrintLine($hp, $xstart , $ystart, $xstart + $i * $barSpacing, $ystart) _PrintLine($hp, $xstart , $ystart + $barHt, $xstart + $i * $barSpacing, $ystart + $barHt) _PrintSetFont($hp, 'Arial', 18, 0, 'bold') _PrintText($hp,$bctext,$xstart,$ystart + $barHt + _PrintGetTextHeight($hp,"{") + 5) _PrintEndPrint($hp) _PrintNewPage($hp);not really needed since only one page used _printDllClose($hp)EndFunc Link to comment Share on other sites More sharing options...
martin Posted June 17, 2008 Share Posted June 17, 2008 I reproduced the same results. I made a small change to the PrintBarCode function as follows and it works great now.Thanks GRS. I've corrected my post. Serial port communications UDF Includes functions for binary transmission and reception.printing UDF Useful for graphs, forms, labels, reports etc.Add User Call Tips to SciTE for functions in UDFs not included with AutoIt and for your own scripts.Functions with parameters in OnEvent mode and for Hot Keys One function replaces GuiSetOnEvent, GuiCtrlSetOnEvent and HotKeySet.UDF IsConnected2 for notification of status of connected state of many urls or IPs, without slowing the script. Link to comment Share on other sites More sharing options...
WeMartiansAreFriendly Posted June 18, 2008 Share Posted June 18, 2008 Hi, Very interesting script. Don't bother, It's inside your monitor!------GUISetOnEvent should behave more like HotKeySet() Link to comment Share on other sites More sharing options...
TehWhale Posted June 18, 2008 Share Posted June 18, 2008 It would be nicer if the barcode didn't get longer, by the number of characters you have. It would just change the space, and stuff. Link to comment Share on other sites More sharing options...
TheSaint Posted June 18, 2008 Share Posted June 18, 2008 (edited) @andybiochem - nice work What I would really like though, is to be able to scan the barcodes on my cd's dvd's books etc using a normal flatbed scanner, and have a program pick up their bar codes and then retrieve details from somewhere on the web ... so as I don't have to manually catalog everything. Now that would be really nice ... maybe we could start something like FreeDB or link to it for just the CD's. Edited June 18, 2008 by TheSaint Make sure brain is in gear before opening mouth! Remember, what is not said, can be just as important as what is said. Spoiler What is the Secret Key? Life is like a Donut If I put effort into communication, I expect you to read properly & fully, or just not comment. Ignoring those who try to divert conversation with irrelevancies. If I'm intent on insulting you or being rude, I will be obvious, not ambiguous about it. I'm only big and bad, to those who have an over-active imagination. I may have the Artistic Liesense to disagree with you. TheSaint's Toolbox (be advised many downloads are not working due to ISP screwup with my storage) Link to comment Share on other sites More sharing options...
andybiochem Posted June 23, 2008 Author Share Posted June 23, 2008 (edited) It would be nicer if the barcode didn't get longer, by the number of characters you have. It would just change the space, and stuff. Unfortunately that's how Code 128 works, the more characters you want to have in the barcode, the longer it gets - and it's the same for all barcodes as far as I know. However, the whole idea behind Code 128 is that it optimises numbers into pairs if they exist, so that the length of the barcode gets shorter. example say we wanted to encode "hello123456789", the barcode could be split up as follow: [h][e][l][l][o][1][2][3][4][5][6][7][8][9] ...that's 14 items that need encoding into the barcode. But by splitting into number pairs, you get: [h][e][l][l][o][12][34][56][78][9] ...that is now only 10 items that need encoding, making the resulting barcode shorter - well, it's actually 12 because you have to 'wrap' the number pairs in identifiers: [h][e][l][l][o][sTART C][12][34][56][78][END C][9] The trick now is to write an algorithm that can make the best optimal use of number pairs - including the presence of identifiers (it's not always optimal to split numbers up into pairs). I know for sure that my script doesn't always produce the shortest barcode for a given string, but it does an ok job. @martin & GRS: Thanks for the print functions, I was going to have a stab at this, but I'll see how yours (martin) works first. Ta! What I would really like though, is to be able to scan the barcodes on my cd's dvd's books etc using a normal flatbed scanner, and have a program pick up their bar codes and then retrieve details from somewhere on the web ... so as I don't have to manually catalog everything. Now that would be really nice ... maybe we could start something like FreeDB or link to it for just the CD's. why didn't I think of this!!!! GREAT idea, I'm sure I could write a script/UDF that could reverse the 1/0 code back to the original string, it'd just be a case of searching the array for the correct 1000110101-style item.....or would it?...hmmm - I'll have a play. Not sure about getting info of the internets though, the barcodes on CDs/DVDs whatever don't actually contain any information about the item itself, so there'd have to be a reliable source of this info. Tried a few barcodes in google but only some of them worked: http://www.google.co.uk/search?hl=en&q...earch&meta= http://www.google.co.uk/search?hl=en&q...earch&meta= EDIT: Just found this website: http://www.upcdatabase.com/ http://www.upcdatabase.com/item/5000157004017 http://www.upcdatabase.com/item/6003770000748 ...but that doesn't have everything either. tut Thanks for all the feedback! Edited June 23, 2008 by andybiochem - Table UDF - create simple data tables - Line Graph UDF GDI+ - quickly create simple line graphs with x and y axes (uses GDI+ with double buffer) - Line Graph UDF - quickly create simple line graphs with x and y axes (uses AI native graphic control) - Barcode Generator Code 128 B C - Create the 1/0 code for barcodes. - WebCam as BarCode Reader - use your webcam to read barcodes - Stereograms!!! - make your own stereograms in AutoIT - Ziggurat Gaussian Distribution RNG - generate random numbers based on normal/gaussian distribution - Box-Muller Gaussian Distribution RNG - generate random numbers based on normal/gaussian distribution - Elastic Radio Buttons - faux-gravity effects in AutoIT (from javascript)- Morse Code Generator - Generate morse code by tapping your spacebar! Link to comment Share on other sites More sharing options...
dirty Posted November 13, 2011 Share Posted November 13, 2011 (edited) Is there a way to keep generated barcode certain size in width ? For example i only have 100X400 pixels display area for the barcode with name label and number label at the top and button of it as well as print it somehow ? Edited November 13, 2011 by dirty Link to comment Share on other sites More sharing options...
llewxam Posted November 13, 2011 Share Posted November 13, 2011 Is there a way to keep generated barcode certain size in width ? For example i only have 100X400 pixels display area for the barcode with name label and number label at the top and button of it as well as print it somehow ? Hopefully this will give you some guidance, I pulled it out of an app I wrote for my company so really can't share the whole thing but it is the relevant part for you. What I do is make a GUI of the right dimensions, for you 400, 100, and then make labels for the text and use Melba23's StringSize UDF to make sure I get the maximum size of text for product names etc. For the UPC itself, here is the code I wrote: expandcollapse popup#include <WindowsConstants.au3> #include <StaticConstants.au3> #include <GUIConstantsEx.au3> Local $FullUPCArray[12][8] $BC = GUICreate("Bar Code Image", 260, 100, 1, 1, $WS_EX_TOPMOST) GUISetBkColor(0xffffff, $BC) $BCBox = GUICtrlCreateGraphic(10, 35, 195, 33) GUICtrlSetGraphic($BCBox, $GUI_GR_PENSIZE, 2) GUICtrlSetGraphic($BCBox, $GUI_GR_COLOR, 0) _BarCode("050428156483") GUISetState(@SW_SHOW, $BC) sleep(1000) Func _BarCode($UPCNumber) $UPCBreak = StringSplit($UPCNumber, "") For $z = 0 To 11 $FullUPCArray[$z][0] = number($UPCBreak[$z + 1]) Next $hor = 20 $horInc = 2 ;~ start GUICtrlSetGraphic($BCBox, $GUI_GR_MOVE, $hor, 2) GUICtrlSetGraphic($BCBox, $GUI_GR_LINE, $hor, 29) $hor += $horInc * 2 GUICtrlSetGraphic($BCBox, $GUI_GR_MOVE, $hor, 2) GUICtrlSetGraphic($BCBox, $GUI_GR_LINE, $hor, 29) ;~ end start For $z = 0 To 11 If $FullUPCArray[$z][0] == 0 Then _Zero($z) If $FullUPCArray[$z][0] == 1 Then _One($z) If $FullUPCArray[$z][0] == 2 Then _Two($z) If $FullUPCArray[$z][0] == 3 Then _Three($z) If $FullUPCArray[$z][0] == 4 Then _Four($z) If $FullUPCArray[$z][0] == 5 Then _Five($z) If $FullUPCArray[$z][0] == 6 Then _Six($z) If $FullUPCArray[$z][0] == 7 Then _Seven($z) If $FullUPCArray[$z][0] == 8 Then _Eight($z) If $FullUPCArray[$z][0] == 9 Then _Nine($z) If $z <= 5 Then $MagicColor = 1 $PermHor = 22 + (3 * $horInc) + ($z * (7 * $horInc)) ; start + first guard + digit position Else $MagicColor = 0 $PermHor = 22 + (3 * $horInc) + ($z * (7 * $horInc)) + (5 * $horInc) ; start + first guard + digit position + middle guard EndIf For $y = 1 To 7 If $FullUPCArray[$z][$y] == $MagicColor Then $hor = $PermHor + ($y * $horInc) GUICtrlSetGraphic($BCBox, $GUI_GR_MOVE, $hor, 2) GUICtrlSetGraphic($BCBox, $GUI_GR_LINE, $hor, 15) EndIf Next ;~ middle If $z == 5 Then $hor += $horInc * 2 GUICtrlSetGraphic($BCBox, $GUI_GR_MOVE, $hor, 2) GUICtrlSetGraphic($BCBox, $GUI_GR_LINE, $hor, 29) $hor += $horInc * 2 GUICtrlSetGraphic($BCBox, $GUI_GR_MOVE, $hor, 2) GUICtrlSetGraphic($BCBox, $GUI_GR_LINE, $hor, 29) EndIf ;~ end middle Next ;~ finish GUICtrlSetGraphic($BCBox, $GUI_GR_MOVE, 208, 2) GUICtrlSetGraphic($BCBox, $GUI_GR_LINE, 208, 29) $hor += $horInc * 2 GUICtrlSetGraphic($BCBox, $GUI_GR_MOVE, 212, 2) GUICtrlSetGraphic($BCBox, $GUI_GR_LINE, 212, 29) ;~ end finish EndFunc ;==>_BarCode Func _Zero($z) $FullUPCArray[$z][1] = 0 $FullUPCArray[$z][2] = 0 $FullUPCArray[$z][3] = 0 $FullUPCArray[$z][4] = 1 $FullUPCArray[$z][5] = 1 $FullUPCArray[$z][6] = 0 $FullUPCArray[$z][7] = 1 EndFunc ;==>_Zero Func _One($z) $FullUPCArray[$z][1] = 0 $FullUPCArray[$z][2] = 0 $FullUPCArray[$z][3] = 1 $FullUPCArray[$z][4] = 1 $FullUPCArray[$z][5] = 0 $FullUPCArray[$z][6] = 0 $FullUPCArray[$z][7] = 1 EndFunc ;==>_One Func _Two($z) $FullUPCArray[$z][1] = 0 $FullUPCArray[$z][2] = 0 $FullUPCArray[$z][3] = 1 $FullUPCArray[$z][4] = 0 $FullUPCArray[$z][5] = 0 $FullUPCArray[$z][6] = 1 $FullUPCArray[$z][7] = 1 EndFunc ;==>_Two Func _Three($z) $FullUPCArray[$z][1] = 0 $FullUPCArray[$z][2] = 1 $FullUPCArray[$z][3] = 1 $FullUPCArray[$z][4] = 1 $FullUPCArray[$z][5] = 1 $FullUPCArray[$z][6] = 0 $FullUPCArray[$z][7] = 1 EndFunc ;==>_Three Func _Four($z) $FullUPCArray[$z][1] = 0 $FullUPCArray[$z][2] = 1 $FullUPCArray[$z][3] = 0 $FullUPCArray[$z][4] = 0 $FullUPCArray[$z][5] = 0 $FullUPCArray[$z][6] = 1 $FullUPCArray[$z][7] = 1 EndFunc ;==>_Four Func _Five($z) $FullUPCArray[$z][1] = 0 $FullUPCArray[$z][2] = 1 $FullUPCArray[$z][3] = 1 $FullUPCArray[$z][4] = 0 $FullUPCArray[$z][5] = 0 $FullUPCArray[$z][6] = 0 $FullUPCArray[$z][7] = 1 EndFunc ;==>_Five Func _Six($z) $FullUPCArray[$z][1] = 0 $FullUPCArray[$z][2] = 1 $FullUPCArray[$z][3] = 0 $FullUPCArray[$z][4] = 1 $FullUPCArray[$z][5] = 1 $FullUPCArray[$z][6] = 1 $FullUPCArray[$z][7] = 1 EndFunc ;==>_Six Func _Seven($z) $FullUPCArray[$z][1] = 0 $FullUPCArray[$z][2] = 1 $FullUPCArray[$z][3] = 1 $FullUPCArray[$z][4] = 1 $FullUPCArray[$z][5] = 0 $FullUPCArray[$z][6] = 1 $FullUPCArray[$z][7] = 1 EndFunc ;==>_Seven Func _Eight($z) $FullUPCArray[$z][1] = 0 $FullUPCArray[$z][2] = 1 $FullUPCArray[$z][3] = 1 $FullUPCArray[$z][4] = 0 $FullUPCArray[$z][5] = 1 $FullUPCArray[$z][6] = 1 $FullUPCArray[$z][7] = 1 EndFunc ;==>_Eight Func _Nine($z) $FullUPCArray[$z][1] = 0 $FullUPCArray[$z][2] = 0 $FullUPCArray[$z][3] = 0 $FullUPCArray[$z][4] = 1 $FullUPCArray[$z][5] = 0 $FullUPCArray[$z][6] = 1 $FullUPCArray[$z][7] = 1 EndFunc ;==>_Nine During the Sleep (which actually isn't required for XP at all, and only a slight Sleep needed for Vista+) I use ScreenCapture and make a JPG out of it, which of course can be printed any number of ways. I personally use a GUI dimension of 260,155 and name each JPG according to the UPC, then copy the images in to the Clipboard and paste them in to a Word template for 3*10 label sheets. Look a lot of work to accomplish off that, so this is only a starter for you! Ian My projects: IP Scanner - Multi-threaded ping tool to scan your available networks for used and available IP addresses, shows ping times, resolves IPs in to host names, and allows individual IPs to be pinged. INFSniff - Great technicians tool - a tool which scans DriverPacks archives for INF files and parses out the HWIDs to a database file, and rapidly scans the local machine's HWIDs, searches the database for matches, and installs them. PPK3 (Persistent Process Killer V3) - Another for the techs - suppress running processes that you need to keep away, helpful when fighting spyware/viruses. Sync Tool - Folder sync tool with lots of real time information and several checking methods. USMT Front End - Front End for Microsoft's User State Migration Tool, including all files needed for USMT 3.01 and 4.01, 32 bit and 64 bit versions. Audit Tool - Computer audit tool to gather vital hardware, Windows, and Office information for IT managers and field techs. Capabilities include creating a customized site agent. CSV Viewer - Displays CSV files with automatic column sizing and font selection. Lines can also be copied to the clipboard for data extraction. MyDirStat - Lists number and size of files on a drive or specified path, allows for deletion within the app. 2048 Game - My version of 2048, fun tile game. Juice Lab - Ecigarette liquid making calculator. Data Protector - Secure notes to save sensitive information. VHD Footer - Add a footer to a forensic hard drive image to allow it to be mounted or used as a virtual machine hard drive. Find in File - Searches files containing a specified phrase. Link to comment Share on other sites More sharing options...
dirty Posted November 13, 2011 Share Posted November 13, 2011 i was thinking of the exact approach. taking a screenshot of an area of a window containing all needed objects to go on a label and then pasting it to an image and then printing the image. Looks like you took it a step further to send it to WORD template, good job !. With all that in mind i got stuck at 1st step. I dont know how to take screenshot with autoit of a defined area/window/control etc. Can you give me a start up on that ? Link to comment Share on other sites More sharing options...
llewxam Posted November 14, 2011 Share Posted November 14, 2011 You need #include <ScreenCapture.au3> in the script. Right after you populate the GUI with all other info you need, throw this in: If $winVer <> "Win_XP" Then Sleep(1000) _ScreenCapture_CaptureWnd(@TempDir & "" & $UPC & ".jpg", $BC, 11, 56, 253, 149, False) GUIDelete($BC) In my example above, I name the file after the UPC, I find that convenient because before I even bother creating a new image, I do an If FileExists on @TempDir & "" & $UPC & ".jpg and if I already have it, so much the better. If I am using 3 different product labels on a sheet, why create each thing multiple times? Ian My projects: IP Scanner - Multi-threaded ping tool to scan your available networks for used and available IP addresses, shows ping times, resolves IPs in to host names, and allows individual IPs to be pinged. INFSniff - Great technicians tool - a tool which scans DriverPacks archives for INF files and parses out the HWIDs to a database file, and rapidly scans the local machine's HWIDs, searches the database for matches, and installs them. PPK3 (Persistent Process Killer V3) - Another for the techs - suppress running processes that you need to keep away, helpful when fighting spyware/viruses. Sync Tool - Folder sync tool with lots of real time information and several checking methods. USMT Front End - Front End for Microsoft's User State Migration Tool, including all files needed for USMT 3.01 and 4.01, 32 bit and 64 bit versions. Audit Tool - Computer audit tool to gather vital hardware, Windows, and Office information for IT managers and field techs. Capabilities include creating a customized site agent. CSV Viewer - Displays CSV files with automatic column sizing and font selection. Lines can also be copied to the clipboard for data extraction. MyDirStat - Lists number and size of files on a drive or specified path, allows for deletion within the app. 2048 Game - My version of 2048, fun tile game. Juice Lab - Ecigarette liquid making calculator. Data Protector - Secure notes to save sensitive information. VHD Footer - Add a footer to a forensic hard drive image to allow it to be mounted or used as a virtual machine hard drive. Find in File - Searches files containing a specified phrase. Link to comment Share on other sites More sharing options...
dirty Posted November 14, 2011 Share Posted November 14, 2011 what do u mean by upc and bc ? am not sure what those 2 stand for. Sorry am not that much into this thing, i had to think few seconds to figure out what you mean by $winVer Link to comment Share on other sites More sharing options...
llewxam Posted November 14, 2011 Share Posted November 14, 2011 what do u mean by upc and bc ?am not sure what those 2 stand for.Sorry am not that much into this thing, i had to think few seconds to figure out what you mean by $winVerMaybe check the help file on _ScreenCapture_CaptureWnd. The first part is just the file name you want the capture to be called, the second part is what it is capturing and $BC is the name of the GUI I created.Ian My projects: IP Scanner - Multi-threaded ping tool to scan your available networks for used and available IP addresses, shows ping times, resolves IPs in to host names, and allows individual IPs to be pinged. INFSniff - Great technicians tool - a tool which scans DriverPacks archives for INF files and parses out the HWIDs to a database file, and rapidly scans the local machine's HWIDs, searches the database for matches, and installs them. PPK3 (Persistent Process Killer V3) - Another for the techs - suppress running processes that you need to keep away, helpful when fighting spyware/viruses. Sync Tool - Folder sync tool with lots of real time information and several checking methods. USMT Front End - Front End for Microsoft's User State Migration Tool, including all files needed for USMT 3.01 and 4.01, 32 bit and 64 bit versions. Audit Tool - Computer audit tool to gather vital hardware, Windows, and Office information for IT managers and field techs. Capabilities include creating a customized site agent. CSV Viewer - Displays CSV files with automatic column sizing and font selection. Lines can also be copied to the clipboard for data extraction. MyDirStat - Lists number and size of files on a drive or specified path, allows for deletion within the app. 2048 Game - My version of 2048, fun tile game. Juice Lab - Ecigarette liquid making calculator. Data Protector - Secure notes to save sensitive information. VHD Footer - Add a footer to a forensic hard drive image to allow it to be mounted or used as a virtual machine hard drive. Find in File - Searches files containing a specified phrase. 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