Jump to content

TheDcoder

Active Members
  • Posts

    7,103
  • Joined

  • Days Won

    88

Everything posted by TheDcoder

  1. Really? I guess it is because they need to support the legacy Motif GUI framework as well, which may lack this control... that, or they simply didn't get to it yet because there wasn't enough demand.
  2. @seadoggie01 I missed my bi-weekly updated... isn't that surprising? Seriously though, I did remember it but I didn't have any working or complete code, so I couldn't share it. In other words, it is still a work in progress. There has been progress since the last post: I have started work on the statement parser, I am currently working on parsing declarations, as well as making other required tweaks in the tokenizer. Oh, and I also implemented a rudimentary error handling method using longjmp, because it gets complex in C. There is a lot of new code that I wish I could share, but it is all a mess so I can't do it in a meaningful way. -- And I am doing all that while dealing with some issues on my professional end, no doubt many would be in the same situation thanks to the deadly cough going around. I am resuming work on ECI now, after taking a break for 2 day, so hopefully I will have a more proper update out soon next week
  3. I am going to answer this question because the primary objective is not related to game automation at all, there are many legitimate applications which can be automated in a Windows server. This was my go-to approach, sad to know that it no longer doesn't work, perhaps you can try an older version of the server if that is a possibility? The problem happens because there is no display attached to the machine after the RDP client disconnects, RoR solved this issue by simulation a display connection from the same machine itself. I looked for other virtual display solutions, perhaps a driver which could simulate a virtual screen, but I couldn't find any. Here is a stackoverflow thread I started for reference: https://stackoverflow.com/questions/43841450/uiautomation-wont-work-in-windows-server-vps-if-i-am-not-connected-via-rdp
  4. Use an array to store the currently generated numbers and check against it to make sure there are no duplicates.
  5. Have you taken the character encoding into consideration? AutoIt uses UTF-16 LE, WinAPI's default unicode encoding, from the looks of your code you are using plain chars... try using wchar and see if it makes a difference.
  6. IUP is the best cross-platform GUI toolkit which offers native look-and-feel because it uses native API! Best of all, it is written in pure C They have a tutorial section which can help you get started, once you get used to IUP's functions, making a listview with dynamic insertion at runtime should be easy peasy P.S The title of this thread is very generic and not useful, maybe you can change it to something like "C alternative to GTK+ GUI toolkit"
  7. The python interpreter is converter the binary content of Picture.jpg into a string literal and then printing it. Refer to the python docs for string literals (or strings) and their escape sequences
  8. And I'd like to mention that it is probably because AutoIt has a lot of overhead in string processing and the interpreter itself is a bit slow. Compare that to an optimized RegEx engine written in C(++) and it is clear why it is faster, despite being logically a more complex operation Speed isn't everything, and AutoIt isn't that fast really, so unless you are processing many strings in bulk, it is okay to use whatever you prefer, it won't make a significant difference in operation.
  9. BONUS UPDATE! A minor bonus update for you guys, I have implemented parsing of keywords while working on the statement parser: -- I have also created a chatroom on [matrix], so if anyone is interested they can easily join using the web client: https://app.element.io/#/room/#EasyCodeIt:matrix.org The chatroom is fully public and all chat is visible to everyone (including unregistered guests!), so you can have a peek 👀 before joining. I am the only participant at the moment but I will respond to everyone who wants to chat... because I love to talk, perhaps too much
  10. @jpm I see. Thanks for your suggestion regardless. I am pretty positive that the extension does not support interactive debugging, but I will try out VS Code myself just to be 100% sure
  11. Hi @jpm, Thanks for the suggestion, I assume you are suggesting I use the same technique for the debugger that is used in the AutoIt extension for VS Code? I had a look at it and the feature list doesn't mention debugging functionality, and I did a basic search of the code to see if it has support but I couldn't find anything. Are you sure that the extension supports interactive debugging of AutoIt code?
  12. The owner of the package is "Dzmitry.Lahoda" and I am pretty sure that he is not part of the AutoIt team, so it is not an official package nor is it maintained by someone from the AutoIt team. So you would have to ask him for the reason about why it was delisted. In any case, it is always better to get your binaries from official sources
  13. I am back with another bi-weekly (almost ) update, as usual I have been busy with life so progress is slow, but I have jumped another small yet-somewhat-significant hurdle, I have mostly figured out the basic skeleton of the syntax, to achieve this I had to spend 100% of my brain power for a couple of minutes almost every day for a two weeks Here is a sneak peak of the code: enum Operation { /* Addition, Substraction, Multiplcation, Division, Exponentiation */ OP_ADD, OP_SUB, OP_MUL, OP_DIV, OP_EXP, /* Concatenation */ OP_CAT, /* Equal to, Strictly equal to, Less than, Less than or equal to, Greater than, Greater than or equal to */ OP_EQU, OP_SEQU, OP_LT, OP_LTE, OP_GT, OP_GTE, /* Conditional */ OP_CON, }; struct Token { enum TokenType type; char *data; size_t data_len; void *info; }; struct TokenList { size_t length; struct TokenListNode *head; struct TokenListNode *tail; bool dirty; }; struct TokenListNode { struct Token *token; struct TokenListNode *prev; struct TokenListNode *next; }; struct Primitive { enum { PRI_NUMBER, PRI_STRING, PRI_BOOLEAN, // ... } type; union { //int number; //char *string; //bool boolean; }; }; struct Operand { enum { OPR_PRIMITIVE, //OPR_VARIABLE, //OPR_MACRO, } type; union { struct Primitive *value; //struct Variable *variable; //struct Macro *macro; }; }; struct Expression { enum Operation op; struct Operand operands[]; }; struct Declaration { enum {SCO_LOCAL, SCO_GLOBAL} scope; // ...Const, Static char *name; bool is_function; union { // Variable or constant struct Expression *initializer; // Function struct { struct Statement *block; size_t size; } code; }; }; struct Statement { enum StatementType { SMT_DECLARATION, SMT_EXPRESSION, } type; union { struct Declaration *declaration; struct Expression *expression; }; }; struct Unit { enum UnitType { UNT_COMMENT, UNT_DIRECTIVE, UNT_STATEMENT, } type; union { struct Token *token; struct Statement *statement; }; }; The above code is basically the struct declarations that I extracted from my WIP code, these structures reference each other to form a single "code unit" which roughly corresponds to a single line of code in the AutoIt syntax. I have tried to arrange the declarations in the ascending order, where the top-most structure roughly represents the most basic element of the syntax (the token in this case) which is contained in a more informative and complex structure, all the way to the bottom where the "Unit" structure has a fully formed meaning. This should be enough for me to start writing code to construct the syntax tree, but there are some other things that I would like to work on first. Right now I am looking into incorporating debug data into the final binary, so that we can have a nice debugger to debug our scripts . It is not necessary that I look into this right now, but it will come in handy if I study and understand the basic concepts of how the debugger maps the final instructions to strings in the source code, so that I can make modifications to the syntax tree's design right now, as opposed to in the future to prevent inconvenience of re-writing of related code. Basically leaving gaps in the tree which I can fill later when actually implementing the debugging functionality. A good example to study in my opinion is the format used by C debuggers (gdb and co.), and I found out that the format is called DWARF (Name FAQ), I tried to read their technical specification but it is too thick for me right now... but luckily I found an article called "Introduction to the DWARF debugging format" written by the Chairman of the standardization committee, lucky me . So I am reading that right now. Hopefully I will have another update for you in 2 weeks, see you until then!
  14. @JockoDundee Thanks for pointing out the documentation about 250 ms, in that case, it does appear indeed that AutoIt may be caching the process lists as a form of optimization. So anything is possible
  15. @JockoDundee "Proper" changes with the end goal, in my example the end goal was to close all instance of a processes which were active at that specific point in time. So yes, you are right that it doesn't ensure that there is no notepad.exe process running, for that you'd need to use your method... or use mine in a loop Not the same thing really, I don't know the internals of ProcessClose but I am pretty sure it is not related to the list of processes, perhaps windows doesn't like terminating a process which is already terminating, so it may return an error in that case. @TheSaint It was deliberate, I wasn't specifically targeting notepad.exe, just saying things generally.
  16. Good explanation by @Jos, this is a classic race-condition problem. A proper solution would be to get a list of all processes and then using ProcessClose on each one of them, but using ProcessExists in a loop also does the trick, albeit in a less CPU efficient manner
  17. I agree with @water, I don't really see why this UDF is limited to GDPR, it looks like a good general-purpose encryption UDF... maybe @mLipok can turn it into such a thing if he agrees with our view. Renaming everything at this point could be tedious, so maybe we can just stick to the "GDPR" acronym while changing the expansion to "General Data Protection Resource"
  18. @water That makes sense, thanks for clearing up the doubts @mLipok Indeed, they can be thought of as guidelines... strict ones at that I think I have done enough to derail the topic, so I will stop .
  19. @water Thanks for clearing up the muddy legal waters (sic), does this mean GDPR only applies to a company/entity which stores and/or processes customer data and not to software which processes the user's data on their behalf on their local computer? Very interesting, this is good because it prevents companies implementing easy-to-use but basically useless encryption. By the way, do you think mLipok's UDF meets the "state of the art" requirement? @mLipok I understand your opinion, but GDPR also allows users to ask companies for their data, so this is more than just a guideline even if we disregard what water said... Correct me if I am wrong
  20. Are these actual legal requirements of GDPR or are these just guidelines? Yes, but this is not related to the software... this is an action performed by the user.
  21. @mLipok Ah yes, I was asking about that. Is software like Excel breaking GDPR laws by not encrypting local file content?
  22. @mLipok Sorry, I don't understand, did you modify my quote? I don't remember saying that. Maybe I am missing something
  23. @mLipok Not sure if I understood what you are trying to say... personal data protect is good, but I was not discussing it, I was only discussing the legal requirements for GDPR I did wonder, but I am too lazy to use full system encryption on my devices 😪
  24. Due to several reasons, AU3Text was just not working out for me... so instead, I decided to create my own version: It uses a forked version of EasyCodeIt to extract the translation strings and internally uses Scripting.Dictionary to keep track of the strings.
  25. Version 0.1

    362 downloads

    Forked version of EasyCodeIt to extract translatable strings for the _Translate UDF, compiled and ready to use
×
×
  • Create New...