Vraag


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben bezig met een vraag en antwoord applicatie waarbij je met behulp van clipboard en een windows notificatie het antwoord op je vraag krijgt.

Dus even een voorbeeldje.

Als je bijvoorbeeld in Google Chrome 1+1 kopieert wanneer het programma geopend is dat je dan een Windows notificatie krijgt met de uitkomst 2.

Nu blijkt dat aardig te lukken maar loop ik tegen een paar problemen aan die ik maar niet opgelost krijgt ook niet met enkele research...

zo wil ik nog deze extra features in me programma die ik op dit moment niet voor elkaar kan krijgen.

PROBLEEM 1:
Zo moet ik om een zin te kopieeren eerst de chrome extensie auto copy downloaden met de optie om te kopieeren als html link. ik zal graag dat in me code willen coderen in plaats van een extensie daarvoor te moeten gebruiken helaas ben ik daar nog niet op verder gekomen.

PROBLEEM 2:
Ook wil ik dat je in plaats van de hele zin te moeten kopieeren dat je ook een deel van de zin kan kopieeren van vragen die bij mij in de questionlist staan en dan alsnog een notifyIcon krijgt met het betreffende antwoord. Dus dat je de optie hebt om vragen geheel te kopieeren en daar output op te krijgen maar ook als je een deel van de zin kopieert.

PROBLEEM 3
NotifyIcon Systeem icoontje blijft in taakbalk, zelfs na het sluiten van het programma, maar verdwijnt als je er met je muis overheen gaat. Nu wil ik dat bij elke vraag die gekopieerd word het systeem icoontje weg gaat wanneer de notificatie weg is.

dit is mijn code ik hoop dat iemand me verder kan helpen.

question.cs
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace it
{
    class question
    {
        public string _question { get; set; }
        public string _answer { get; set; }

        public question(string question, string answer)
        {
            this._question = question;
            this._answer = answer;
        }
    }
}

questions.cs
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
using it;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace test
{
    class questions
    {
        public List<question> Questions { get; set; }
    }
}

form1.cs
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace it
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        //Invoke a clipboard monitor
        [DllImport("User32.dll", CharSet = CharSet.Auto)]
        public static extern IntPtr SetClipboardViewer(IntPtr hWndNewViewer);
        private IntPtr _ClipboardViewerNext;

        //Make some global variables so we can access them somewhere else later
        //This will store all Questions and Answers
        //In here will be the Questions and Answers
        List<question> questionList = new List<question>();
        // Demonstrates SetText, ContainsText, and GetText.

       

        private void Form1_Load(object sender, EventArgs e)
        {
            //Set our application as a clipboard viewer
            _ClipboardViewerNext = SetClipboardViewer(Handle);

            //Add question/answer to list
            //hoofdstuk 3 it
            question newQuestion = new question("wat is de hoofdstad van nederland?", "Amsterdam.*");

        }

        private void GetAnswer(string clipboardText)
        {
            //Loop through all questions and answers
            foreach (question q in questionList)
            {
                //If we have found an answer that is exactly the same show an Notification
                if (q._question == clipboardText)
                {
                    ShowNotification(q._question, q._answer);
                }
            }
        }

        private void ShowNotification(string question, string answer)
        {
            notifyIcon1.Icon = SystemIcons.Exclamation;
            notifyIcon1.BalloonTipTitle = question;
            notifyIcon1.BalloonTipText = answer;
            notifyIcon1.BalloonTipIcon = ToolTipIcon.Error;
            Clipboard.Clear();
        }

        protected override void WndProc(ref Message m)
        {
            base.WndProc(ref m);
            {
                const int WM_DRAWCLIPBOARD = 0x308;
                if (m.Msg == WM_DRAWCLIPBOARD)
                {
                    GetAnswer(Clipboard.GetText());
                }
            }
        }
    }
}

Nu wil ik een soort gelijk programma maken die sommen uit kan rekenen alleen dan zonder dat je de sommen handmatig in een list moet zetten dus met de zelfde reken wijze als een rekenmachine.


