C# Vraagje

Vragen die je boven niet kwijt kunt, kan je hier stellen.

Moderator: Moderators

Plaats reactie
Gebruikersavatar
hugo stoutjesdijk
Donateur
Berichten: 11995
Lid geworden op: 02 mar 2011 17:04
Locatie: elst (u)
Contacteer:

Re: C# Vraagje

Bericht door hugo stoutjesdijk »

hfjbuis schreef: 27 feb 2023 15:02
Arie Kabaalstra schreef: 27 feb 2023 14:15 E++ test applicatie
G++ zul je bedoelen :mrgreen:
Nee, die had ie al. (ik meen binnen Eding,met een macrodlgmsg of zoiets ?)
Ik ben voor meer techniek op school, maar dan wel vanaf groep 1 basischool.
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13373
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

Re: C# Vraagje

Bericht door Arie Kabaalstra »

dat was Visual G++, dat is mijn in 2008/2009 gebouwde Visual Basic Freesprogrammeerapplicatie, toen gemaakt omdat er nog geen DlgMsg was, en ook geen LogMsg..die ik vanaf 2014 (jee.. ook al weer 9 jaar gelee), toepaste op de draaibank..

Het grote probleem waar ik mee zat.. is hoe programmeer je snel en makkelijk een "Gewoon G-code regeltje" zoals G00 X20 Y30 ..
of een G01/02/03, met alle opties die je daarbij hebt.. ja.. het KAN met een dialoog, door te kijken welke waarden veranderd zijn, en die dan weg te laten.. tenzij het bij cirkelbogen om de Radius gaat.., en dan een Controle dat R != 0, als I, J of K ontbreken..
dan krijg je een resem mogelijkheden.. eh.. laat ik het zo stellen..'k heet geen Alan Turing...
een gewone Text-Editor is dan wel zo makkelijk.. op elke andere besturing moet je tenslotte ook weten hoe je een rechte lijn of een cirkelboog schrijft.., want als je dat niet snapt, dan moet je met je fikken van zo'n ding afblijven..

Qua namen van Talen.. de F valt ook al weer af.. Ik heb het idee dat de makers van Programmeertalen ook gewoon het rijtje afgaan, alleen.. hebben ze de E overgeslagen.. Ik zou de taal natuurlijk ook kunnen vernoemen naar een Kunstenaar die in Leeuwarden geboren is, en die bekend stond om 3 Dimensionale grappen in zijn 2D tekeningen...Maurits Cornelis Escher.. maar ach.. :mrgreen:

er is overigens best een lange lijst
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13373
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

Re: C# Vraagje

Bericht door Arie Kabaalstra »

Afbeelding

Humor.. zo object georienteerd is het nou ook weer niet, maar voor EdingCNC is dit wel geldige code
Ik heb de Indentatie ook goed.. en ik heb ook bedacht hoe ik mijn geselecteerde tekst moet deselecteren..ik sla de huidige positie gewoon op, en nadat ik alles geselecteerd heb, en een AutoIndent heb aangeroepen, Plemp ik mijn cursor neer op de oude locatie..daar kan wel een paar regels verschil inzitten als je de boel opschudt, maar dat mag geen naam hebben..

Code: Selecteer alles

 Hello = fastColoredTextBox1.SelectionStart;
            fastColoredTextBox1.SelectAll();
            fastColoredTextBox1.DoAutoIndent();
            fastColoredTextBox1.SelectionStart = Hello;
            fastColoredTextBox1.Focus();
Dat doet de truuk alleraardigst..
Ik ben ook een poosje aan het stoeien geweest met de Indentatie van de Cycles, kwestie van een indexje verkeerd..en hij vind NIETS meer..Opgelost.. Arie is Tevree..
Morgen maar eens een beginnetje maken aan een "verse" versie, met een Balk met 12 Functietoetsen, de Save en Load, alsmede de Indent moeten daar ook een plekkie in vinden..
de Lol is..ik zou ook allerhande knoppen kunnen maken voor de Cycli.. maar waarom zou ik?.. de Cycli zitten immers al bij mij in EdingCNC, dus, en ook want.. dat is de hele truuk van deze applicatie... je progt een Cyclus middels een DlgMsg in EdingCNC, en middels F1, kledder je em op een gewenste plek in E++, en zodra je hetzelfde programma geladen hebt in EdingCNC, zodra je daar even spiekt, en E++ dus de Focus verliest, slaat ie em meteen op..
Mogelijk moet ik dat even "naar keuze" maken.. immers.. als je een Complexer programma aan het maken bent dan alleen maar een Batch Cycli.. dan kan het handig zijn om niet meteen elke wijziging in Eding te laden.. want dat kan vervelende foutmeldingen tot gevolg hebben.. niet dat het ernstig is, want zolang je niet op start hebt geheid, en naar je koffie hebt gegrepen.. is er nog geen man overboord..,maar het is dan wel weer lastig.. omdat ie zonder M2 in zijn programma blijft hangen.. en je geen dialogen bovenwater krijgt..
een SUB zonder ENDSUB is ook zo'n doodzonde...
hoe het ook zei.. 't is leuk geweest voor vandaag.. ik ga naar mijn kussen luisteren..
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13373
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

Re: C# Vraagje

Bericht door Arie Kabaalstra »

Ik loop weer tegen een uitdaging aan...

ik wil de focus softwarematig naar EdingCNC verplaatsen, ofwel EdingCNC naar de voorgrond halen..