Zal iemand me kunnen helpen?
Alvast bedankt!

[ Voor 94% gewijzigd door Verwijderd op 01-03-2019 11:08 ]

Alle reacties


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Begin dan eens met precies aangeven wát er dan niet lukt en laten zien wát je geprobeerd hebt om dat op te lossen. Ik zie hier alleen (voornamelijk) boilerplate code waar weinig tot niks interessants aan te zien is.

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Marber
  • Registratie: Juni 2014
  • Laatst online: 12:31
Breek je vraag eens op in meerdere overzichtelijke blokken:
- data kopieren van clipboard;
- geven van notificatie;
- Maken van berekening.

Probeer de bovenstaande onderdelen seperaat op te lossen, daarna kan je het samenvoegen tot 1 applicatie.

Verwijderd

Topicstarter
Ik ben bezig met een vraag en antwoord applicatie waarbij je met behulp van clipboard en een windows notificatie het antwoord op je vraag krijgt.

Dus even een voorbeeldje.

Als je bijvoorbeeld in Google Chrome 1+1 kopieert wanneer het programma geopend is dat je dan een Windows notificatie krijgt met de uitkomst 2.

Nu blijkt dat aardig te lukken maar loop ik tegen een paar problemen aan die ik maar niet opgelost krijgt ook niet met enkele research...

zo wil ik nog deze extra features in me programma die ik op dit moment niet voor elkaar kan krijgen.

PROBLEEM 1:
Zo moet ik om een zin te kopieeren eerst de chrome extensie auto copy downloaden met de optie om te kopieeren als html link. ik zal graag dat in me code willen coderen in plaats van een extensie daarvoor te moeten gebruiken helaas ben ik daar nog niet op verder gekomen.

PROBLEEM 2:
Ook wil ik dat je in plaats van de hele zin te moeten kopieeren dat je ook een deel van de zin kan kopieeren van vragen die bij mij in de questionlist staan en dan alsnog een notifyIcon krijgt met het betreffende antwoord. Dus dat je de optie hebt om vragen geheel te kopieeren en daar output op te krijgen maar ook als je een deel van de zin kopieert.

PROBLEEM 3
NotifyIcon Systeem icoontje blijft in taakbalk, zelfs na het sluiten van het programma, maar verdwijnt als je er met je muis overheen gaat. Nu wil ik dat bij elke vraag die gekopieerd word het systeem icoontje weg gaat wanneer de notificatie weg is.

dit is mijn code ik hoop dat iemand me verder kan helpen.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace it
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        //Invoke a clipboard monitor
        [DllImport("User32.dll", CharSet = CharSet.Auto)]
        public static extern IntPtr SetClipboardViewer(IntPtr hWndNewViewer);
        private IntPtr _ClipboardViewerNext;

        //Make some global variables so we can access them somewhere else later
        //This will store all Questions and Answers
        //In here will be the Questions and Answers
        List<question> questionList = new List<question>();
        private bool disposing;

        // Demonstrates SetText, ContainsText, and GetText.



        private void Form1_Load(object sender, EventArgs e)
        {
            //Set our application as a clipboard viewer
            _ClipboardViewerNext = SetClipboardViewer(Handle);

            //Add question/answer to list
            question newQuestion = new question("When a computer is being assembled, which action can be taken to help eliminate cable clutter within a computer case?", "Install a modular power supply.*");
            questionList.Add(newQuestion);
            newQuestion = new question("What is the best way to apply thermal compound when reseating a CPU?", "Clean the CPU and the base of the heat sink with isopropyl alcohol before applying the thermal compound.*");
           

        }

        private void GetAnswer(string clipboardText)
        {
            //Loop through all questions and answers
            foreach (question q in questionList)
            {
                //If we have found an answer that is exactly the same show an Notification
                if (q._question == clipboardText)
                {
                    ShowNotification(q._question, q._answer);
                }
            }
        }

        private void ShowNotification(string question, string answer)
        {
            notifyIcon1.Icon = SystemIcons.Exclamation;
            notifyIcon1.BalloonTipTitle = question;
            notifyIcon1.BalloonTipText = answer;
            notifyIcon1.BalloonTipIcon = ToolTipIcon.Error;
            notifyIcon1.ShowBalloonTip(1000);
        }

        protected override void WndProc(ref Message m)
        {
            base.WndProc(ref m);
            {
                const int WM_DRAWCLIPBOARD = 0x308;
                if (m.Msg == WM_DRAWCLIPBOARD)
                {
                    GetAnswer(Clipboard.GetText());
                }
            }
        }
    }
}