een zoektocht op het web heeft me nog niet geleverd wat ik zocht...Of ik krijg halve code , of ik krijg complete bibliotheken waar ik niets mee kan..

Wat de bedoeling is: Vooralsnog:.. Druk op een Knop, of keyDown F12.. en dan moet ie de focus geven aan EdingCNC, of em activeren..(da's beter)
Dan kan ik gewoon met het toetsenbord, of met een Mepscherm, zonder de Taakbalk te gebruiken of Alt/Tab, in één keer naar EdingCNC.. *mogelijk ook nog wat toetsaanslagen erheen jagen om het dialoogmenu te openen, maar da's van later zorg.. *dan kan ik net zo goed een flyout maken met een Textfile erachter die de functies van de knoppen daarin gooien... moet te doen zijn..

Momenteel ook al bezig met de Puntjes op de kleine j.. want Ik wil eigenlijk bij de eerste start van het programma de boel instelllen, door de gebruiker te laten wijzen naar het Cyclusbestand (dan hoeft dat niet persé Teach_in.NC te heten), pad en bestandsnaam worden dan opgeslagen in een "ini" bestandje, en ook wordt er meteen een History file aangemaakt, waar het pad naar het laatstgeopende bestand in staat.. zodat ie daarmee de eerstvolgende keer weer opent..

Maar... het even met de knop omschakelen naar EdingCNC, da's het belangrijkste momenteel
hfjbuis
Donateur
Berichten: 3057
Lid geworden op: 13 feb 2017 00:26
Locatie: Hoensbroek

Re: C# Vraagje

Bericht door hfjbuis »

Je moet het window zoeken met de naam van eding en vervolgens dit window activeren.
het hele verhaal:
https://forums.codeguru.com/showthread. ... nal-Window
Een stukje uit de code die het window zoekt en activeert:

Code: Selecteer alles

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices; //required for APIs
namespace Find
{

    public partial class Form1 : Form
    {
        //Import the FindWindow API to find our window
        [DllImportAttribute("User32.dll")]
        private static extern int FindWindow(String ClassName, String WindowName);

        //Import the SetForeground API to activate it
        [DllImportAttribute("User32.dll")]
        private static extern IntPtr SetForegroundWindow(int hWnd);

        
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //Find the window, using the CORRECT Window Title, for example, Notepad
            int hWnd = FindWindow(null, "Untitled - Notepad");
            if (hWnd > 0) //If found
            {
                SetForegroundWindow(hWnd); //Activate it
            }
            else
            {
                MessageBox.Show("Window Not Found!");
            }
      

        }
    }
}
There are only 2 limits, the sky and your imagination
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13373
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

Re: C# Vraagje

Bericht door Arie Kabaalstra »

Daar zie ik toch een "obstakel", wat is die naam?.. want als ik het Letterlijk overtype, vindt ie em niet..
kan ik niet in de map loeren, en de naam van de applicatie gebruiken om te activeren?.. dat ik bij wijze van spreken een Folderbrowserdialog gebruik om naar de map van cnc.exe te wijzen?.. meer niet?..
dus eerder met Process Id?..
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13373
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

Re: C# Vraagje

Bericht door Arie Kabaalstra »

ik heb heel de avond zitten tobben.. maar niets kunnen vinden wat er een lijstje met namen uitgooit van wat er loopt.. of zelfs alleen maar 1 naam van een lopend process.. kortom.. het net staat vol met rotzooi, halve snippers code die of niet werken, of waarvan niet bekend is wat er mist, maar volgens degene die het op het net heeft gegooid werkt het gewoon..Kortom, om je de haren uit je reet te sleuren...

het zou zo simpel moeten zijn, maar dat is het blijkbaar niet.. net als indertijd toen ik mijn eerste applicatie aan het bouwen was, en niet meteen een snippet kon vinden om de inhoud van een listbox naar een TextFile te jagen...
hfjbuis
Donateur
Berichten: 3057
Lid geworden op: 13 feb 2017 00:26
Locatie: Hoensbroek

Re: C# Vraagje

Bericht door hfjbuis »

Arie,

Hier een werkende code die NotePad++ activeert op basis van de process naam en de tekst in de window titel. Ik heb geen eding om te testen.

Code: Selecteer alles

using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Windows.Forms;

namespace ActivateWindow
{
    public partial class Form1 : Form
    {
        //Import the FindWindow API to find our window
        [DllImportAttribute("User32.dll")]
        private static extern int FindWindow(String ClassName, String WindowName);
        //Import the SetForeground API to activate it
        [DllImportAttribute("User32.dll")]
        private static extern IntPtr SetForegroundWindow(int hWnd);

        public Form1()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            Process[] processlist = Process.GetProcesses();
            foreach (Process p in processlist)
            {
                if (p.ProcessName.Contains("note"))
                {
                    int hWnd = FindWindow(null, p.MainWindowTitle);
                    if (hWnd > 0) //If found
                    {
                        SetForegroundWindow(hWnd); //Activate it
                        return;
                    }
                }
            }
        }
    }
}
There are only 2 limits, the sky and your imagination
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13373
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

Re: C# Vraagje

Bericht door Arie Kabaalstra »

Code: Selecteer alles

if (p.ProcessName.Contains("note"))
Damn... dat ik daar zelf niet aan gedacht heb.. :roll:

Eerst even naar het ziekenhuis... de revalidatie arts wil me even spreken.. inmiddels loop ik weer korte stukjes zonder stok.. als ik terug ben gooi ik het weet even in.. thanks
Plaats reactie