Ik heb al veel research gedaan maar heeft me helaas tot nu toe niet verder gebracht.
Alvast bedankt voor de hulp!

[ Voor 114% gewijzigd door Verwijderd op 28-02-2019 19:44 ]


Acties:
  • 0 Henk 'm!

  • alwinuzz
  • Registratie: April 2008
  • Laatst online: 20:46
Hey @Verwijderd , leuk project!

Een beginnetje voor punt 2: je wilt als ik het goed begrijp dat je GetAnswer ook lukt als de ene string een stukje van de andere string bevat? Als je googlet op 'c#' + dat in het Engels, komt het goed :)

Zo'n oefening van je vraag formuleren in een Engelse zin kan je ook doen voor punt 3. Misschien heb je dit al gedaan maar
'veel research gedaan' is wel erg summier. Waar heb je op gezocht en wat heb je gevonden?

Punt 1 snap ik niet goed wat je bedoelt. Werkt het clipboard afvangen anders in Chroom e dan in Kladblok bijvoorbeeld?

[ Voor 72% gewijzigd door alwinuzz op 01-03-2019 02:50 ]


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Waarom een nieuw topic en niet verder in Windows notifyIcon Calculator met behulp van clipboard :?

Edit: ik heb de topics gemerged.

[ Voor 12% gewijzigd door RobIII op 01-03-2019 09:54 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
@alwinuzz Ja ik heb al veel research gedaan op als je een deel van de string kopieert dat je dan ook het antwoord krijgt zo heb ik al gekeken om een StartWith methode te gebruiken maar aangezien ik wel meer dan 400 vragen in me programma heb wil ik een efficiente manier om dat te kunnen aanroepen. Dat heb ik op dit moment nog niet gevonden. En op me eerste probleem ik wil geen notificatie krijgen zonder de autocopy extensie van google chrome. Daarin zet ik de optie aan om altijd te kopieren als html link zonder te formatteren. Zonder die plugin krijg ik geen windows notificatie met het betreffende antwoord. Ik zal graag willen dat het ook zonder extensie zal kunnen werken.

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Probleem 3: wen jezelf aan dat alles dat dat IDisposable implementeert (en dus een Dispose() method heeft) netjes disposed wordt. Dat geldt dus ook voor je notifyicon.

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • alwinuzz
  • Registratie: April 2008
  • Laatst online: 20:46
Verwijderd schreef op vrijdag 1 maart 2019 @ 08:59:
@alwinuzz Ja ik heb al veel research gedaan op als je een deel van de string kopieert dat je dan ook het antwoord krijgt zo heb ik al gekeken om een StartWith methode te gebruiken maar aangezien ik wel meer dan 400 vragen in me programma heb wil ik een efficiente manier om dat te kunnen aanroepen. Dat heb ik op dit moment nog niet gevonden. En op me eerste probleem ik wil geen notificatie krijgen zonder de autocopy extensie van google chrome. Daarin zet ik de optie aan om altijd te kopieren als html link zonder te formatteren. Zonder die plugin krijg ik geen windows notificatie met het betreffende antwoord. Ik zal graag willen dat het ook zonder extensie zal kunnen werken.
StartWith kan werken, of Contains. Je wil iets efficients. Heb je al gemerkt dat de 'inefficiente' versie te langzaam is? Hoe laag duurde het? Volgens mij is 400 vragen geen probleem namelijk.

Edit: wat roblll zegt :) RobIII in "Deel van zin kopieren in plaats van hele zin van een list."

[ Voor 6% gewijzigd door alwinuzz op 03-03-2019 02:20 ]

Pagina: 1